Keyboard issues since upgrading to 23.11

Describe the bug
Various keyboard related things broke:

my custom xkbd layout broke in wayland environments (did not test X11)
the "de" keymap in the tty loaded via loadkeys is missing "öäü".

Steps To Reproduce
testing the "de" keymap in the tty: just execute loadkeys de in a tty window and try to type "öäü".
for my custom keyboard, I have:
  # Configure keymap in X11
  services.xserver.extraLayouts = {
    de-lsgtmod = {
      description = "German (less-than as modifier)";
      languages = [ "de" ];
      # Best documentation seems to be: https://www.charvolant.org/doug/xkb/html/node5.html#SECTION00053000000000000000
      # Also, look at similar keyboard configurations.
      #
      # GNOME wayland is currently bugged. For layers >= 5 to work, it is
      # necessary to have the layout in the **first position**.
      # See also: https://gitlab.gnome.org/GNOME/mutter/-/issues/790
      symbolsFile = pkgs.writeText "de-lsgtmod" ''
        partial alphanumeric_keys modifier_keys keypad_keys
        xkb_symbols "de-lsgtmod" {
            include "latin(type4)"
            name[Group1]="German (less-than as modifier)";
            key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
            key <TLDE>  { [dead_circumflex, degree,	U2032,    U2033	] };
            key <AE02>  { [         2,   quotedbl,  twosuperior,    oneeighth ]	};
            key <AE03>  { [         3,    section, threesuperior,    sterling ]	};
            key <AE04>  { [         4,     dollar,   onequarter,     currency ]	};
            key <AE07>  { [         7,      slash,    braceleft, seveneighths, backslash ]	};
            key <AE08>  { [         8,  parenleft,  bracketleft,    trademark, bracketleft ]	};
            key <AE09>  { [         9, parenright, bracketright,    plusminus, bracketright ]	};
            key <AE11>  {type[Group1]="FOUR_LEVEL_PLUS_LOCK",  symbols[Group1]=[ssharp, question, backslash, questiondown, 0x1001E9E ]};
            key <AE12>  { [dead_acute, dead_grave, dead_cedilla,  dead_ogonek ]	};
            key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
            key <AD03>  { [         e,          E,     EuroSign,     EuroSign ]	};
            key <AD06>  { [         z,          Z,    leftarrow,          yen ]	};
            key <AD07>  { [         u,          U,    downarrow,      uparrow, less ]	};
            key <AD08>  { [         i,          I,   rightarrow,     idotless, greater ]	};
            key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
            key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
            key <AD12>{ [      plus,   asterisk,   asciitilde,  macron ]	};
            key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
            key <AC02>  { [         s,          S,                U017F,     U1E9E    ] };
            key <AC06>  { [         h,          H,      hstroke,      Hstroke, bar ]	};
            key <AC07>  { [         j,          J,        dead_belowdot, dead_abovedot, braceleft ] };
            key <AC08>  { [         k,          K,          kra,    ampersand, braceright ]	};
            key <AC09>  { [         l,          L,      lstroke,      Lstroke, at ]	};
            key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
            key <AC10>{ [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
            key <AC11>{ [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
            key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
            key <AB01>  { [         y,          Y,       guillemotright,    U203A 	] };
            key <AB02>  { [         x,          X,        guillemotleft,    U2039 	] };
            key <AB04>  { [         v,          V,   doublelowquotemark, singlelowquotemark ]	};
            key <AB05>  { [         b,          B,  leftdoublequotemark, leftsinglequotemark ] };
            key <AB06>  { [         n,          N, rightdoublequotemark, rightsinglequotemark, asciitilde ]	};
            key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
            key <AB08>  { [     comma,  semicolon,       periodcentered,     multiply	] };
            key <AB09>  { [    period,      colon,                U2026,     division 	] };
            key <AB10>  { [     minus, underscore,               endash,     emdash	] };
            key <BKSL>  { [numbersign, apostrophe, rightsinglequotemark,   dead_breve ]	};
            include "kpdl(comma)"
            include "level3(ralt_switch)"
            include "level5(lsgt_switch)"
        };
      '';
    };
  };

  # Use my layout
  services.xserver.layout = "de-lsgtmod"; # will make this the default in KDE Plasma.

Expected behavior
the "de" keymap should have the öäü letters.
my custom keyboard should make the "<" key on a german keyboard a modifier key such that "<"+"jkui78" will type "{}<>[]".
Screenshots
n/a
Additional context
issues all occurred after upgrading to 23.11. I tried to figure out if anyone on the internet has similar issues, but I did not really find anything.
This may be an issue that is not NixOs specific.
The waylands I used where my custom keyboard map is broken are: KDE and LabWC
Notify maintainers

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
output here

system: "x86_64-linux"
host os: Linux 6.6.3, NixOS, 23.11 (Tapir), 23.11.1115.5de0b32be6e8
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.18.1
channels(root): "nixos-23.11"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Add a :+1: reaction to issues you find important.

Might be related to https://github.com/NixOS/nixpkgs/pull/259891 and https://github.com/NixOS/nixpkgs/pull/264787, I'll try to investigate.
Could you check if using services.xserver.xkb.extraLayouts instead works?

The options were moved in the previously mentioned PRs. Using the old options should throw a warning. However, I don't get a warning when using them on unstable (e92039b55bcd58469325ded85d4f58dd5a4eaf58). I've checked out the commit where this was introduced, and it doesn't throw a warning their either.
I'm not sure how I can debug this. Any ideas @l0b0 @rnhmjoj?

Thanks a lot!
Will try the x.xkb.x out later.

No, I doubt it's related to #259891 or #264787: those are just renaming the XKB options.
The keymap.custom, which is using X.org is passing, so it's likely a bug or breaking change in GNOME.
GNOME breaking the xkb configuration does not really surprise me.

@rnhmjoj But what about the warnings?

hm weird.
changing it to "x.xkb.x" does not seem to change anything.
I also do not see any kind of warning using it the old way.
My custom keyboard layout is also broken in a very weird way:
Basically the modifier key doesn't work, and a lot of the keys no longer have any upper-case; instead it will always type the lower case.
For the other issue of the console keymaps console.keyMap = "de" being broken (it is missing "öäü" and instead printing the "[ ]..."), should I open a separate issue?

No, I doubt it's related to #259891 or #264787: those are just renaming the XKB options.
The keymap.custom test, which is using X.org, is passing, so it's likely a bug or breaking change in GNOME.
GNOME breaking the XKB configuration does not really surprise me.

I had this behavior on KDE wayland and labwc (wayland). (I initially thought it was a KDE bug and switched to a different desktop, I wanted to switch to in any case.)
The comment you can see in my config, is just a comment that is left from a past configuration, when I used Gnome.

Have you tried reloading your gsettings? I remember that helped me in the past with custom keymaps:
gsettings reset org.gnome.desktop.input-sources xkb-options
gsettings reset org.gnome.desktop.input-sources sources

And lock out and back in again.

I just tried updating a different NixOS install. (that install was basically completely fresh).
With 23.05 the keybinding worked perfectly, and after upgrading, I saw the same issue.
Rolling back to 23.05 again, and the keybinding works perfectly again.
That machine is running KDE Plasma Wayland.
So I do think everyone can reproduce the issue:
If you run KDE wayland, and never changed your keyboard config in the settings menu, you can just paste in my config. The xserver keymap is used by default on KDE Plasma Wayland.
It's intended for a german keyboard layout, and if you press "<", the keys "jkui78" should print"{}<>[]".

I can also confirm that the keybinding is also broken in KDE X11. However, it is broken in a slightly different way. (In X11 the capitalization of  all the letters still work)
So I would guess that it is probably a regression upstream. Maybe xkb is somehow broken?

Jup. Upstream broke the compatibility of the keyboard layout. :(
https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/508
The fix was to replace
EIGHT_LEVEL_LEVEL_FIVE_LOCK with
EIGHT_LEVEL_WITH_LEVEL5_LOCK
and
EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK with
EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK.
And then restart linux. (just restarting the desktop did not work for me)
I will open a different issue for the wrong "de" (german) keymap in the tty.


Request to be added in admins

Request to be added in admins in order to be able to trigger RhChe builds

[test]


oak d pro build in IMU

Hello , i have also the oak d pro and i am trying to do the kalibr calibration with imu , i have successfully run vins only with the stereo cameras but i am struggling with the imu calibration .My question is about the orientation of the imu and if in your case did you had to make a conversion of IMU data (accelerometer , gyroscope) to match the cameras orientation . I have found this from OAK link .

@jimakos96
Hi. Did you check this file and this branch of my repository?
https://github.com/engcang/vins-application/blob/OAK-D/vins_config/config.yaml
https://github.com/engcang/vins-application/tree/OAK-D

Hi i have seen your configuration files , my issue is before the calibration process on the way you are getting the accelerometer and gyroscope values from the IMU and publishing them to the imu ros topic.
So for the orientation  of the imu according to the oak description link , should be the following way
`           imu_msg = Imu()
imu_msg.header.stamp = rospy.Time.now()
imu_msg.header.frame_id = "BNO086"
        imu_msg.linear_acceleration.x = acceleroValues.y
        imu_msg.linear_acceleration.y = (-1)*acceleroValues.x
        imu_msg.linear_acceleration.z = (-1)*acceleroValues.z

        imu_msg.angular_velocity.x = gyroValues.y
        imu_msg.angular_velocity.y = (-1)* gyroValues.x
        imu_msg.angular_velocity.z =(-1)* gyroValues.z
        imu_pub.publish(imu_msg)`

Did you face this kind of issue in your setup ?

@jimakos96
Hi.
I am using my custom OAKD-ROS package as here - https://github.com/engcang/oakd-ros-simple
For the IMU part, refer to these lines - https://github.com/engcang/oakd-ros-simple/blob/main/src/main_ros.cpp#L60-L77

Hi again , i want to ask if you encounter any issue  that had to do with the orientation of the imu  and if you had to to any conversion to the accel and gyro data before you publish them  or in your case everything worked with vins  without doing any conversion?

@jimakos96
I think you are asking same question and I already answered that.
I used my custom ROS package and for the IMU part, please read the code to understand how I used the IMU data from OAK-D sensor: https://github.com/engcang/oakd-ros-simple/blob/main/src/main_ros.cpp#L60-L77
With this package,  IMU and image topics, I ran VINS without any problem.

Hello again ,Can i ask you why in the main_ros.cpp  you mentioned above you are using sleep(1000)  for the imu and sleep(2000) for the stereo_ir  . I am using rosrate(my_frequency)  and rosrate_sleep() to set the wanted publish frequency .

@jimakos96 You should open the issue at the package, not here.
If you want, you can change the sleep duration as you wanted. IMU has much faster sampling rate and hence I just set shorter duration.


Upgrade from 0.9.1 to 0.9.3 requires devices to re-register with Azure Notification Hubs

Report

[x] I have searched existing issues and this is not a duplicate.

Environment

Platforms: Android

Android version: Android 8 and Android 10

Issues and Steps to Reproduce

Register device with push notifications and version 0.9.1
Send push notifications to device with registered tag
Update package to 0.9.3 and make necessary changes to AndroidManifest.xml and build.gradle
Run ./gradlew clean
Send push notification to tag registered with version 0.9.1
Application crashes

Note after re-registering with tags push notifications work as normal
Expected Behavior
App should be able to use existing tag registrations with new package
Actual Behavior
App crashes when push notification received until tags are re-registered
Android Logs
I think the error corresponding to this is this part however all logs are attached:
--------- beginning of crash
02-22 09:29:58.324 11850 11850 E AndroidRuntime: FATAL EXCEPTION: main
02-22 09:29:58.324 11850 11850 E AndroidRuntime: Process: com.XXXXXXX.mobiledev, PID: 11850
02-22 09:29:58.324 11850 11850 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate receiver com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver: java.lang.ClassNotFoundException: Didn't find class "com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/base.apk"],nativeLibraryDirectories=[/data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/lib/x86, /data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/base.apk!/lib/x86, /system/lib, /system/product/lib]]
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:3774)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.ActivityThread.access$1400(ActivityThread.java:219)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7356)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/base.apk"],nativeLibraryDirectories=[/data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/lib/x86, /data/app/com.XXXXXXX.mobiledev-MtI2itLaNYncL2q8iAi2_A==/base.apk!/lib/x86, /system/lib, /system/product/lib]]
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.AppComponentFactory.instantiateReceiver(AppComponentFactory.java:110)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at androidx.core.app.CoreComponentFactory.instantiateReceiver(CoreComponentFactory.java:60)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:3767)
02-22 09:29:58.324 11850 11850 E AndroidRuntime: 	... 8 more
02-22 09:29:58.401  2099 12034 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
02-22 09:29:58.415  2099  3087 W ActivityTaskManager:   Force finishing activity com.XXXXXXX.mobiledev/.MainActivity
02-22 09:29:58.417  2099  3087 W InputReader: Device has associated, but no associated display id.
02-22 09:29:58.445  2099  2138 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
02-22 09:29:58.449  2099  2138 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
02-22 09:29:58.418  2099  3087 I chatty  : uid=1000(system) Binder:2099_A identical 8 lines
02-22 09:29:58.418  2099  3087 W InputReader: Device has associated, but no associated display id.
02-22 09:29:58.449  2293  2293 W GCM     : broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.XXXXXXX.mobiledev (has extras) }
02-22 09:29:58.452 11850 11850 I Process : Sending signal. PID: 11850 SIG: 9
02-22 09:29:58.511  2099  2229 W InputDispatcher: channel 'fafb745 com.XXXXXXX.mobiledev/com.XXXXXXX.mobiledev.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
02-22 09:29:58.511  2099  2229 E InputDispatcher: channel 'fafb745 com.XXXXXXX.mobiledev/com.XXXXXXX.mobiledev.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

logCat.txt
Looking at the error I think this might be related to the configuration change around removing the following in the Android Manifest without re-registering with Azure Notification Hubs:
      <receiver
        android:name="com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
      </receiver>

@jbenzshawel Do you think that this issue is a blocker that prevents your app from using v0.9.3?

Due to having push notifications stabilized with v0.9.1 we opted to stay at v0.9.1 for the time being. Having the app crash after receiving the first new push notification with v0.9.3 is not a risk we want to take at the moment.

That makes total sense. I'll see what we can do with this issue.

@jbenzshawel I spent some time today trying to reproduce this issue but didn't succeed. Between step 4 & 5, I assume that you must have rebuilt the apk file and re-install it on your device correct?
4. Run "./gradlew clean"
   Run "./gradlew assembleDebug"
   CD into "build\outputs\apk\debug" and run "adb install app-debug.apk"
5. Send push notification to tag registered with version 0.9.1

Interesting. Here are some more detailed steps:

Install Android version 0.9.1 and follow README Android configuration steps for this version: https://github.com/CatalystCode/react-native-azurenotificationhub/tree/ca88e24d02cea630ffd90f3cb96e506146d41d24#android-installation
Build app and run the app using the react-native CLI on an Android device or emulator:

react-native run-android

Register application for push notifications, tags, and received event listeners:

PushNotificationEmitter.addListener(DEVICE_NOTIF_EVENT, this._onRemoteNotification);

NotificationHub.register({connectionString, hubName, senderID, tags})
      .catch(reason => console.warn(reason));

Send push notification to tag registered and verify notifications are received on the device/emulator
Change package.json react-native-azurenotificationhub from 0.9.1 to 0.9.3 and run yarn install
Update the configuration according to the updated Android config for 0.9.3 changing the Android.Manifest.xml, /android/build.gradle, and /android/app/build.gradle files
Run ./gradlew clean
Run the app on an emulator or device that had the previous version that was using version 0.9.1 installed

react-native run-android

Push a notification to a previously registered tag
App crashes when onRemoteNotification event fires

I have installed 0.9.4 version and when i am sending Test message from Portal App crashes when onRemoteNotification event fires


[Addition]: Spoofing by multiple hotspots linked to two wallets

Hotspot b58 Addresses
113kpDm9kLvzBDBtMuBHj7AXQdHqDvz9Q7VZ8Mp3hQsgm3h7atD
112dT7RTNZv8MxkbYH8bCrxsmcYT3Hhbv9URXmqJ9i8MHsydRmy4
112UPk91vdJ5unsBXC1ipLQj4U7KnkhRKwZkJQYnkysg4vhgS6Sm
113SKZq9xMD37zfmeQwAaGqzbxZhoSQdeUaSNbk5Kc7H4dXH3EA
112hFFZsyv98muWokRzF3bDi7Ly4jWQB6F2ufjcrLr6z1KPjyx1G
11pMa4jDYER7mQZaqXnCkPatpFsNCiErYV12oyspHfUqAd7AnCT
Discord Handle
Alankar#3404
Reason(s)
Multiple devices linked to the following two wallets have conclusive evidences of gaming:
13km5Vkpke1cE5QdbGE8pLFJNDaBh7f12hLzvtULB2EdNAQXzJf
14EdT7PDdJvkRiQ4C3ANZTL9CCbhh6qapUVGjfsryHy8y3dxmq7
These two wallets are most likely owned by the same gaming individual/group as the past activity of both show regular HNT transfers to another wallet (13UoVTu59pLJBcEvBDWpqmaw1KTeB5pS6cwKuhfnxXk8p6VfrYp).
Evidences of gaming:

These hotspots exclusively witness hotspots linked to the same wallet (addresses mentioned above).
Location asserted by these hotspots are too regularly placed indicating probable use of attenuator or other gaming measures to spoof their location.
Other 'legit' hotspots in the region with similar height and antenna properties can witness each other but not these gaming devices.
The PoC transaction (one instance among many)  O-XmLmw8pjk2nxq_YCB6jHpBh5Y5UES6nMH9mBl3wSo show that one witness was invalid because of high RSSI (witness_rssi_too_high). Witness was a device linked to these gaming wallets. All these indicate that the actual physical location of the device is different from the one asserted in blockchain.
Being a local, I personally visited multiple of these locations physically and there are no buildings/other structures with the reported height in the region.
One new legit device belonging to a different wallet was added to the hex of one of these gaming devices and within just a few hours the gaming device changed its asserted location to a new immediate neighbouring hex.

From my investigation, I concluded that all the 10 devices linked to the 2 wallets are physically in the same hex probably the hex of this device 112H3s5YHyUoVC6q5j3FdHAGs8nKwwhJ61vstEPfmUb2ytqV4wMD (linked to the gaming wallet but this particular hotspot seems legit from its PoC activity). Therefore, it's safe to conclude that these gaming hotspot locations are faked to different nearby hexes and by some means the gamer is altering the received radio signal to trick the PoC. These devices need to be put on denylist because of their undeniable evidences of gaming activity. This would also be beneficial for the legit hotspots which are growing in number in the region.

Doing a 5 witness iteration in the cluster tool starting at Elegant Mahogany Mustang shows it does connect as part of a 36 HS network:

It's possible these 36 are not where they are asserted though. Would be interesting to check whether any of below are local ones you are confident are legit, as this would prove the network is at least roughly in the right place and not just in a shed 1,000 km away.
36 HS:
112dT7RTNZv8MxkbYH8bCrxsmcYT3Hhbv9URXmqJ9i8MHsydRmy4
11PMh42sP615y3qiRTL7QckHtxwT4XHNvGjP1ZjPw8hDnC9ax6x
112Upt6hTfCedj4v9FHqce36DNA5V1wokwpLxqeRxLcVYoRL8bhy
113SKZq9xMD37zfmeQwAaGqzbxZhoSQdeUaSNbk5Kc7H4dXH3EA
112SCTswGzbTzMbvfYKAu6ZWMfofUGSQ4AZBPudNmH9YPrt1XXbr
11pMa4jDYER7mQZaqXnCkPatpFsNCiErYV12oyspHfUqAd7AnCT
112H3s5YHyUoVC6q5j3FdHAGs8nKwwhJ61vstEPfmUb2ytqV4wMD
112eRxKEr8iLqfEgjcG1yzUBLgCuP1emrcDEcu9YLYLbQBJY6ETE
11hRKrPgtc41xpGA7oaWQuqFWoFRrccMnhPE15TXj88ZL4QE2rS
1122f9aYUcCVEN1E5sYPC3fdNhx92ddSeiASRY67x7MyVuQaMxL4
11Q5L18gnquQXS4LBe6HQ5Wga6NTUVx5npiATzt8MDDWAUeS33J
1122yhn9h8ip4Za7yAPs1aVngLCjkT43sALnWxtcWp4rgYPqT8PJ
11tRd4KpmMQzGnKnewxgedgKtt2tgyKq17WajkSjUPna8vQWXew
113kpDm9kLvzBDBtMuBHj7AXQdHqDvz9Q7VZ8Mp3hQsgm3h7atD
11ANrVCaS8yMt9YDoMVx3PXKK4JQtY6rbkgSkBWPdSj4zRyyBoj
112hFFZsyv98muWokRzF3bDi7Ly4jWQB6F2ufjcrLr6z1KPjyx1G
112YKQzJVTCfzT7gUnnrA4ntifqVptmLcCCY5Jqrzwp8EmiBJ6sY
112UPk91vdJ5unsBXC1ipLQj4U7KnkhRKwZkJQYnkysg4vhgS6Sm
112aQdXFB6cydHKss5vxw5v1wbzu5xJH2pFwMFFVM9QHJMXscrpA
112ZRtn2we7dTUFSub73UCM9bWUnphaDhASTsCGwk3ZxzhM3B7sz
112gchmDvcrco3HXqMzsBLWrHUUGkoF383t5izMXoW3V74Y8vfhp
11MEHdcAEHDEGPgr1uG2RBVBHrT9WFgHH9QHfufYj2v7RfB5RVY
11y2TEqqrWeWkMZ1duu1kQPcSEydGE1aDDjejshg3pC8NTcs7Ek
11NMaSDYN47C1fFD1oc88JSJefS1XsvkBcSUfNKWoZ4rRhvR14s
112rtMojQNPfzzCuYmz3VkUcuiNHBsVHpXESEm2jowRS2DPW13PW
112J2prC1dKGajQhXtd5io1jg1obJxWdn6c43hWQ4bzdZ8dkfvpn
112eAHfXzaRqPQdn9tJFXCwJnyWt8B3x53zMm4trcQAfmS1JsN1m
112UANkpvRPpwgmsgHuzXwc6mj6Fw9G64cD5weeGXLe6BTMYjJsM
112WPPKGuvc9PLuM6kLJzuGxXbdvMAQcKzHLbni3zEbYrF5VPwwM
112CZ6WKmyCnfvc9StUHHV8jLfGiMcHKcmHBf7VRZgL99ZKxAaGq
11urZWdABTAa1QAHUmtNC3ahQaBFze5UpwvnfJSeEFk5tiLPkEs
11camfAVwqS1ZWCZTvXy4EE31fdFSMuct5Prhh1d4FR9sqnhuoo
11qaNoTi2pAUJYYj4H1HLHvP5YGxRBjtz3CETrjp2t42MkfG4n1
112jnGWH9EHWvT6MeTmx3dSaNbryZsSS5yfuKt4H9WFJ1AmpFqvw
112hU9wyz3Pe1YkTMvYTuAE4i94jH93xFzAMXnr9RtvDQcVhsoE3
11b7bGHNKC7wFqAWW7p5aiQjNg2KnfQYwBnwFUj8KdkUEoVHYgg

Out of these 36 hotspots in the city most of them seem legit. But specifically the two wallets that I have mentioned having 10 hotspots (5 each) are having gaming devices. Most of the hotspots among the 10 are definitely gaming. Except for a few (1 or 2) out of these 10, all are only witnessing each other and not hotspots that are linked to other wallets. While other hotspots in the same region with similar height and antenna properties are witnessing each other with ease. Also the location asserted for a few of these gaming hotspots report height parameters which doesn't seem real. Being a local, I personally visited these areas but could not find any building or structure with the asserted height. I have also contacted a few legit hotspot owners in the city via Discord/Telegram and they also expressed similar suspicion and concern regarding these gaming hotspots.
Following is the list of hotspots which seem to have their location properly asserted.  Out of these, some hotspots definitely know of (I have pictures of some either taken by myself or shared by owners) to be present in the region and properly installed.
112eRxKEr8iLqfEgjcG1yzUBLgCuP1emrcDEcu9YLYLbQBJY6ETE
11hRKrPgtc41xpGA7oaWQuqFWoFRrccMnhPE15TXj88ZL4QE2rS
1122f9aYUcCVEN1E5sYPC3fdNhx92ddSeiASRY67x7MyVuQaMxL4
11Q5L18gnquQXS4LBe6HQ5Wga6NTUVx5npiATzt8MDDWAUeS33J
1122yhn9h8ip4Za7yAPs1aVngLCjkT43sALnWxtcWp4rgYPqT8PJ
11tRd4KpmMQzGnKnewxgedgKtt2tgyKq17WajkSjUPna8vQWXew
11ANrVCaS8yMt9YDoMVx3PXKK4JQtY6rbkgSkBWPdSj4zRyyBoj
112YKQzJVTCfzT7gUnnrA4ntifqVptmLcCCY5Jqrzwp8EmiBJ6sY
112aQdXFB6cydHKss5vxw5v1wbzu5xJH2pFwMFFVM9QHJMXscrpA
112ZRtn2we7dTUFSub73UCM9bWUnphaDhASTsCGwk3ZxzhM3B7sz
11MEHdcAEHDEGPgr1uG2RBVBHrT9WFgHH9QHfufYj2v7RfB5RVY
11y2TEqqrWeWkMZ1duu1kQPcSEydGE1aDDjejshg3pC8NTcs7Ek
11NMaSDYN47C1fFD1oc88JSJefS1XsvkBcSUfNKWoZ4rRhvR14s
112J2prC1dKGajQhXtd5io1jg1obJxWdn6c43hWQ4bzdZ8dkfvpn
112eAHfXzaRqPQdn9tJFXCwJnyWt8B3x53zMm4trcQAfmS1JsN1m
112UANkpvRPpwgmsgHuzXwc6mj6Fw9G64cD5weeGXLe6BTMYjJsM
112WPPKGuvc9PLuM6kLJzuGxXbdvMAQcKzHLbni3zEbYrF5VPwwM
112CZ6WKmyCnfvc9StUHHV8jLfGiMcHKcmHBf7VRZgL99ZKxAaGq
11urZWdABTAa1QAHUmtNC3ahQaBFze5UpwvnfJSeEFk5tiLPkEs
112jnGWH9EHWvT6MeTmx3dSaNbryZsSS5yfuKt4H9WFJ1AmpFqvw
11b7bGHNKC7wFqAWW7p5aiQjNg2KnfQYwBnwFUj8KdkUEoVHYgg

@abhay Please do something about these hotspots. Please don't ignore these reports. They are spoofing for over months now. This is extremely unfair to the legit hotspot owners out there spending time, effort and money on their setups.


feat: Upgrade iOS dependencies

This should fix #2896

Codecov Report

Merging #2903 (ce51609) into develop (f90e9f8) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           develop   #2903   +/-   ##
=======================================
  Coverage     6.69%   6.69%
=======================================
  Files          220     220
  Lines        11140   11140
=======================================
  Hits           746     746
  Misses       10394   10394

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Terminal chat cmd/alt+enter doesn't work on mac

cmd/alt+enter doesn't work in this state on mac:

cmd+enter:
2024-11-04 05:11:44.840 [info] [KeybindingService]: / Soft dispatching keyboard event
2024-11-04 05:11:44.841 [info] [KeybindingService]: \ Keyboard event cannot be dispatched
2024-11-04 05:11:44.841 [info] [KeybindingService]: / Received  keydown event - modifiers: [meta], code: MetaLeft, keyCode: 91, key: Meta
2024-11-04 05:11:44.841 [info] [KeybindingService]: | Converted keydown event - modifiers: [meta], code: MetaLeft, keyCode: 57 ('Meta')
2024-11-04 05:11:44.841 [info] [KeybindingService]: \ Keyboard event cannot be dispatched in keydown phase.
2024-11-04 05:11:44.962 [info] [KeybindingService]: / Soft dispatching keyboard event
2024-11-04 05:11:44.962 [info] [KeybindingService]: | Resolving meta+[Enter]
2024-11-04 05:11:44.963 [info] [KeybindingService]: \ From 23 keybinding entries, no when clauses matched the context.
2024-11-04 05:11:44.977 [info] [KeybindingService]: / Received  keydown event - modifiers: [meta], code: Enter, keyCode: 13, key: Enter
2024-11-04 05:11:44.977 [info] [KeybindingService]: | Converted keydown event - modifiers: [meta], code: Enter, keyCode: 3 ('Enter')
2024-11-04 05:11:44.978 [info] [KeybindingService]: | Resolving meta+[Enter]
2024-11-04 05:11:44.978 [info] [KeybindingService]: \ From 23 keybinding entries, no when clauses matched the context.
2024-11-04 05:11:45.180 [info] [KeybindingService]: + Storing single modifier for possible chord meta.
2024-11-04 05:11:45.482 [info] [KeybindingService]: + Clearing single modifier due to 300ms elapsed.

alt+enter:
2024-11-04 05:12:01.051 [info] [KeybindingService]: / Soft dispatching keyboard event
2024-11-04 05:12:01.051 [info] [KeybindingService]: \ Keyboard event cannot be dispatched
2024-11-04 05:12:01.052 [info] [KeybindingService]: / Received  keydown event - modifiers: [alt], code: AltLeft, keyCode: 18, key: Alt
2024-11-04 05:12:01.052 [info] [KeybindingService]: | Converted keydown event - modifiers: [alt], code: AltLeft, keyCode: 6 ('Alt')
2024-11-04 05:12:01.052 [info] [KeybindingService]: \ Keyboard event cannot be dispatched in keydown phase.
2024-11-04 05:12:01.156 [info] [KeybindingService]: / Soft dispatching keyboard event
2024-11-04 05:12:01.170 [info] [KeybindingService]: | Resolving alt+[Enter]
2024-11-04 05:12:01.170 [info] [KeybindingService]: \ From 8 keybinding entries, no when clauses matched the context.
2024-11-04 05:12:01.170 [info] [KeybindingService]: / Received  keydown event - modifiers: [alt], code: Enter, keyCode: 13, key: Enter
2024-11-04 05:12:01.170 [info] [KeybindingService]: | Converted keydown event - modifiers: [alt], code: Enter, keyCode: 3 ('Enter')
2024-11-04 05:12:01.170 [info] [KeybindingService]: | Resolving alt+[Enter]
2024-11-04 05:12:01.170 [info] [KeybindingService]: \ From 8 keybinding entries, no when clauses matched the context.
2024-11-04 05:12:01.358 [info] [KeybindingService]: + Ignoring single modifier alt due to it being pressed together with other keys.

We're not returning the right object here anymore, it's calling ChatWidget.acceptInput
https://github.com/microsoft/vscode/blob/e37672f7d7a7e55064cad4d0b11e88f8d92ba7ac/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts#L70-L72
Probably caused by https://github.com/microsoft/vscode/pull/232278 cc @meganrogge

@meganrogge could you check this one out as you have more context?
This is not being called which is causing the codeblock context keys never to get set:
https://github.com/microsoft/vscode/blob/e37672f7d7a7e55064cad4d0b11e88f8d92ba7ac/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.ts#L363
Should we be listening to this._inlineChatWidget.chatWidget.onDidAcceptInput as the hook maybe?

I don't see our execute actions anymore - Run and Insert

I've started looking into this as part of https://github.com/microsoft/vscode/issues/233308


ouser.cpm was not found

OrientDB Version, operating system, or hardware.

v2.2.14

Operating System

[X ] Linux

Expected behavior and actual behavior
Our application is multitenant and has one orient database per internal "instance". After starting the application, we may "shutdown" an instance to perform maintenance (all the while, the JVM stays running). The internal shutdown procedure involves calls OrientGraphFactory.close(). Theoretically, the database should be closed. However, if we then decide to delete the  files pertaining to that instance from disk and then startup the instance (i.e. new OrientGraphFactory) then, we get an error stating that ouser.cpm was not found.  How can this come about? Could it be that the shared cache is not being cleared correctly of the instance's data after the database is closed?
2017-01-13 17:59:24 t.c.s.a.d.DatabaseService [ERROR] failed to connect to database:File /var/opt/mailarchiva/true/database/archiva/true/ouser.cpm was not found
com.orientechnologies.common.io.OIOException: File /var/opt/mailarchiva/true/database/archiva/true/ouser.cpm was not found
        at com.orientechnologies.orient.core.storage.fs.OFileClassic.open(OFileClassic.java:581)
        at com.orientechnologies.common.collection.closabledictionary.OClosableEntry.makeAcquiredFromClosed(OClosableEntry.java:98)
        at com.orientechnologies.common.collection.closabledictionary.OClosableLinkedContainer.acquire(OClosableLinkedContainer.java
:272)
        at com.orientechnologies.orient.core.storage.cache.local.OWOWCache.getFilledUpTo(OWOWCache.java:731)
        at com.orientechnologies.orient.core.storage.impl.local.paginated.base.ODurableComponent.getFilledUpTo(ODurableComponent.jav
a:135)
        at com.orientechnologies.orient.core.storage.impl.local.paginated.OClusterPositionMap.getFirstPosition(OClusterPositionMap.j
ava:653)
        at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.getFirstPosition(OPaginatedCluster.java:
1423)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.getClusterDataRange(OAbstractPaginatedStor
age.java:791)
        at com.orientechnologies.orient.core.iterator.ORecordIteratorClusters.updateClusterRange(ORecordIteratorClusters.java:408)
        at com.orientechnologies.orient.core.iterator.ORecordIteratorClass.config(ORecordIteratorClass.java:139)
        at com.orientechnologies.orient.core.iterator.ORecordIteratorClass.<init>(ORecordIteratorClass.java:90)
        at com.orientechnologies.orient.core.iterator.ORecordIteratorClass.<init>(ORecordIteratorClass.java:68)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.searchInClasses(OCommandExecutorSQLResultsetAb
stract.java:479)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.searchInClasses(OCommandExecutorSQLResultsetAb
stract.java:468)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.searchInClasses(OCommandExecutorSQLSelect.java:1004)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.assignTarget(OCommandExecutorSQLResultsetAbstr
act.java:209)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.assignTarget(OCommandExecutorSQLSelect.java:530)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.executeSearch(OCommandExecutorSQLSelect.java:512)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.execute(OCommandExecutorSQLSelect.java:488)

To add to this, on Linux, if I shutdown an OrientGraphFactory..
databaseUtils.getGraphFactory().getDatabase().close();
databaseUtils.getGraphFactory().close();

Then try to connect to the database from the Orient console... it says Error: com.orientechnologies.orient.core.exception.OStorageException: Can not open storage it is acquired by other process. Surely if I've shut the database down, I should be able to use it again? I've double checked all OrientGraph objects, and they are all being closed.
Connecting to database [plocal:/var/opt/mailarchiva/open/database/archiva/open] with user 'admin'...
Error: com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage '/var/opt/mailarchiva/open/database/archiva/open' with mode=rw
DB name="open"

"Theoretically, the database should be closed." That is not true,  database (in your terminology) is open till JVM is running when you make. OrientGraphFactory.close() closes only connection to database.  If you close connection storage still will be open. But storage itself you as you call database still is open.  "shared cache is not being cleared correctly" it is not cleared if a database is still open. To close a database, you should call following commands:

storage = database.getStorage
database.close
storage.close(true, false)

The database is the only connection to the storage, but not storage itself.
P.S. If you do maintenance with files which you think are closed, obviously your data will be broken and will be lost.

I close the issue as invalid. But if you repeat those steps and bug will be reproduced, please feel free to reopen it.

P.S. Also if you make backups or move/copy files when JVM is running but storage is not closed move data will be broken on 100%.


How to open a screen without the Nav bar.

How do you navigate to a page without a nav bar. From a screen/widget which has nav bar. Is this possible?
When I try to open a new screen it always open in the nav bar.

Assumption: You are using a navigator widget as part of your page widget tree. When you push a something, you are pushing to this navigator. This results in bottom bar staying visible.
Reminder: MaterialApp widget contains a navigator widget. (For detailed info, check out MaterialApp's documentation.)
What you want to do is to push to the root navigator provided by the Material app, not to the one you created yourself.
Solution: Check out this SO post https://stackoverflow.com/questions/55213680/in-a-nested-navigator-structure-of-flutter-how-do-you-get-the-a-specific-naviga
Kindly, tell me the results after you try this. Have a good day.


Update git SCL's available

add rh-git218
remove git19 (no longer maintained)
remove rh-git29 (no longer maintained)
We are only removing these from documentation for now (not necessarily removing them from dev servers).

Thanks @billglick! I fixed a minor build error here (just a typo) and merged it on #392.


48 create and implement talkstep abstract class

Note-worthy changes:

implemented all the public methods in the abstract class
getMaxScore() and getScoreAccumulator() is for the StepManager to calculate the confidence scre
setScoreAccumulator is for assignment to the variable at the end of an analysis

Note:

calculateResponseTime uses LocalDateTime obejcts for time stamps to match with Speech's speech.timestamp object, which is also a LocalDateTime object
there is no setMaxScore() because the maxScore is a pre-defined final constant for every Step entity.

The documentation for the countMatchKeywords method should be changed. It is currently the same as the calculateResponseTime method.

committed files otehr than TalkStep that I don't want onto the PR. I will close this and open a new one with the right files I want merged the to main branch


Event dot not showing in kotlin

Hmm... It works for me.
import com.github.sundeepk.compactcalendarview.domain.Event
[...]
val date = Date()
val event = Event(Color.WHITE, date.time) // needed: millisec
compact_calendar_view.addEvent(event)


Error: $compile:tpload Error Loading Template

Hello,
I try this :
<uib-timepicker ng-model="news.publishedDate" hour-step="1" minute-step="15" show-meridian="ismeridian"></uib-timepicker>

And I have this error:
Failed to load template: uib/template/timepicker/timepicker.html (HTTP status: 404 Not Found)

I have build with this CDN :
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.1.0/ui-bootstrap-tpls.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.1.0/ui-bootstrap.min.js"></script>

Any Idea ?

You should not be using both - the error is because the second script does not include the templates.


Refactor preview: element should expand on click anywhere

Refactor preview tree: element should expand wherever I click on it, not only on the expando.
This only makes sense for special tree that have additional actions for click on file. And the refactor tree does not do anything.
I would guess this is just a copy / paste from the previous tree :)

And the refactor tree does not do anything.

Sure, it shows a diff editor when you select a file or text change...

Oh, wait it actually doesn't but should open the file in question...


Added French translation to GOAT and the demo

Wow, that is an amazing amount of work! Thank you ;) Please keep in mind that checking such a PR might take a moment: I need to confirm that each text fits in its place, without making the UI look ugly. Considering that I'm a bit snowed under right now, merging this might be a bit delayed, but I'm still onto it!

I tried to make this check myself, I had to change some UI positioning that was static before. I also added "Done" to the translations, it wasn't translated before.
The only UI element that stood out for me and that might need some work is for the tabs in the settings menu. For some reason the sizes are static and I don't know how to access this setting. It might even be a current limitation of godot...

(By the way, no pressure 😉 you can take all the time you want 😅)

Because of https://github.com/miskatonicstudio/goat/issues/229 the translation has to be update with 2 new entries.

Thanks for the feedback but I'm not sure the translations should be changed that much to fit the UI. I'll try to do my best when I'll find some time for this.


help euro € price problem amazon letters: & n b s p ;

I read about change Dockerfile but with euro there is a problem on amazon France Italy Germany and all the country with euro€value:
The price contain strange characters 19,99 €
example:
<span id="price_inside_buybox" class="a-size-medium a-color-price"> 19,99 € </span>
And the program tells me that it's not able to convert in float the string of the price.
I edited en_US.UTF-8 to it_IT.UTF-8  or fr or gr but it didn't work.
Someone managed to make it work with € ?
Thanks

I'm having the same problem too.

It's not that simple. The locale must be changed to it_IT.UTF-8, yes, but you need to change some code too. I'm no Python expert, but I currently have a Docker container scaping Amazon for 2080 that are currently on stock and I'm receiving the notifications on my Discord server.
You have to remove the   HTML entity using html.unescape() (I've added it to the price_str in common.py file. Then you have to change strings corresponding to "add to cart" to "aggiungi al carrello" in some parts of the code.
After that, re-build the container and create your config. I've tested it on Amazon.it only, I'll try and test it on other domains tomorrow if I have some spare time, but it should work for every Euro country.

It's not that simple. The locale must be changed to it_IT.UTF-8, yes, but you need to change some code too. I'm no Python expert, but I currently have a Docker container scaping Amazon for 2080 that are currently on stock and I'm receiving the notifications on my Discord server.
You have to remove the   HTML entity using html.unescape() (I've added it to the price_str in common.py file). Then you have to change strings corresponding to "add to cart" to "aggiungi al carrello" in some parts of the code.
After that, re-build the container and create your config. I've tested it on Amazon.it only, I'll try and test it on other domains tomorrow if I have some spare time, but it should work for every Euro country. But you have to translate every string in every language you want to scrape.

Thanks a lot! Could you share (or copy) your common.py file?

If you are not in a hurry to grab yourself some GPUs (believe me, I wish I could have bought a 3080 FE when I had a chance), I suggest you to wait until @EricJMarti implements the internationalization framework. But if you want I can fork the repo and "maintain" an ad-hoc solution.

@Pipodi If you can share I will happy, because I'm trying to use html.unescape() but without success. (I'm noob).
        price_str = tag if isinstance(tag, str) else tag.text.strip()
        price_str = html.unescape(price_str)

For the "add to cart" problem I edited:

file inventory-hunter/src/scraper/common.py adding an "or" condition.

   if self.has_phrase('add to cart') or self.has_phrase('add to basket') or self.has_phrase('aggiungi al carrello'):

but I'm not sure if edit also the file inventory-hunter/src/scraper/amazon.py
if tag and 'add to cart' in tag.text.lower():

Ok, this is what I've changed.
Dockerfile
ENV LC_ALL it_IT.UTF-8
ENV LANG it_IT.UTF-8
ENV LANGUAGE it_IT.UTF-8

src/scraper/common.py
line 33-34
price_str = tag if isinstance(tag, str) else tag.text.strip()
price_str = html.unescape(price_str).strip()

Don't forget to add the html import import html
Then I changed "add to cart" string to "aggiungi al carrello". Here you can concatenate or-conditions, if you want. But yesterday, when I tried this, I didn't think of that.
class GenericScrapeResult(ScrapeResult):
    def parse(self):
        # not perfect but usually good enough
        if self.has_phrase('aggiungi al carrello') or self.has_phrase('add to basket'):
            self.alert_subject = 'In Stock'
            self.alert_content = self.url

src/scraper/amazon.py
line 24
if tag and 'aggiungi al carrello' in tag.text.lower():

Then rebuild the Docker image. I suggest you to use another tag for your Docker image, i.e. pipodi/inventory-hunter:latest, so you won't overwrite the original Docker image:
docker build -t {image/name:tag} .

then change the image name in docker_run.bash  file:
line 20
default_image="{image/name:tag}"

Now you can run the docker_run.bash file with your configs.
I hope I've explained the changes well, if not just ask!

Thanks for the help! I did what you wrote, but I still have this on logs:
W2020-12-07 15:06:48,053 [mzn_t_3] unable to convert "389,00 €" to float... caught exception: could not convert string to float: '38900\xa0€
I don't care to overwrite so I did:
docker container ls -a
(to have the number of my old docker)
docker container rm 30bfdf575fe2
(to remove my old docker)
I edited the files:

Dockerfile
src/scraper/common.py
src/scraper/amazon.py
inventory-hunter/config/amazon_rtx_3080.yaml

And I ran:
docker pull ericjmarti/inventory-hunter:latest
/docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/********
After that I check the log:
docker logs -f amazon_rtx_3080
But I had the same error.
So I edited also line 18-19 in src/scraper/amazon.py:
        price_str = self.set_price(tag)
        price_str = html.unescape(price_str).strip()

but the same problem...
I'm noob with docker and html.unescape so I did some error but I don't understand where...

Because you are running the wrong Docker image.
If you do
docker pull ericjmarti/inventory-hunter:latest
and
./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******
you are still using the original Docker image, without the ad-hoc edits we made.
So:

Do the edits;
Run docker build -t {imagename} . (where {imagename} can be something like metus88/inventory-hunter:latest. Be sure to type the period after the image name);
Edit the docker_run.bash at line 20, replace ericjmarti/inventory-hunter:latest with the image name you chose at the previous point;
Run ./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******

The reason you still having issues and it seems that it doesn't "save" your edits it's because Docker will use the original Docker image (the one without our edits), but we want it to use our image.
Hope this clarifies the situation.

You did a clear explanation! I have understood now. Thanks a lot. Now for me, it works!

Is it normal for a product that doesn't have a price because is not in stock this message in the log?
example for this GPU: https://www.amazon.it/GeForce-GDDR6X-dissipatore-triventola-refresh/dp/B08HN37VQK
E2020-12-07 17:57:04,927 [mzn_t_1] caught exception during request: argument of type 'NoneType' is not iterable
E2020-12-07 17:57:04,929 [mzn_t_1] scrape failed
E2020-12-07 17:57:13,216 [mzn_t_2] caught exception during request: argument of type 'NoneType' is not iterable
E2020-12-07 17:57:13,219 [mzn_t_2] scrape failed

Because you are running the wrong Docker image.
If you do
docker pull ericjmarti/inventory-hunter:latest
and
./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******
you are still using the original Docker image, without the ad-hoc edits we made.
So:

Do the edits;
Run docker build -t {imagename} . (where {imagename} can be something like metus88/inventory-hunter:latest. Be sure to type the period after the image name);
Edit the docker_run.bash at line 20, replace ericjmarti/inventory-hunter:latest with the image name you chose at the previous point;
Run ./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******

The reason you still having issues and it seems that it doesn't "save" your edits it's because Docker will use the original Docker image (the one without our edits), but we want it to use our image.
Hope this clarifies the situation.

Thanks for your explanation pipodi. Like Metus88, I also had problems converting the price from string to float because I am based in Singapore and the Amazon pricing looks like 'S$980'.
Therefore, what I did was to:

Edit the src/scraper/common.py file. I needed to replace the 'S' in front of the price with nothing so that the program can convert the price_str variable to float.
Build the image file again by running docker build -t {imagename} .
As I am running the program under Windows PowerShell, instead of editing docker_run.bash which you suggested, I edited docker_run.ps1 instead under line 6 to reflect the new imagename. The code I ran was:
.\docker_run.ps1 -Config .\config\(myconfigfile).yaml -Alerter discord -Webhook https://discord.com/api/webhooks/***

The program could run. When I checked the log, I could see that the conversion from string to float is no longer a problem. However, I got the error message "[root] There was an issue sending to discord due to an invalid status code back -> 401". In other words, even though there was an item in stock, it could not send an alert to discord.
I did not have any problem sending alerts to discord if I use the original Docker image, although the price conversion to float was there when using the original Docker image.
Just putting it out there for anyone who has similar issues. Any help would be appreciated.

@Metus88 Yeah, it should be.
@schlep83 401 is Unauthorized, are you sure that you have authorization to use the webhook?

Because you are running the wrong Docker image.
If you do
docker pull ericjmarti/inventory-hunter:latest
and
./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******
you are still using the original Docker image, without the ad-hoc edits we made.
So:

Do the edits;
Run docker build -t {imagename} . (where {imagename} can be something like metus88/inventory-hunter:latest. Be sure to type the period after the image name);
Edit the docker_run.bash at line 20, replace ericjmarti/inventory-hunter:latest with the image name you chose at the previous point;
Run ./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******

The reason you still having issues and it seems that it doesn't "save" your edits it's because Docker will use the original Docker image (the one without our edits), but we want it to use our image.
Hope this clarifies the situation.

Thanks for your explanation pipodi. Like Metus88, I also had problems converting the price from string to float because I am based in Singapore and the Amazon pricing looks like 'S$980'.
Therefore, what I did was to:
1. Edit the src/scraper/common.py file. I needed to replace the 'S' in front of the price with nothing so that the program can convert the price_str variable to float.

2. Build the image file again by running `docker build -t {imagename} .`

3. As I am running the program under Windows PowerShell, instead of editing docker_run.bash which you suggested, I edited **docker_run.ps1** instead under line 6 to reflect the new imagename. The code I ran was:
   `.\docker_run.ps1 -Config .\config\(myconfigfile).yaml -Alerter discord -Webhook https://discord.com/api/webhooks/***`

The program could run. When I checked the log, I could see that the conversion from string to float is no longer a problem. However, I got the error message "[root] There was an issue sending to discord due to an invalid status code back -> 401". In other words, even though there was an item in stock, it could not send an alert to discord.
I did not have any problem sending alerts to discord if I use the original Docker image, although the price conversion to float was there when using the original Docker image.
Just putting it out there for anyone who has similar issues. Any help would be appreciated.

Same there... I have done exactly all your modification for amazon.it and now I have the same error message

@Metus88 Yeah, it should be.
@schlep83 401 is Unauthorized, are you sure that you have authorization to use the webhook?

@Pipodi I think so. Like I said earlier, when I use the original Docker image, the alert to Discord works fine. That would imply I have authorization to use the webhook, no?
However, when I use the docker image which I build with my modifications, it could not work.

@schlep83 I tried right now with my repo fork with the edits we discussed above and I receive the alerts on my Discord channel. What did you edit?

I close the issues becouse Discord problem is off topic for this issue. However I can confirm that the webhook for discord works great with the standard version and also with the mod version from @Pipodi .

@Pipodi Do your changes work for amazon.co.uk?

It should. Later I will try and check for fr, es and de. I will check for co.uk too.

Thank you. Appreciate it!

@jamesearls
I2020-12-08 19:34:18,379 [mzn_c_k_1] scraper initialized for https://www.amazon.co.uk/Corsair-Hydro-FOUNDERS-Water-Block/dp/B08NCSXYVX/ref=sr_1_7?dchild=1&keywords=rtx+3080&qid=1607455519&sr=8-7
I2020-12-08 19:34:18,380 [mzn_c_k_2] scraper initialized for https://www.amazon.co.uk/Gigabyte-GeForce-Graphics-GV-N3080GAMING-OC-10GD/dp/B08HLZXHZY/ref=sr_1_4?dchild=1&keywords=rtx+3080&qid=1607455519&sr=8-4
I2020-12-08 19:34:32,893 [mzn_c_k_1] now in stock at 166.64!
E2020-12-08 19:34:41,488 [mzn_c_k_2] caught exception during request: 'NoneType' object has no attribute 'text'

The second one throws an exception probably because it has no price listed, but as you can see, it works. If you want to see my edits, check out my fork: https://github.com/Pipodi/inventory-hunter as I'm waiting for the maintainer to implement the internationalization framework (I do not code in Python, I'm a Java dev, so I don't know where to start. I'm just experimenting changes learning from what it is coded).

Because you are running the wrong Docker image.
If you do docker pull ericjmarti/inventory-hunter:latest and ./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******
you are still using the original Docker image, without the ad-hoc edits we made.
So:
* Do the edits;

* Run `docker build -t {imagename} .` (where {imagename} can be something like metus88/inventory-hunter:latest. Be sure to type the period after the image name);

* Edit the **docker_run.bash** at line 20, replace `ericjmarti/inventory-hunter:latest` with the image name you chose at the previous point;

* Run `./docker_run.bash -c ./config/amazon_rtx_3080.yaml -a discord -w https://discord.com/api/webhooks/*******`

The reason you still having issues and it seems that it doesn't "save" your edits it's because Docker will use the original Docker image (the one without our edits), but we want it to use our image.
Hope this clarifies the situation.

For people trying to make this solution work today, DO NOT edit line 20 of docker_run.bash, edit line 21.
It should be something like this:
default_image="ericjmarti/inventory-hunter:latest" image="{your/imagename}"
If these two fields share the same value, a docker pull command will be executed, which will lead to "requested access to resource denid" errors.
At least, this is how I managed to make it work.


add support for project/filter pushdown

Adding Projection/FilterNode
Adding Projection/FilterNode conversion logic
Adding pushdown rules

TODO:

follow up on comments in #8479
support row-based operator for project/filter

Codecov Report

:exclamation: No coverage uploaded for pull request base (multi_stage_query_engine@791248a). Click here to learn what that means.
The diff coverage is n/a.

@@                     Coverage Diff                     @@
##             multi_stage_query_engine    #8558   +/-   ##
===========================================================
  Coverage                            ?   67.03%
  Complexity                          ?     4198
===========================================================
  Files                               ?     1262
  Lines                               ?    63787
  Branches                            ?    10023
===========================================================
  Hits                                ?    42760
  Misses                              ?    17951
  Partials                            ?     3076

Flag
Coverage Δ

unittests1
67.03% <0.00%> (?)

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

Continue to review full report at Codecov.

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


MONDO_0007818 has an obsolete OMIM reference

Mondo term (ID Label)
https://www.ebi.ac.uk/ols/ontologies/mondo/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMONDO_0007818
Bug/Typo/Error description
UMLS:C1840265 (OMIM:146840)
OMIM:147060 (Orphanet:2314/e)
-- the OMIM id 146840 is "moved to" (obsolete). (https://omim.org/entry/146840?search=146840&highlight=146840)
We should have a q/c routine to check for obsoleted OMIM IDs with every release (I found this by chance)
@matentzn

@joeflack4 this issue is an indication that we should prioritise our deprecation slurp.

I located 91 mapped deprecated terms in Mondo out of 1,345 deprecated OMIM terms.
Analysis and outputs in PR: https://github.com/monarch-initiative/mondo-ingest/pull/108

Nice one @joeflack4

This has been fixed


whitespace to measure hydra linux

Description
test build time touching util
Linked issue

Type of change

[ ] 🐞 Bug fix (non-breaking change which fixes an issue)
[ ] 🛠 New feature (non-breaking change which adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🏭 Refactoring that does not change existing functionality but does improve things like code readability, structure etc
[ ] 🔨 New or improved tests for existing code
[ ] ⛑ git-flow chore (backport, hotfix, etc)

Developer checklist

[ ] I have read the style guide document, and my code follows the code style of this project.
[ ] If my code deals with exceptions, it follows the guidelines.
[ ] I have updated any documentation accordingly, if needed. Documentation changes can be reflected in opening a PR on cardanodocs.com, amending the inline Haddock comments, any relevant README file or one of the document listed in the docs directory.
[ ] CHANGELOG entry has been added and is linked to the correct PR on GitHub.

Testing checklist

[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

QA Steps

Screenshots (if available)

I posted this in slack, but here's an overview of how long from hydra evaluation, to job completion takes for each project.


[opentitantool] More verbose listing of verilator invocation for copying

Fixes: #15104
Makes opentitantool print the CWD for verilator invocations and prints the command in a copy-pasteable format for easier use and to aid with location of output artifacts like the sim.fst file.
Signed-off-by: Drew Macrae<EMAIL_ADDRESS>

Many thanks @drewmacrae for making this PR, it makes it again a lot easier to work and debug with the Verilator simulation!


⚠ Bofrost.de has degraded performance

In 99f0284, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1156 ms

Resolved: Bofrost.de performance has improved in de41608 after 21 minutes.


Chapter01/recipe_1_09.h is mistyped

Hi author,
I have a problem in the file Chapter01/recipe_1_09.h (as in the book: Chapter 1: Enabling range-based for loops for custom types).
The statement on line 57 might be mistyped. As I've learned, that operator overloading function supposes to return the current value (the one you keep in temp) and then increase the current (which is *this).
I'm confused that if I misunderstand because I think the function should be:
      dummy_array_iterator_type operator++ (int)
      {
         auto temp = *this;
         ++*this;        // instead of ++*temp
         return temp;
      }

You are correct, this is an error. Thank you for pointing it out.
It should be:
dummy_array_iterator_type operator++ (int)
{
    auto temp = *this;
    ++*this;
    return temp;
}

I know there is an errata somewhere, I hope this one goes there for others to see.

Thanks for the clarification.
Packt doesn't have an errata on their website. Would you be able to put it onto your website ? Thanks!

We had one for the 1st edition, but I'll look into it.


Extract creates bad parquet-file

The error indicates that the process exits before the file is closed?
@ingestionTime
1673609394973
@log
671150066425:/aws/lambda/Level1AStack-Level1ALambdaADFD36D4-EAWreaV1f5vm
@logStream
2023/01/13/[$LATEST]0dedabdf41a847fe937b548911b447e5
@message
[ERROR] Level1AException: Failed to initialize handler: Could not open Parquet input source 'ops-payload-level0-v0.1/CCD/2023/1/9/MATS_OPS_Level0_VC1_APID100_20230108-141145_20230109-141925.parquet': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
Traceback (most recent call last):
  File "/var/task/handlers/level1a.py", line 231, in lambda_handler
    raise Level1AException(f"Failed to initialize handler: {err}") from err
@timestamp
1673609393631

From the rac-extract-logs, it looks like an out-of-memory issue. I have raised it manually for now, but we should raise it in the CDK definitions as well.


Paw 2.2.3

Thank you for the contribution. It was merged directly as d1b00e2541aaa1af45a1e21b063fee80e7e2dbf9 to keep commit history cleaner. Your contribution is still credited to you.


Update CHANGELOG.md

Small typo in the year.
Changes proposed:

[ ] Add
[ ] Prepare
[ ] Delete
[X ] Fix

Things I've done:

[X ] My pull request fixes an issue, I referenced the issue.

Just notice had year of 2016 for latest changes.

2017 is too fresh for us 😆

Thanks @cswanson0!


test: fix flaky test case test_engine_image_daemonset_restart

Which issue(s) this PR fixes:

Issue https://github.com/longhorn/longhorn/issues/7438
What this PR does / why we need it:
Test case test_engine_image_daemonset_restart is still flaky after https://github.com/longhorn/longhorn-tests/pull/1642: https://ci.longhorn.io/job/private/job/longhorn-tests-regression/6300/, so increase state_count to wait longer.
Special notes for your reviewer:
Additional documentation or context

@mergify backport v1.6.x v1.5.x v1.4.x


Chlorophyll a Satellite (EO) indicator?

SYKE has now submitted chlorophyll a satellite indicator results with a reference to the HOLAS II 20K grids ids.
However in HOLAS III we are not using these 20K grids anymore and the ids cannot be aligned with the assessment units, as some assessment units have been split.
The question is how to proceed.
I suggest one of two solutions for HOLAS III:

The 20K grids (ids) are somehow mapped to the HOLAS III assessment units and then the confidense assessessment is skipped. I guess this mapping can be done both at SYKE, which then should resubmit the indicator results as HOLAS III assessment unit results or HEAT we could make a script in HEAT which will produce the final results. However in the latter case I will need some advise.

'Raw' chlorophyll a satellite data are being made availeble and HEAT calculate the chlorophyl a satellite indicator directly by aggregating all data withing the assessment units and then create the confidense assessment based on the HOLAS III 10K, 30K and 60K grids which are used by all the other in-situ indicators as well.

What do you recon will be the best approach?

Solution 1. would be the preferred one for now in HOLAS3. The 20k grid is needed to be mapped for updated HELCOM 2022 Assessment units.


LearnOSM's goals

LearnOSM is growing! This is great, but it also makes me ask: what are the goals for LearnOSM? What's the audience? What is appropriate content and what isn't? To do good and maintainable learning materials they're ideally compact and modular.

@lxbarth @althio @bgirardot
Hi, I have yet to discuss any of my ideas with the rest of the team - perhaps Monday's meeting would be good, but my thoughts have been tending towards (this is not a timeline as some of these items need to be taking place in parallel):

HOT's website at http://hot.openstreetmap.org/get-involved states 'Our website learnosm.org will get you mapping quickly and painlessly. Maybe there is a local OpenStreetMap meet-up around. Going to those events is a great way to learn more about the OpenStreetMap project in general.'
The wiki at https://wiki.openstreetmap.org/wiki/Main_Page is very comprehensive - to the extent that it is difficult to get actually mapping because there is so much information it is difficult to find what you need.
http://teachosm.org/en/ is aimed at the professional organiser who wishes to organise a curriculum with assessed learning.
LearnOSM neatly fits into the gap - the TaskManager defines what specifically has to be done, and LearnOSM can show you how to do it. As the site uses markdown it is relatively easy to produce printed guides suitable for use when internet access is limited (this can happen anywhere in the world during a mapathon!

I believe that currently there are four user cases who look to LearnOSM for guidance, and that the site caters for these, but only if you know the information is actually in LearnOSM and you can find it:

Beginner - well catered for - it's you're landing point if you search in your web browser for 'learnosm' - what is OSM, how to get involved & how to use the mapping tools. A very good guide, especially good for the fieldwork side of HOT.

Mobile tools and how to use them - 'field papers', gps, OSMTracker, OSMand, etc.  Not sure how up to date some of these sections are - a review is on my rather long ToDo list.  I guess that our hit rate on this section relates to the Missing Maps projects & the data collection taking place there. Certainly I intend to make these guides available as a downloadable .pdf asap so the users can download them when they have internet access and share them more easily.

OSM-data - qgis etc. I imagine this is the aid organisations making best use of the data which has been provided.

Remote mappers looking for info on how to interpret, trace & tag the features they are seeing when working with the Tasking Manager.

User cases 2, 3 & 4 actually need to know specifically that what they want to find is within the site, or they will not find it - for instance, use the search engine & search on 'building' and you will not find anything, but there is a fairly detailed section on this within http://learnosm.org/en/coordination/remote/
I believe we need to consider a few options, but come up with a system whereby the excellent material within the site is 'advertised' better. Perhaps a 'full site index' with the 4 sections above each having a section list of chapters - needs more thought!
There is an overlap, but I come from a background of learning how to map & I've learnt a small amount about updating the website. Others have come from a more technical background and are trying to make it easier for us to have the website we would like. I do know that organising chapters by a method involving the file name having a date makes it difficult if you want to reorganize something (I also know that when you search github for information on how to set up a site, it seems to be the way they recommend!). If we re-organise the site into a filing system more acceptable to the 'technical volunteers', but also easier for the 'mapper who wishes to help' would we have more people willing to help keep the site up to date, and perhaps perform in the future with 'whistles & bells' whilst still allowing the simple production of printed guides - I think both can be done. Whatever we do I think needs better documentation so that any new volunteers don't have to spend long periods of time working out how to help.
I think we need to reorganize the site as per #306 but I also think we need :

remote section - buildings - transferring tags from a node to a polygon,  schools & any other special cases,
remote section - aligning the imagery,
remote section - waterways (leads into)
remote section - relations - islands, courtyards, admin boundaries
once we have info on 'how to map', then a section on how to help other mappers to develop - 'validating'  (there is already some information on this, and the wiki article).
more detailed instructions for new & potential TM project managers

Should there be more links from the Tasking Manager to LearnOSM - it would be very easy to provide a template for TM project managers so they can copy and paste, something like,
trace all buildings - click here if you are not sure how.  Producing such a template is relatively easy, but I don't wish to do so until we have decided on the file structure, and we also have all of the information in place.
Translations - this should be a continuous process paired with managing the minor amendments & updates, but we need to document the how a little better. Personally I think that a translation provided by a mapper will be better every time as they will keep it in context.  But if we could increase our team without detracting from the urgent mapping tasks (enhance the number of mappers by giving instructions in all languages), we could really make progress on the translation front.
hmmm...   went on a bit didn't it - sorry. But I think we did have over 2800 visits to the site in the last couple of weeks, so it's got to be worth keeping it contemporary, simple and informative.

@Nick-Tallguy - thanks, very useful.
Considering engaging on LearnOSM more what I'm most worried about is is the broad scope of the project. The result is for instance a long language list in the header creating expectation that the site can't keep up with. Or sections of the site that are not fully maintained.
Are there any thoughts around breaking LearnOSM into more independently manageable pieces?

LearnOSM has always struggled with the balance of being the best beginner guide for OSM, and providing pathways to greater skills.
I agree, the focus of organizing and maintenance should be on the core materials, and on those translations. There's are certainly better ways to manage that translation workflow, and I think there's other discussions on that.
If you look at the front page, there's a "More Guides", and "Organizing a Workshop?" buttons, that link to the same page on the GitHub wiki. Additionally, there's the "Other Guides" navigation box (which is relatively new? and not particularly descriptive :). I don't think the "Other Guides" section should be on the same level as the Beginner's Guide, in the architecture of the site. IMO, there's the Beginners Guide, and then there's everything else, and the presentation should reflect that.
For more advanced materials, we should develop some shared principles, it's evident LearnOSM doesn't have that yet. For instance, if there are better guides for topics, it's helpful to be made aware, but we shouldn't replicate. The Map Design section is a good example of this, MapBox guides are more up to date, and LearnOSM can just link to them. TeachOSM is a companion but separate site to LearnOSM, so can just introduce and link there. This doesn't mean that there can't be "advanced" original content on LearnOSM, but it should really be thought through, and if something better exists elsewhere, or could be an independent site, shed it off.

@mikelmaron I agree with the majority of the comments. The whole site needs a review, and if we are making a change to the filing system this may be the time to do this. We only carry over what we have reviewed, tidied, and know is the 'best source'.
I do wonder if the site should be broken up into more than one site - my particular (but not exclusive) interests are related to mapping remotely with the tasking manager, and the subsequent ground survey (tools, methods etc), together with how to manage that back into OSM - using Tasking Manager or some other means. In other words, I've got very involved in the Missing Maps Project & would like there to be documentation in various forms to cover the needs there.  I'd also like to see more links to screencasts, and perhaps other outside sites. (I still believe we can produce printed guides, it's just that more editing may be advised to tidy them up - but some is required now anyway).
Alternatively, using the one site, but altering the front page - this is purely an illustration and I'm not suggesting we go with this:

If you click on your coloured block, the index displayed relates to your particular area of interest. But, we have a home button so you can go to another area of interest if you wish. Some particular subjects can appear in more than one section - Tasking manager would probably be of interested to 3 of the sections. Rearranging the filing system behind the site should make it easier for someone more technical like @pyrog to create individual indexes for the different subject headings.
At the moment the site has attracted the interest of a number of people, which is good & is allowing a number of ideas to take shape - I'm not convinced that would happen if we split the site. There is a danger of one person working alone, gradually losing interest and that particular site potentially stagnating.
Part of the 'fun' at the moment is the variety of information here, and I look forward to learning more about qgis!

@mikelmaron

For instance, if there are better guides for topics, it's helpful to be made aware, but we shouldn't replicate. The Map Design section is a good example of this, MapBox guides are more up to date, and LearnOSM can just link to them.

:+1: but does MapBox (and others) provide translations ?
If not, how could we provide translations ?

inside LearnOSM site ?
inside MapBox site ?
Does learnOSM community could provide translations to MapBox

@Nick-Tallguy

I still believe we can produce printed guides

:+1: I see the beginner's guide like a "reference book" with severals editions.
The website is the last edition but could provide links to severals format (pdf, epub…) and also old editions.
And of course, the tools (static website generator) could/should generate theses files.

but does MapBox (and others) provide translations ?

that's a good point. @lxbarth

I do wonder if the site should be broken up into more than one site

I really would say, there's LearnOSM for beginners, and there's everything else. Whether it is a different site or a different section ...  visually distinguish and make beginner's guide the main draw. That's my take.

but does MapBox (and others) provide translations ?
that's a good point. @lxbarth

We keep our soon to be published mapping docs in English and Spanish, we don't have plans in creating any other translations or content beyond those docs right now.

I think I agree with all your points @Nick-Tallguy
https://github.com/Nick-Tallguy

Hi, I have yet to discuss any of my ideas with the rest of the team -
perhaps Monday's meeting would be good...

+1 better search
+1 better index and navigation
+1 reorganize the site as per #306
https://github.com/hotosm/learnosm/issues/306
+1 for review and proposed new sections
+1 for better documentation for contributing to LearnOSM
+1 for links from TM instructions to LearnOSM
+1 for instructions template for TM project managers (out of TM2 code but
proposed first in wiki then in LearnOSM when stabilised). This is on my
wishlist (and todo list)  since
https://github.com/hotosm/osm-tasking-manager2/issues/132#issuecomment-69314472
+1 still work to do on translation process

Considering engaging on LearnOSM more what I'm most worried about is is
the broad scope of the project. The result is for instance a long language
list in the header creating expectation that the site can't keep up with.
Or sections of the site that are not fully maintained.
Are there any thoughts around breaking LearnOSM into more independently
manageable pieces?

I would like LearnOSM to be inclusive to all people and all languages.
So I am happy with the long language list in the header.

the long language list in the header.

I don't see any issue with that, it's good. The issue is keeping the translations up to date.

I agree, the focus of organizing and maintenance should be on the core
materials, and on those translations.

+1. IMO priority on beginner content.
For more advanced subjects, I agree with @mikelmaron that we should look at
external content. BUT @pyrog is right that we need to consider if external
content is translated.
If this is not the case, LearnOSM could be a platform of shared knowledge
and translation.

The whole site needs a review, and if we are making a change to the filing system this may be the time to do this.
We only carry over what we have reviewed, tidied, and know is the 'best source'.

Additionally we can further evaluate and mark each file/section: eg. best source, good for publication, known better sources, outdated, needs review, needs translation, removed...

At the moment the site has attracted the interest of a number of people, which is good & is allowing a number of ideas to take shape - I'm not convinced that would happen if we split the site. There is a danger of one person working alone, gradually losing interest and that particular site potentially stagnating.
Part of the 'fun' at the moment is the variety of information here, and I look forward to learning more about qgis!

We may also need to lower all the barriers (with documentation, processes, technical help, versioning, priorities/ToDo/backlog...) so that more people can know what, where and how to contribute easily. I think that is the power of community and crowd-sourcing, once you get to a critical mass. We also need to consider that the site is not so static, it needs update, even people (contributors and maintainers) can change often in a open-source project.

Additionally we can further evaluate and mark each file/section: eg. best source, good for publication, known better sources, outdated, needs review, needs translation, removed...

Prose.io "templates" are good to provide checkbox/listbox/tags to mark chapters, associated to (jekyll) layouts to show/hide pages with some "tags" in their front matter :smile:

We may also need to lower all the barriers (with documentation, processes, technical help, versioning, priorities/ToDo/backlog...) so that more people can know what, where and how to contribute easily. I think that is the power of community and crowd-sourcing, once you get to a critical mass.

See examples of quality and open source books:

http://book.openingscience.org
http://ruby-for-beginners.rubymonstas.org

We also need to consider that the site is not so static, it needs update, even people (contributors and maintainers) can change often in a open-source project.

It's the case with previous examples :wink:

My problem with all of this is that there is so much that I lose track of what I have or have not done or seen. What about a downloadable check box index that takes you through the tutorials and notes in a logical order and each person has can download their own personal list onto their desktop and can keep track of what they have or have not done and what they still need to do. We can also then be able to better control what people see as important to read up on. Included on this will be a list of the sites to go to for various questions or problems.


Fix formatting test

npm test was applying the formatter, not checking whether prettier was satisfied. This PR fixes the mistake and applies YAML formatting to the one file currently out of compliance.

Looks like prettier isn't a dependency.


[Refactor] improve performance of component detection

Some node visitors for components detection are redundant.
Benchmark with time npx eslint . (mean of 5 runs):
- 5.06 s
+ 5.01 s

Can you elaborate on how they're redundant?

Our heuristics for detecting function components is checking if the function returns jsx or null (isReturningJSX), this function is expensive to execute. In a simple test case isReturningJSX is found to run 3 times for a simple function.
This part is redundant
https://github.com/jsx-eslint/eslint-plugin-react/blob/24621e4454109a285519e987d9a425b88339f734/lib/util/Components.js#L829-L840
, because checking isReturningJSX is included in getParentComponent -> getParentStatelessComponent -> getStatelessComponent -> isReturningJSX.
https://github.com/jsx-eslint/eslint-plugin-react/blob/24621e4454109a285519e987d9a425b88339f734/lib/util/Components.js#L785-L796

Would it be simpler to memoize isReturningJSX?

Would it be simpler to memoize isReturningJSX?

No, it wouldn't. Deleting redundant code is better than adding memoizing.


fix: remove typescript dep

Related: https://github.com/adobe/aio-cli-plugin-app/issues/759
This has to be a MAJOR version release.
How Has This Been Tested?

update the plugin above with the branch version of this config (see repo README - use adobe/eslint-config-aio-lib-config#remove-ts)
remove typescript dev-dep in the plugin repo
run npm test
run npm prepack
check README See code: section of a command, should have file extension .js

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[X] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[X] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[X] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[X] All new and existing tests passed.

Question: shouldn't we (only) remove  typescript here?
Seems like the oclif change looks into the plugin's package.json (i.e. aio-cli-plugin-app) and not into the sub-dependencies (i.e. eslint-config-aio-lib-config)

Question: shouldn't we (only) remove typescript here? Seems like the oclif change looks into the plugin's package.json (i.e. aio-cli-plugin-app) and not into the sub-dependencies (i.e. eslint-config-aio-lib-config)

Doing an npm install in the plugin (after removing node_modules) will show a peer dependency issue since npm installs peer dependencies, so yes we need to remove it in the eslint config.


Update how the config is loaded in each module

no longer having CONFIG available anywhere as a constant. Functions should call get_config as needed (as a function parameter with a default value of get_config()), not instantly call it when the module gets imported.

Given the pervasiveness of this pattern, I don't think it is feasible to do in one big PR (or at least I feel it is inadvisable to do so)
I'm going to close this for now, as the other more immediately impactful config changes have been made.
When I attempted this in a previous PR it caused test failures, so it seems like the juice isn't worth the squeeze


License

Could you please add a license to this? I think it would make sense to use MIT since that's what gmail.js uses. I'd be happy to send a PR if you like, though I think GitHub has a pretty nice UI for adding licenses.

Done

Thanks! :+1:


IR type system is failing to handle RayDesc properly

Somehow, a local variable with the RayDesc type is ending up with a null type (or rather, a pointer type with a null operand). This needs to be fixed, but if hilights a gap in the IR type system work in cases where a “built-in” type is actually a for-real struct.
We ideally want such a type to be represented as an IR struct, with decorations that identify it as s builtin. At that point, however, I start to wonder again about whether we are making the right call giving most builtin types their own IR opcodes instead of encoding them as IR struct types just like ordinary user-defined types (these are ones that just happen to be provided by the standard library).

There is also BuiltInTriangleIntersectionAttributes, HLSL supports using that without having a struct declaration in the code

This should be fixed by #498.


Migrating  bytebuffercollections from Metamarkets.

Migrating bytebuffercollections from metamarkets. This migration will be helpful to deal problems around having separate PRs and release cycle of Druid, extendedset and bytebuffercollections. This PR is continuation of https://github.com/druid-io/druid/pull/3585.
Note: External extensions might have to change.

Please note the differing license headers on extendedset and bytebuffercollections files.  extendedset is actually a fork of someone else's repository, given that it is a fork already, the statement that it was "licensed to Metamarkets under a CLA" is not true, so we instead opted to keep the same license header.

@cheddar given that, can we split the "purely MMX CLA" into its own PR for easier merging?
I'm a bit concerned about how we can make sure we can maintain a proper licensing header for things that did not originate under a MMX CLA

@drcrallen @cheddar Removed extendedset module.

@akashdw there are some code conflicts

@fjy the code conflicts will happen on almost every PR merge because imports.  It would be great if we could get signoff on the general idea from @drcrallen or @leventov as representatives of MMX (given that the code is coming from an MMX repo) before resolving the conflicts.  Otherwise, there will be constant chasing of conflicts.

@cheddar I leave this to @drcrallen.

Other than what @cheddar mentioned, this looks good to me. I can do the merge once the conflicts are cleaned up.
I did some more digging on the <p> thing and I think I had it backwards. This is in the master pom: https://github.com/druid-io/druid/blob/druid-0.9.2-rc2/pom.xml#L787 which I think prevents the problem I was describing.
I think my brain was backwards, where bytebuffer-collections would fail compiling if java8 was used.
Looking through druid source code there are a few instances of <p> which should have otherwise given us compile problems.
So you can fix the merge conflicts and I'll merge this promptly assuming another committer can give the other plus one.

@cheddar @drcrallen @fjy I uploaded a new patch set to resolve code conflicts and removed  from bytebuffer-collections.

👍

@akashdw could you also please remove bytebuffer-collections dependency from the root pom?

@leventov Sure, I will create a pr for the pom cleanup.

@leventov pr for root pom cleanup, https://github.com/druid-io/druid/pull/3764


Little concern

Okay, first, I am really not an expert, Iam juste testing some stuff out because I plan to stack in ETH 2.0 and I try to understand what Ido.
I was using the Bicornis Sprint release to generate the validator key for the prysm launch pad. The JSON that came out (
Bicornis Sprint.txt
had some difference with the new one that I generated with   I'm Zinken this will be the last testnet  see file (
zinken.txt
).
I found some differences
For example in the section:
crypto the first file has SCRYPT in function and the new one has sha256
I did a test using ETHDO to regenerate the wallet using the seed phrase of both file. I was not able to regenerate the correct wallet address with ETHDO using the seed phrase that was generated by Bicornis Sprint (scrypt) release.
But it worked fine with the lastest release (sha256)
So if some people generate their withdrawal key and save the mnemonic phrase, how they will know if it was generated using sha256 or scrytp in order to regenerate the correct wallet and account?
Thank you!

My bad, I am closing the issue.


Fix list rendering in release notes

Add missing newline before the list, otherwise the whole list is shown
as a single line.
Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[x] Ensure that tests pass locally: ./gradlew <changed-subproject>:check

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

@eriwen ping, since 5.0 RC2 is closer :)

Ah, thanks very much @thc202!


Add an into vec implementation?

Hi there. Like Prost a lot. I find that by far the most common case for me when encoding is

Make a new empty vector
Immediately encode into it.

I absolutely understand why the encode function works the way it does, but given how common the case I just mentioned is, seems worth making this even easier on the caller. Namely:
let encoded: Vec<u8> = message.into()

This would be super. If you like the idea, I'm happy to contribute a PR (admittedly, not a whole lot to do here :smile: )
Thanks!

Hey! Just jumping in here. Into is typically used for cheap, infallible conversions. Allocating does not (in my opinion) fall in that category. However, I found it tiresome too to write Vec::with_capacity(encoded_len()) the whole day, so I made #378: encode_to_vec() and encode_length_delimited_to_vec().
I think that will solve your underlying issue well, so I've marked this issue as closed by that PR. If you disagree, let me know, I'll unmark it.

@rubdos Awesome! That's perfect, and great point about this maybe not being the best for Into.

In addition to admitting the with_capacity optimization, such a
dedicated encode_to_vec method can return Vec<u8> rather than
Result<Vec<u8>>, which saves callers from having to expect with a
comment indicating why this is always safe.
I see that the implementation in #378 does so, so imho this is another
good reason to support this feature:

more concise
expresses programmer intent better
works in an expression context
more efficient due to with_capacity
more precise return type

In addition to admitting the with_capacity optimization, such a
dedicated encode_to_vec method can return Vec<u8> rather than
Result<Vec<u8>>, which saves callers from having to expect with a
comment indicating why this is always safe.
I see that the implementation in #378 does so, so imho this is another
good reason to support this feature:

more concise
expresses programmer intent better
works in an expression context
more efficient due to with_capacity
more precise return type


Merging in cx repo

the .docx file should probably not get checked in... or at least it should get converted into a readme or something