Heimdall can flash files bigger than partitions

Apparently I can flash a file that is bigger than the RECOVERY partition:
Here I've a recovery.img that is a bit over 8MiB (8388608 bytes)

$ du --bytes recovery.img
9691136	recovery.img`

And here's print-pit on Galaxy SIII (GT-I9300 variant) I managed to flash this image:

$ heimdall print-pit
Heimdall v1.4.2
Copyright (c) 2010-2017 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/
This software is provided free of charge. Copying and redistribution is
encouraged.
If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/
Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...
Initialising protocol...
Protocol initialisation successful.
Beginning session...
Some devices may take up to 2 minutes to respond.
Please be patient!
Session begun.
Downloading device's PIT file...
PIT file download successful.
Entry Count: 16
Unknown 1:<PHONE_NUMBER>
Unknown 2: 844251476
Unknown 3: 30797
Unknown 4: 0
Unknown 5: 0
Unknown 6: 0
Unknown 7: 0
Unknown 8: 0
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1734
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: BOOTLOADER
Flash Filename: sboot.bin
FOTA Filename:
--- Entry #1 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 81
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 1734
Partition Block Count: 312
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: TZSW
Flash Filename: tz.img
FOTA Filename:
--- Entry #2 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 70
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 34
Partition Block Count: 16
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: PIT
Flash Filename: mx.pit
FOTA Filename:
--- Entry #3 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 71
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 50
Partition Block Count: 2048
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: MD5HDR
Flash Filename: md5.img
FOTA Filename:
--- Entry #4 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 1
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 8192
Partition Block Count: 8192
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: BOTA0
Flash Filename: -
FOTA Filename:
--- Entry #5 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 2
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 16384
Partition Block Count: 8192
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: BOTA1
Flash Filename: -
FOTA Filename:
--- Entry #6 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 3
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 24576
Partition Block Count: 40960
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: EFS
Flash Filename: efs.img
FOTA Filename:
--- Entry #7 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 4
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 65536
Partition Block Count: 16384
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: PARAM
Flash Filename: param.bin
FOTA Filename:
--- Entry #8 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 5
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 81920
Partition Block Count: 16384
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: BOOT
Flash Filename: boot.img
FOTA Filename:
--- Entry #9 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 6
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 98304
Partition Block Count: 16384
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: RECOVERY
Flash Filename: recovery.img
FOTA Filename:
--- Entry #10 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 7
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 114688
Partition Block Count: 65536
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: RADIO
Flash Filename: modem.bin
FOTA Filename:
--- Entry #11 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 8
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 180224
Partition Block Count: 2097152
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: CACHE
Flash Filename: cache.img
FOTA Filename:
--- Entry #12 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 9
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 2277376
Partition Block Count: 3145728
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: SYSTEM
Flash Filename: system.img
FOTA Filename:
--- Entry #13 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 10
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 5423104
Partition Block Count: 1146880
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: HIDDEN
Flash Filename: hidden.img
FOTA Filename:
--- Entry #14 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 11
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 6569984
Partition Block Count: 16384
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: OTA
Flash Filename: -
FOTA Filename:
--- Entry #15 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 12
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 6586368
Partition Block Count: 0
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: USERDATA
Flash Filename: userdata.img
FOTA Filename: remained
Ending session...
Rebooting device...
Releasing device interface...

Here the recovery is 8MiB as there are 16384 blocks and one block is 512 bytes.
But I can still manage to flash this recovery file:

$ heimdall flash --RECOVERY recovery.img
Heimdall v1.4.2
Copyright (c) 2010-2017 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/
This software is provided free of charge. Copying and redistribution is
encouraged.
If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/
Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...
Initialising protocol...
Protocol initialisation successful.
Beginning session...
Some devices may take up to 2 minutes to respond.
Please be patient!
Session begun.
Downloading device's PIT file...
PIT file download successful.
Uploading RECOVERY
100%
RECOVERY upload successful
Ending session...
Rebooting device...
Releasing device interface...

I didn't check yet if it wrote part of the image in the RADIO partition or not.
Note that I've complete backups of the important partitions, so here if it erased the RADIO partition I can easily restore the backup.
I don't know yet how the Thor protocol implemented by heimdall works so I don't know how easy it is to get the partition size in advance, but if that's possible it might be a good idea to add a check and refuse to flash a file if it's too big.
If it's not possible to auto-detect that we could probably still implement something like that by finding ways to warn the users about that behavior and somehow and making the flashing process a two step process where the users would first download the PIT first and then feed the pit to heimdall in order to enable heimdall to check the partition sizes.
However the --pit option in heimdall flash doesn't seem to be doing that already and it's probably meant for repartitioning only:

$ heimdall download-pit --output gt-i9300.pit
Heimdall v1.4.2
Copyright (c) 2010-2017 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/
This software is provided free of charge. Copying and redistribution is
encouraged.
If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/
Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...
Initialising protocol...
Protocol initialisation successful.
Beginning session...
Some devices may take up to 2 minutes to respond.
Please be patient!
Session begun.
Downloading device's PIT file...
PIT file download successful.
Ending session...
Rebooting device...
Releasing device interface...
$ heimdall flash --RECOVERY recovery.img --pit gt-i9300.pit
Heimdall v1.4.2
Copyright (c) 2010-2017 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/
This software is provided free of charge. Copying and redistribution is
encouraged.
If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/
Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...
Initialising protocol...
Protocol initialisation successful.
Beginning session...
Some devices may take up to 2 minutes to respond.
Please be patient!
Session begun.
Downloading device's PIT file...
PIT file download successful.
Uploading RECOVERY
100%
RECOVERY upload successful
Ending session...
Rebooting device...
Releasing device interface...
So we may (or may not) need to add a new --with-pit or similar argument in --help along with warnings depending on what's already there in heimdall.

Denis.

I didn't check yet if it wrote part of the image in the RADIO partition or not.

While I have not checked this either, it used to be in postmarketOS that flashing the boot image (with main OS kernel) to i9300 would result in the recovery (on a different partition) becoming unbootable. This was fixed by making sure the boot image was smaller than the boot partition.
Considering this, I think it's likely that Heimdall just continues writing onto the next partition.

On devices with newer bootloaders an error (without any information about what the issue is) is returned instead. On at least galaxy tab s from 2013/2014 this happens.
I agree that an error from heimdall would be better in any case though, should be possible to implement from the information in the PIT

It can be implemented very easily.
Just multiply block size by block count, and checks if it's bigger than expected.

Here's a WIP: 12d80ef196de (from this branch: https://git.sr.ht/~grimler/Heimdall/log/size_check)
There are two issues that I have not figured out yet:

The size of a block differs between devices, older have 512 and newer 4096. I hardcoded 512 for now, but we need to get this from the pit, or device, somehow instead.

I tried flashing stock android to three devices, and it failed on one due to the BOOTLOADER (sboot) partition being too small for the file. Maybe this means that the BOOTLODER partition works a bit differently, and that we should not check the size in this case.

I have to say I am not quite sure about this, but can you check block size from the image file instead of the phone?
$ fdisk -lu boot.img
Disk boot.img: 96 MiB, 100663296 bytes, 196608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

@TimoSairiala fdisk, and file, and other tools seem to report/use the same block size no matter which image I look at unfortunately
Looking closer at the pit I think the information is there in the header though, in a part that is not parsed at all right now. For i9300 the PIT starts with:
00000000: 7698 3412 1000 0000 434f 4d5f 5441 5232  v.4.....COM_TAR2
00000010: 4d78 0000 0000 0000 0000 0000 0000 0000  Mx..............
00000020: 0200 0000 5000 0000 0200 0000 0100 0000  ....P...........
00000030: 0000 0000 c606 0000 0000 0000 0000 0000  ................

and my guess is that 0200 at 00000020 is the block size (in multipliers of 256). For herolte we instead have something like:
00000000: 7698 3412 1800 0000 434f 4d5f 5441 5232  v.4.....COM_TAR2
00000010: 4c53 4937 3432 3000 0400 0000 0000 0000  LSI7420.........
00000020: 0800 0000 5000 0000 0200 0000 0100 0000  ....P...........
00000030: 0000 0000 0004 0000 0100 0000 0000 0000  ................

0800 instead of 0200, i.e. 512*4=4096. Will have to check with a couple of more devices to verify if this hypothesis seem to hold.
@TheAirBlow you seem to have documented the pit format for https://samsung-loki.github.io/samsung-docs/docs/PIT/, do you have any guess what the other numbers in second half of row 2, and on row 3 and 4 might be?

@TimoSairiala fdisk, and file, and other tools seem to report/use the same block size no matter which image I look at unfortunately
Looking closer at the pit I think the information is there in the header though, in a part that is not parsed at all right now. For i9300 the PIT starts with:
00000000: 7698 3412 1000 0000 434f 4d5f 5441 5232  v.4.....COM_TAR2
00000010: 4d78 0000 0000 0000 0000 0000 0000 0000  Mx..............
00000020: 0200 0000 5000 0000 0200 0000 0100 0000  ....P...........
00000030: 0000 0000 c606 0000 0000 0000 0000 0000  ................

and my guess is that 0200 at 00000020 is the block size (in multipliers of 256). For herolte we instead have something like:
00000000: 7698 3412 1800 0000 434f 4d5f 5441 5232  v.4.....COM_TAR2
00000010: 4c53 4937 3432 3000 0400 0000 0000 0000  LSI7420.........
00000020: 0800 0000 5000 0000 0200 0000 0100 0000  ....P...........
00000030: 0000 0000 0004 0000 0100 0000 0000 0000  ................

0800 instead of 0200, i.e. 512*4=4096. Will have to check with a couple of more devices to verify if this hypothesis seem to hold.
@TheAirBlow you seem to have documented the pit format for https://samsung-loki.github.io/samsung-docs/docs/PIT/, do you have any guess what the other numbers in second half of row 2, and on row 3 and 4 might be?

Hello, I am more focused to get Hreidmar GUI working. I'll look at the PIT reader in the aboot.mbn itself when I'll be able to.

I confused the offsets, the first pitentry starts at the end of row two, so 0800 0000 / 0200 0000 is not part of the header.
I think the field might still say something about the blocksize though, for i9300 we have 0200 0000 and
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1734
Partition Name: BOOTLOADER
Flash Filename: sboot.bin

while for herolte with 0800 0000 we have
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 8 (Unknown)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1024
File Offset: 1
File Size: 0
Partition Name: BOOTLOADER
Flash Filename: sboot.bin

Device Type: 8 (Unknown) could be mmc, but with blocksize 4096

I confused the offsets, the first pitentry starts at the end of row two, so 0800 0000 / 0200 0000 is not part of the header.
I think the field might still say something about the blocksize though, for i9300 we have 0200 0000 and
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1734
Partition Name: BOOTLOADER
Flash Filename: sboot.bin

while for herolte with 0800 0000 we have
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 8 (Unknown)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1024
File Offset: 1
File Size: 0
Partition Name: BOOTLOADER
Flash Filename: sboot.bin

Device Type: 8 (Unknown) could be mmc, but with blocksize 4096

Please create an issue here

I've tagged a release in the repo I am maintaining which contains a commit to compare the file and partition sizes before flashing.
The check is (for now) only based on the actual file size. For sparse images (i.e. {system,cache,userdata,hidden}.img and maybe others) the file size doesn't equal the expanded size, so we still risk flashing something that is too large to these partitions. A better check would instead get the image size from the header of the sparse image.
As discussed above, I've also changed how the PIT header is printed. We seem to have a string "COM_TAR2", followed by a string related to the CPU or bootloader, and then a number that might be a version of some sort (0000, 0003, 0004 and 0005 have been observed, if you have a device with another version please let me know).
Some of the fixes from the various PRs here on github and gitlab are also merged, in particular:

The libusb reset patch needed on ubuntu https://github.com/Benjamin-Dobell/Heimdall/pull/478
Support for flashing images larger than 3.5 GB https://github.com/Benjamin-Dobell/Heimdall/pull/459
Avoid libusb_set_interface_alt_setting when it anyways doesn't do anything https://github.com/Benjamin-Dobell/Heimdall/issues/497, fixed in 2ecc98020c
Some compilation issues on freeBSD, Android and macOS have been fixed.

Pre-compiled binaries can be downloaded for ubuntu 20.04, archlinux and alpine linux. The source can be found and browsed at https://git.sr.ht/~grimler/Heimdall.

I've tagged a release in the repo I am maintaining which contains a commit to compare the file and partition sizes before flashing.
The check is (for now) only based on the actual file size. For sparse images (i.e. {system,cache,userdata,hidden}.img and maybe others) the file size doesn't equal the expanded size, so we still risk flashing something that is too large to these partitions. A better check would instead get the image size from the header of the sparse image.
As discussed above, I've also changed how the PIT header is printed. We seem to have a string "COM_TAR2", followed by a string related to the CPU or bootloader, and then a number that might be a version of some sort (0000, 0003, 0004 and 0005 have been observed, if you have a device with another version please let me know).
Some of the fixes from the various PRs here on github and gitlab are also merged, in particular:

The libusb reset patch needed on ubuntu https://github.com/Benjamin-Dobell/Heimdall/pull/478
Support for flashing images larger than 3.5 GB https://github.com/Benjamin-Dobell/Heimdall/pull/459
Avoid libusb_set_interface_alt_setting when it anyways doesn't do anything https://github.com/Benjamin-Dobell/Heimdall/issues/497, fixed in 2ecc98020c
Some compilation issues on freeBSD, Android and macOS have been fixed.

Pre-compiled binaries can be downloaded for ubuntu 20.04, archlinux and alpine linux. The source can be found and browsed at https://git.sr.ht/~grimler/Heimdall.

Thanks for researching the PIT innerworkings! Gotta check it with some random devices firmware's PIT to confirm this. Looking for adding this into Hreidmar, and displaying PIT in GUI manner.
I will look more into the header. Never looked into the PIT much, more focused on other things.

@TheAirBlow Thanks, please let me know if you come in contact with any devices where the last bytes of the header is something other than 0000, 0003, 0004 or 0005 (seems weird that 0001 and 0002 are skipped, if it is a version number), and I'll see if I can write something up for your wiki pages!

@TheAirBlow Thanks, please let me know if you come in contact with any devices where the last bytes of the header is something other than 0000, 0003, 0004 or 0005 (seems weird that 0001 and 0002 are skipped, if it is a version number), and I'll see if I can write something up for your wiki pages!

You can download random firmwares by using this, unzip, and untar the CSC. Here is the PIT that you need. Use Download&Decrypt mode for this.
Also, Samsung Galaxy A20s (SER) seems to have different numbers in the header.

Also, I think we need to look into the Odin mode PIT flashing (located in aboot,mbn) and check how it read the PIT

"Let me reboot into Windows real quick." - that looks like "famous last words" :'(

"Let me reboot into Windows real quick." - that looks like "famous last words" :'(

By using the completely legal sources I updated the docs. Also, currently I have no motivation to develop Hreidmar, sadly.

But, Thor and the Bootloader leak said different things, so idk which one to actually reference. A lot of confusion.

Also, no people have "sacrifices their phone for science", and my phone is unflasheable, I cannot even test anything.

A new discovery!
    //Descritption for old Pit version
    m_oldPit.m_mapBinaryType[0] = "AP";
    m_oldPit.m_mapBinaryType[1] = "CP";

    m_oldPit.m_mapDeviceType[0] = "ONENAND";
    m_oldPit.m_mapDeviceType[1] = "NAND";
    m_oldPit.m_mapDeviceType[2] = "MOVINAND";

    m_oldPit.m_mapAttribute[0] = "RO";
    m_oldPit.m_mapAttribute[1] = "RW";
    m_oldPit.m_mapAttribute[2] = "STL";

    m_oldPit.m_mapUpdateAttribute[0] = "NONE";
    m_oldPit.m_mapUpdateAttribute[1] = "FOTA";
    m_oldPit.m_mapUpdateAttribute[2] = "SECURE";
    m_oldPit.m_mapUpdateAttribute[3] = "FOTA+SECURE";

    m_oldPit.m_horizontalHeader << QString("Partition Name") << QString("Binary Type") << QString("Device Type") << QString("Id")
            << QString("Attribute") << QString("Update Attribute") << QString("Unit Size") << QString("Units Count")
            << QString("File Offset") << QString("File Size")  << QString("File Name") << QString("Delta Name");

    //Descritption for new Pit version
    m_newPit.m_mapBinaryType[0] = "AP";
    m_newPit.m_mapBinaryType[1] = "CP";

    m_newPit.m_mapDeviceType[0] = "ONENAND";
    m_newPit.m_mapDeviceType[1] = "NAND";
    m_newPit.m_mapDeviceType[2] = "EMMC";
    m_newPit.m_mapDeviceType[3] = "SPI";
    m_newPit.m_mapDeviceType[4] = "IDE";
    m_newPit.m_mapDeviceType[5] = "NAND X16";

    m_newPit.m_mapAttribute[0] = "NONE";
    m_newPit.m_mapAttribute[1] = "BCT";
    m_newPit.m_mapAttribute[2] = "BOOTLOADER";
    m_newPit.m_mapAttribute[3] = "PARTITION TABLE";
    m_newPit.m_mapAttribute[4] = "NVDATA";
    m_newPit.m_mapAttribute[5] = "DATA";
    m_newPit.m_mapAttribute[6] = "MBR";
    m_newPit.m_mapAttribute[7] = "EBR";
    m_newPit.m_mapAttribute[8] = "GP1";
    m_newPit.m_mapAttribute[9] = "GP1";

    m_newPit.m_mapUpdateAttribute[0] = "NONE";
    m_newPit.m_mapUpdateAttribute[1] = "BASIC";
    m_newPit.m_mapUpdateAttribute[2] = "ENHANCED";
    m_newPit.m_mapUpdateAttribute[3] = "EXT2";
    m_newPit.m_mapUpdateAttribute[4] = "YAFFS2";
    m_newPit.m_mapUpdateAttribute[5] = "EXT4";

    m_newPit.m_horizontalHeader << QString("Partition Name") << QString("Binary Type") << QString("Device Type") << QString("Id")
            << QString("Partition Type") << QString("File System") << QString("Start Block") << QString("Block Number")
            << QString("File Offset") << QString("File Size")  << QString("File Name") << QString("Delta Name");

It is new (v2) if all of the partitions have the same block size, old (v1) otherwise.

:thinking:

enum Type {
    TYPE_UNKNOWN,
    TYPE_LOKE,  // Galaxy S+
    TYPE_ODIN,  // Galaxy SII
    TYPE_PROTO_MJOLNIR,
    TYPE_MJOLNIR2,
    TYPE_PLATFORM,
    TYPE_ENUM_SIZE
};

Mjolnir is not available on usual devices. It seems to be used internally.
Also, Loke and Odin bootloaders seem to be different?

@Grimler91

About the PIT format, some devices don't have COM_TAR2.
For instance here's a GT-I9100 PIT: https://git.replicant.us/replicant/vendor_replicant-data/tree/devices/PIT/GT-I9100G/stock/16G.pit
Denis.


runtimeCaching doesn't use the directoryIndex option

Library Affected:
workbox-runtime-caching
Browser & Platform:
Google Chrome 72.0
Issue or Feature Request Description:
runtimeCaching doesn't seem to use the directoryIndex option.
I want to serve and cache /index.html with runtimeCaching networkFirst approach, for all the routes ending in /.
Using urlPattern: 'index.html' doesn't seem to work at all, while using urlPattern: /\/$/, makes every different pathname ending in / to be cached separately.
generateSW config
{
    skipWaiting: true,
    clientsClaim: true,
    exclude: [
        /\.map$/,
        /^manifest.*\.js$/,
        'index.html'
    ],
    runtimeCaching: [
    {
        urlPattern: '/\/$/',
        // Apply a network-first strategy.
        handler: 'networkFirst',
    }]
}

service-worker.js
/**
 * Welcome to your Workbox-powered service worker!
 *
 * You'll need to register this file in your web app and you should
 * disable HTTP caching for this file too.
 * See https://goo.gl/nhQhGp
 *
 * The rest of the code is auto-generated. Please don't update this file
 * directly; instead, make changes to your Workbox build configuration
 * and re-run your build process.
 * See https://goo.gl/2aRDsh
 */

importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js");

importScripts(
  "/precache-manifest.32b375c53995d3f7716830693a179759.js"
);

workbox.core.setCacheNameDetails({prefix: "web"});

workbox.skipWaiting();
workbox.clientsClaim();

/**
 * The workboxSW.precacheAndRoute() method efficiently caches and responds to
 * requests for URLs in the manifest.
 * See https://goo.gl/S9QRab
 */
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

workbox.routing.registerRoute("index.html", workbox.strategies.networkFirst(), 'GET');

runtimeCaching doesn't seem to use the directoryIndex option.

Yup, directoryIndex only applies to precaching.

I want to serve and cache /index.html with runtimeCaching networkFirst approach, for all the routes ending in /.

You're going to need to write a custom handler to do that. Based on what you describe, the following would work:
runtimeCaching: [{
    urlPattern: new RegExp('/$'),
    handler: ({event}) => {
      const strategy = new workbox.strategies.NetworkFirst();
      return strategy.makeRequest({
        request: '/index.html',
        event,
      });
    },
  }],

Yes, the network request made as part of NetworkFirst will honor any HTTP Cache-Control headers by default. So you need to make they're properly configured—that's important to do anyway, regardless of whether there's a service worker or not.

@jeffposnick thanks already for this snippet !
I tried to use it with GenerateSW method provided by the webpack plugin, but the generated service worker file is missing a synchronous loading of the workbox-strategies module, so out-of-the-box, this solution failed.
I tried to find a solution by looking at the runtimeCaching options of the plugin, but doesn't seems to be currently possible.
As a workaround for now, I manually added workbox.loadModule('workbox-strategies'); to the generated file.

Ah, yes, you're running into https://developers.google.com/web/tools/workbox/modules/workbox-sw#avoid_async_imports

@guins @jeffposnick how do you import workbox in the GenerateSW configuration file?


Add test for app token sub claim & introspection resp username claim

$subject
Related issues:

https://github.com/wso2/product-is/issues/20917

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/11248360820

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/11248360820
Status: failure

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/11248360820

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/11248360820
Status: success


The t form does not style with the bootstrap styles.

Version

tcomb-form v0.9.16
react v5.5.4

Expected behaviour
When I create a t form react component, it should have the bootstrap styling.
e.g. the button should have the primary colours etc.
Actual behaviour
none of the styling comes through.
Steps to reproduce

Here is my App.js

import React, { Component } from 'react';
import t from 'tcomb-form';

const Form = t.form.Form;

// define your domain model with tcomb
// https://github.com/gcanti/tcomb
const Person = t.struct({
  name: t.String,
  surname: t.String
});

class App extends Component {

  save() {
    // call getValue() to get the values of the form
    var value = this.refs.form.getValue();
    // if validation fails, value will be null
    if (value) {
      // value here is an instance of Person
      console.log(value);
    }
  }

  render() {
    return (

        <Form
          ref="form"
          type={Person}
        />
        <button onClick={this.save}>Save</button>

          <button type="submit" className="btn btn-primary">Send</button>

    );
  }
}

export default App;

The UI is completely unstyled? Did you include the bootstrap css in your page?

Thanks. I added the css to my app and it worked. Sorry, i didnt know that. Is that in the documentation? Do I need to also include the bootstrap js?
I added bootstrap 3 css. You are using bootstrap 3 right? Any plans to move to bootstrap 4 or other any other theme/ui kit?
Thanks alot.

Do I need to also include the bootstrap js?

No, only the css is required

Any plans to move to bootstrap 4 or other any other theme/ui kit?

There are semantic ui templates https://github.com/gcanti/tcomb-form-templates-semantic.


Support cpio archive format

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

Allow to use cpio(.gz) files to initialice a docker container. Besides the file format, the behaviour would be the same as with tar files.

Is this for docker import/export, save/load?

Yes, but mostly for import. cpio is the format used by Linux kernel initram.

Adding support for cpio would be quite involved because there's no maintained cpio Go package right now. Adding cpio support using the cpio command seems quite simple, but this requires implementing support for cpio throughout the Docker code, writing tests and doing maintenance over time.
cpio is used less than tarballs and I don't think it's worth the effort. There are many other improvements to make and issues to fix before implementing something like this.
Is there a reason behind not extracting the cpio archive somewhere, creating a tar archive and importing that? I think this could even be done using a Docker container which accepts a cpio archive on stdin and pipes out a tar archive on stdout. This is simple enough to implement today and it's much easier than implementing cpio support for docker import and docker export.
I'll close this for the time being for the following reasons:

this ca be easily achieved using a Docker container which converts cpio archives to tarballs and tarballs to cpio archives
this isn't a feature which has been requested before, it has only been requested once
cpio archives are less popular than tarballs and they're used mostly for the kernel initramfs
the effort required to implement and maintain the code for this feature would outweigh the gain of having this feature

Please feel free to comment. This feature request can be opened again.


Help: Permanently run Grobid service

In the documentation it's described, that I can run the Grobid service by using the maven: mvn jetty:run-war The service stops, when I close the terminal. But how do I permanently run the service? I installed Jetty and created a /opt/jetty/webapps/grobid.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/grobid</Set>
  <Set name="war">/webapps/grobid/grobid-service/target/grobid-service-0.4.1-SNAPSHOT.war</Set>
</Configure>

In this configuration file I set the war to the built .war-file in the grobid-service/target/ directory. Now I can successfully access http://localhost:8080/grobid/. But when I want to access for instance localhost:8080/grobid/processFulltextDocument, I receive a 405 with the Jetty message Method Not Allowed.

Am I on the right track? 2) If yes, what is the correct configuration?

Hello!
The service can run like any web applications, by deploying the war with a web application server, e.g. Tomcat, JBoss, Glassfish, etc. and you would have then something permanent, that can be  administrated, secure, etc.
If you want to use jetty and have no production constraints (so quick and dirty is ok ;), you can always simply use maven and detached the process from your terminal, e.g.:

nohup mvn -Dmaven.test.skip=true jetty:run-war &

For deploying the war on an separate jetty application server, your config file looks fine but I have very few experience with jetty, so I am not reliable at all :)
Something to remember: as explained in the GROBID service manual, you need to set variables for the paths to the properties files and to GROBID_HOME before starting the service (for Jetty, I guess in this descriptor XML file). More simply, it can also be done manually in the file web.xml before creating the deployable war.


Make spacing in configuration file consistent

I noticed that the spacing in the configuration file is inconsistent. Most options appear to use single spacing around the ‘=’ assignments. However, few options didn’t adhere to this format.
This makes the spacing consistent across all options.

LGTM

Codecov Report

Merging #3186 into master will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3186      +/-   ##
==========================================
+ Coverage    34.7%   34.72%   +0.02%
==========================================
  Files         276      276
  Lines       39974    39974
==========================================
+ Hits        13873    13881       +8
+ Misses      24104    24099       -5
+ Partials     1997     1994       -3

Impacted Files
Coverage Δ

models/repo.go
41.47% <0%> (+0.18%)
:arrow_up:

models/repo_indexer.go
51.94% <0%> (+0.97%)
:arrow_up:

modules/process/manager.go
81.15% <0%> (+4.34%)
:arrow_up:

Continue to review full report at Codecov.

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

LGTM

Thanks, @lafriks and @ethantkoenig, for reviewing this so quickly!


UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfd in position 0: invalid start byte

I am trying to run bash ./scripts/TimeLLM_ETTh1.sh up on google colab.  The only modification I made was to use
deepspeed==0.12.0 (and not deepspeed==0.13.0) that you have in your requirements.txt file.
!bash -x ./scripts/TimeLLM_ETTh1.sh

model_name=TimeLLM
train_epochs=100
learning_rate=0.01
llama_layers=32
master_port=00097
num_process=8
batch_size=24
d_model=32
d_ff=128
comment=TimeLLM-ETTh1
accelerate launch --multi_gpu --mixed_precision bf16 --num_processes 8 --main_process_port 00097 run_main.py --task_name long_term_forecast --is_training 1 --root_path ./dataset/ETT-small/ --data_path ETTh1.csv --model_id ETTh1_512_96 --model TimeLLM --data ETTh1 --features M --seq_len 512 --label_len 48 --pred_len 96 --factor 3 --enc_in 7 --dec_in 7 --c_out 7 --des Exp --itr 1 --d_model 32 --d_ff 128 --batch_size 24 --learning_rate 0.01 --llm_layers 32 --train_epochs 100 --model_comment TimeLLM-ETTh1
[2024-02-20 23:12:01,131] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
The following values were not passed to accelerate launch and had defaults used instead:
--num_machines was set to a value of 1
--dynamo_backend was set to a value of 'no'
To avoid this warning pass in values for each of the problematic parameters or run accelerate config.
[2024-02-20 23:12:29,074] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,090] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,127] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,251] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,312] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,322] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,343] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-02-20 23:12:29,567] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/accelerate/utils/deepspeed.py", line 52, in init
config_decoded = base64.urlsafe_b64decode(config_file_or_dict).decode("utf-8")Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/accelerate/utils/deepspeed.py", line 52, in init
config_decoded = base64.urlsafe_b64decode(config_file_or_dict).decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfd in position 0: invalid start byte

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/content/drive/MyDrive/Colab_Notebooks/Time-LLM/run_main.py", line 100, in
Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/accelerate/utils/deepspeed.py", line 52, in init
config_decoded = base64.urlsafe_b64decode(config_file_or_dict).decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfd in position 0: invalid start byte
Traceback (most recent call last):
During handling of the above exception, another exception occurred:
bash-TimeLLM_ETTh1.sh.txt

Here is line # 100 of run_main.py (as referenced above):
98 ->   args = parser.parse_args()
99 ->   ddp_kwargs = DistributedDataParallelKwargs(find_unused_parameters=True)
100 -> deepspeed_plugin = DeepSpeedPlugin(hf_ds_config='./ds_config_zero2.json')
101 -> accelerator = Accelerator(kwargs_handlers=[ddp_kwargs], deepspeed_plugin=deepspeed_plugin)

I forgot to upload this .json file.  It is there now.  Issue resolved.  Closing this.


Update google_colab_demo.ipynb with go 1.23.1

The Colab demo currently fails in the Shining cell with
go: downloading github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b
go<EMAIL_ADDRESS>requires go >= 1.23 (running go 1.22.2)
Updated the import cell to wget 'https://go.dev/dl/go1.23.1.linux-amd64.tar.gz'

DId you manage to make it work ? This is awesome!

Yeah, reloaded it with the new version and it seems happy. First few cells in the demo all ran fine. I didn't run through the entire notebook but it looks good.
Here's my fork: https://colab.research.google.com/drive/1kZYOWZ6fseZZLlP2O7S88TqxwdUQmulq?usp=sharing

FYI, cell 5 in the notebook seems to fail still but I don't think that's related to the Go version. I get:

Cell[5]: Line 21 ./main.go:107:46: cannot use true (untyped bool constant) as types.Bool value in struct literal
Cell[5]: Line 25 ./main.go:111:17: cannot use true (untyped bool constant) as types.Bool value in struct literal

I wonder what could be causing errors ... But we can figure it out later.
I actually thought the Google Colab was no longer working --- every now and then things seems to change and the hack to make it run another kernel stops working.
Thanks for fixing it!

Found it ... something must have changed in the go-echarts, replacing types.Bool(true) by opts.Bool(true) seems to make it work though.


Add resetting checkbox state when all-selected.

This PR should reset the checkbox selected state to an empty Set(). This allows deselection across pages. See #173 for more details on the problem.

Thanks @imballinst! I installed the beta package and tested it with my project. It runs just like I wanted 👍 so thank you very much 😄
There is one small bug involving the checkbox in the header though. If you select a few rows spread across a few pages, the header checkbox will eventually go out of sync with the rows being displayed. You can replicate this in your sandbox as well:

Select a few rows (selected 2)

Go to next page. The rows are empty but the header checkbox has a - sign that only appears when some rows are selected.

Click on header checkbox to select all on the current page:

Go back to first page, all the checkboxes look fine.

Click header checkbox to select all on the page. Checkbox now has the - icon which is strange. Usually, selecting all would show the ☑ icon.

Click header checkbox again to deselect all on the page. Checkbox now has the ☑ icon which is strange since that icon only shows when all the rows on the page are selected:

Clear Selection thankfully reset everything normally:

Normally, if I click on header checkbox to select all rows, the header checkbox will look like this (☑  icon):

In summary: the header checkbox is not reflecting the state of the selected rows of the current page.
Suggested solution: perhaps change the header checkbox state by checking whether the rows being shown are in the Set()? This way, the header checkbox is always limited to the current row only. I don't know whether this will be computationally expensive though.

@Thomas-Boi hmmmm, I see.  I think it's because of this line:
https://github.com/imballinst/react-bs-datatable/blob/af2f336a2e34a8746a71f6c60377bf5b545a2009/src/helpers/checkbox.ts#L94-L100
I tried with this scenario:

Select 2 rows on the first page
Select 1 row on the second page
Since each page contains only 3 rows and currently number of selected row is 3, then 3 === 3, hence the table header checkbox becomes a ✅
If I select another row, then number of selected row is 4, then 4 !== 3, hence the table header checkbox becomes indeterminate.

I'm actually thinking on swapping these lines:
https://github.com/imballinst/react-bs-datatable/blob/main/src/helpers/hooks.ts#L157-L162
That way, we don't need the callback function for the handler like in this PR. For example, I can just pass this to the DatatableWrapper:
<DatatableWrapper
  headers={headers}
  body={pages[pageIdx]}
  checkboxProps={{
    onCheckboxChange: (result) => {
      result.nextCheckboxState = {
        selected: new Set(),
        state: "all-selected"
      };
    }
  }}
>

What do you think about it? That way, all checkbox changes for uncontrolled tables are centralized in the checkboxProps.onCheckboxChange. There, we can also "compute" for controlled-but-uncontrolled table states, for example, if we have data on the data count on the backend, then we can "override" the state there ourselves.
nextCheckboxState.state = nextCheckboxState.selected.size === 0 ? 'none-selected' : nextCheckboxState.selected.size === totalDataInBackend ? 'all-selected' : 'some-selected'

Regarding this chunk of code:
<DatatableWrapper
  headers={headers}
  body={pages[pageIdx]}
  checkboxProps={{
    onCheckboxChange: (result) => {
      result.nextCheckboxState = {
        selected: new Set(),
        state: "all-selected"
      };
    }
  }}
>

I think this could work as long as I can still use the default functionality after I override some parts of the nextCheckboxState.

There, we can also "compute" for controlled-but-uncontrolled table states, for example, if we have data on the data count on the backend, then we can "override" the state there ourselves.
nextCheckboxState.state = nextCheckboxState.selected.size === 0 ? 'none-selected' : nextCheckboxState.selected.size === totalDataInBackend ? 'all-selected' : 'some-selected'

This could work as well. For my case, I would like the header checkbox to be per page (e.g. page 1 all selected => header should be ☑ , page 2 empty => header should be empty). In that case, I'd have to manually check the data I'm displaying against nextCheckbox.selected and see whether it's all-selected, some-selected or none-selected, right?
Something like:
let count = getCountOfRowInSelected(body, nextCheckboxState.selected)
nextCheckboxState.state  = count === 0 ? 'none-selected' :  nextCheckboxState.selected.size ===  count ? "all-selected" : 'none-selected`

If I can do the above lines of code, I think your approach should work great for me 👍

In that case, I'd have to manually check the data I'm displaying against nextCheckbox.selected and see whether it's all-selected, some-selected or none-selected, right?

Exactly, yes! Alright, let me try working on it tonight my time and I'll see if I can publish a beta for you to try.

After experimenting a bit, I think this is very complex to do in uncontrolled table, since we may have filter, pagination, and sort which all may change the rows in a page. I'm not sure if it's worth it if we specify it that deep.
Would it be possible with the current implementation if you use a controlled table instead? So you could control all the filter/sort/pagination/checkbox states and no need to rely on the internals of the table.

@imballinst that's fine with me as well! I just need a way to hook into the table's functionality without overriding everything if that makes sense. I remember trying out the controlled checkbox state but couldn't get the onCheckboxChange callback working. Is that functioning now? Can I still use the underlying default functionality (updating the icons etc.) even when I "control" certain parts?

@Thomas-Boi hmmmm, that's a good point. Let me check in a sandbox and I try it myself first.

Here's my experiment so far: https://codesandbox.io/s/dark-snowflake-9srvdz?file=/src/App.tsx. Currently I think it's blocked by these lines: https://github.com/imballinst/react-bs-datatable/blob/main/src/helpers/checkbox.ts#L50-L58. So on top of handling controlled table event for select/unselect all, I also need to handle the selection one-by-one.
I'll try to update the package for that part and I'll update my sandbox after. Probably around tonight my time as usual, though.

No problem @imballinst ! Thank you for spending time on this, I really appreciate it.

hi @Thomas-Boi, could you help verify my controlled table example here? Thanks! https://codesandbox.io/s/dark-snowflake-9srvdz?file=/src/App.tsx
The keys are in this part:
const onCheckboxChange: CheckboxOnChange = (result, _event) => {
  // Manually modifying these below will cause unexpected behavior
  // when we select a checkbox one-by-one in controlled mode.
  if (
    data.every((item) => result.nextCheckboxState.selected.has(item.name))
  ) {
    result.nextCheckboxState.state = "all-selected";
  } else {
    result.nextCheckboxState.state = "none-selected";
  }

  setCheckboxState((oldState) => ({
    ...oldState,
    [result.checkboxProp]: result.nextCheckboxState
  }));
};

and this:
async function getData() {
  const response = await fetchControlledMockData({
    filter,
    sortState,
    currentPage,
    rowsPerPage
  });

  setCheckboxState((oldState) => ({
    checkbox: {
      selected: oldState.checkbox.selected,
      state: response.data.every((item) =>
        oldState.checkbox.selected.has(item.name)
      )
        ? "all-selected"
        : "none-selected"
    }
  }));

  // ...
}

Hi @imballinst ,
Your code makes sense and I tested it out. Unfortunately, I couldn't get the checkbox in the <TableBody> to work. The one in the <TableHeader> works great and you can verify this with the console.log in this [sandbox[(https://codesandbox.io/s/twilight-tree-0hnfey?file=/src/App.js). Once both the body and the header modifies the same checkbox state, I think I'll be good to go.

hi @Thomas-Boi, could you try it out in this sandbox? https://codesandbox.io/s/epic-herschel-uc6285?file=/src/App.js
I made few adjustments:
// Pass controlled parameters to useCreateCheckboxHandlers, so that it'll be using our data and handlers instead of the built-in ones (for uncontrolled)
const { createBulkCheckboxClickHandler } = useCreateCheckboxHandlers({
  checkboxState,
  data,
  filteredDataLength: pages.flat().length,
  onCheckboxChange
});

// Lift the checkbox state up so that it's in the same level with the pagination state.
// Then, on page change, check if all rows in the page exist in the selected (to determine all selected or none selected)
const nextBody = pages[targetPage];

setBody(nextBody);
setCheckboxState((oldState) => ({
  checkbox: {
    selected: oldState.checkbox.selected,
    state: nextBody.every((item) =>
      oldState.checkbox.selected.has(item.id)
    )
      ? "all-selected"
      : "none-selected"
  }

Also I think there was a typo in the id prop that should be used: it was name instead of id. Let me know if there are things that are still incompatible. Thanks!

Hi @imballinst ,
Thank you so much for your help! Your beta version works with my project and it does exactly what I wanted. I definitely forgot that using <TableRow> will override the props in <TableBody>.
Thank you for your time and this looks and work great 😄

Sounds good! I'll merge this PR, then. Thanks for your confirmation @Thomas-Boi!


Dropdown in TD not giving right value.

Hi,
I'm not able to get the proper value of dropdown that I added to one of the td.
Heres the fiddle: http://jsfiddle.net/sreedevi/qbuwd3k7/

      First Name
      Last Name
      Points
      aggr

      Jill
      Smith
      50
      <select type="text" class="gf-form-input" style="width:110px;">
													 	<option value="avg">AVG</option>
                            <option value="count">COUNT</option></select>

JSON output:
[{"First Name":"Jill","Last Name":"Smith","Score":"disqualified","aggr":"AVG\n COUNT"}]
Please help.
Thanks
Sree

Sorry that I posted the question before doing a research. Found the answer:
				  textExtractor : {
					    3: function(cellIndex, $cell) {
					      return $cell.find('option:selected').text();
					    }
					  }

Thanks for the plugin.


Use ANSI SQL parser

Pull Request Test Coverage Report for Build 303

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at ?%

Totals

Change from base Build 293:
0.0%

Covered Lines:

Relevant Lines:
0

💛  - Coveralls

Pull Request Test Coverage Report for Build 303

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at ?%

Totals

Change from base Build 293:
0.0%

Covered Lines:

Relevant Lines:
0

💛  - Coveralls


Create Registry in Docker forTravis CI

Signed-off-by: TomSweeneyRedHat<EMAIL_ADDRESS>Creates and runs a registry using Docker inside of Travis CI that the Buildah Authenitcation tests can use.  There's a bunch of extraneous stuff doing some Docker stuff that I'd like to keep in for now until I can get the certificates in play.  Currently the authentication test turn off tls verification.  Will be changing that in a follow up submit.  Once that's all settled, I'll do something similar in kpod so we can test kpod login and other functions there.

Looks like Travis failed on sudo apt-get -qq update. What does it fail on when it comes to registries @TomSweeneyRedHat?

@lsm5 I updated the .travis.yml only with comments.  Travis CI is failing with:
The command "sudo apt-get -qq update" failed and exited with 100 during .
Any thoughts?

Try dropping the -qq so that we'll get an error message when it fails.  I don't really have strong feelings about suppressing the output from apt-get; it's just what I'd seen in examples.

Good thought @nalind, just dropped it.

@TomSweeneyRedHat  I am having the same problem in https://github.com/kubernetes-incubator/cri-o/pull/1015

Yeah!  Docker registry seems to be up in Travis.  Let's see if I can run authentication tests against it.

@TomSweeneyRedHat I think this PR needs some work.

@rhatdan, I've been poking at it.  It's a pain as you tweak it then have to wait for a github cycle to see the results.  Finally got Travis to talk to the Docker Registry, think I'm getting close to registry too.  One of my PTO projects.

Green lights!  Docker registry is running in Travis.  Would like to get this in if possible.  There's some extraneous Docker commands and other info like stuff that I'm doing, I'd like to keep those in until the follow up PR for certificates goes in.

Well remove the WIP first.

Well Darn it, thought I had.  Hope it sticks this time.

@TomSweeneyRedHat You have to change the commit message on the PR as well.  It says WIP and DONOTMERGE.

@rhatdan I did a "git commit --amend -s" this time and changed the verbiage inside the editor and saved that then did a fetch/rebase/push.  Holler if I need to tweak it otherwise, I think it's changed up now.

@rh-atomic-bot r+


add environment variables support for provider config

closes #249

@ehsandeep this PR just implements variable support for provider config for which the logic is local to all the projects and not related to goflags.


Slow local downloads from Blob Storage with --list-of-files

Which version of the AzCopy was used?
10.6.0
Which platform are you using? (ex: Windows, Mac, Linux)
Windows 10
(but also experienced the same slowness on Ubuntu 18.04)
What command did you run?
azcopy cp "https://<account>.blob.core.windows.net/<container>?<sas_token>" "G:\path\to\folder" --list-of-files "G:\path\to\fileslist.txt"

In my particular case, the "fileslist.txt" contained ~23,000 blob names.
What problem was encountered?
Azcopy spends an exorbitant amount of time in the "scanning" phase, which it does for every 10,000 files.
INFO: Scanning...
INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support

# azcopy spends about 30 minutes here, before proceeding to download the first file

Job d37a216c-fd3a-a34d-5762-bdad9d6d7d12 has started
Log file is located at: C:\Users\warbler\.azcopy\d37a216c-fd3a-a34d-5762-bdad9d6d7d12.log

100.0 %, 10000 Done, 0 Failed, 0 Pending, 0 Skipped, 10000 Total (scanning...),

# after the 1st batch of 10,000 files, azcopy spends another 30 minutes here, before proceeding to download the 2nd batch of 10,000 files, and so on

How can we reproduce the problem in the simplest way?
Run the command
azcopy cp "https://<account>.blob.core.windows.net/<container>?<sas_token>" "G:\path\to\folder" --list-of-files "G:\path\to\fileslist.txt"

with a list of files containing over 10,000 files.
Have you found a mitigation/solution?
I found it to be much faster to download files using the Azure Blob Storage Python SDK. However, that is less than ideal because I have to install the SDK and also write a script to do so.
I understand that the Wiki page documenting this hidden --list-of-files flag notes that it has performance issues especially for downloading files, but I wanted to create this issue in the hopes of bringing more attention to its slowness.

Yes, I also have this issue. In my case the file-list contains 10.000 paths, for me it's almost faster to just copy the entire dataset and then removed the unwanted files...

I guess the issue is that for every path in the list they need to make an extra requests to get blob properties (1 extra request per blob).
What would be more optimal is to list the entire container, 5.000 blobs per list request. If your container has 5.000.000 blobs, it is still only 1.000 requests - it is in the worst case when there is no common prefix across blobs in the list. Therefore, if you copy 10K blobs, listing the whole container will only be slower if it has 25M blobs or more.
Playing with If-Modified-Since and If-Unmodified-Since headers should help avoid making list requests to the destination in case if --overwrite option is ifSourceNewer.

Having the same issue here, 2 years later, any improvement coming?


md-data-table-pagination md-label doesn`t go well with ng-translate

I'm using ng-translate to localize my application and cant manage to make md-label work with the translate filter. I think the problem lies in the way two-way bind is used in this parameter to pass both the label and the 'of' string in a object.
I suggest the md-label be split into two parameters and be received by value ('@' instead of '=') so that mustache operator can be applied.
Here's a sample of how I`d expect it to work.
 <md-data-table-pagination
    ...
    md-label-text="{{ 'PAGINATION_ROWS_PER_PAGE' | translate }}"
    md-label-of="'{{ 'PAGINATION_OF' | translate }}">
</md-data-table-pagination>

Does this proceed, or am I missing something?

Hi Bruno, you could use something like that:
<md-data-table-pagination   ...   md-label="pagination.label">

... and define the "pagination" variable in your controller:
angular.module('app').controller('MyController', [ '$scope', '$translate', function( $scope, $translate ){
....
$scope.pagination = {
label : {
text : $translate.instant( 'PAGINATION_ROWS_PER_PAGE' ),
of   : $translate.instant( 'PAGINATION_OF' )
}
};
...
}]);

I did that and it worked! Thanks! Still ita a point of improvement i guess. Thanks for the nice lib anyway =)

I just noticed that I replied to a closed ticket so that's why I place a comment here also.
Currently there is no 2-way binding currently. Switching the language of the website will not switch the language of the mdLabel. Only on refreshing the page the translation is triggered.
This is our code:
vm.updateTranslations();
$rootScope.$on('$translateChangeSuccess', updateTranslations);

function updateTranslations(event) {

            $translate(['GENERAL.PAGINATION.PAGE', 'GENERAL.PAGINATION.ROWS_PER_PAGE', 'GENERAL.PAGINATION.OF']).then(function (translations) {
                vm.paginationLabel.page = translations['GENERAL.PAGINATION.PAGE'];
                vm.paginationLabel.rowsPerPage = translations['GENERAL.PAGINATION.ROWS_PER_PAGE'];
                vm.paginationLabel.of = translations['GENERAL.PAGINATION.OF'];
            });
        }

Changing the language will trigger the updateTranslations function but will not update the label.
Could you please fix this in a future release? Thanks.

I'm having the same issue and I need instant translation whenever the user switches the language.

+1

@volmerf @karlhaas @VivienZo I just released v0.10.0 that should allow you to change the label without reloading the page.

Great! Thank you @daniel-nagy

Thx @daniel-nagy. Will update and test asap.

@daniel-nagy Should this issue now be fixed? I have still the same problem. The label will only be changed with reloading the page.


My first Test issue

this test issue is for my practice. "please ignore it"

If done please remove it

Please don't use this repository for such tests. Use your own repository or fork instead.


Unable to install the GenericContainer component

When I try to install the GenericContainer element, I get the following error:
Make Error at src/GenericContainer/cmake_install.cmake:41 (file):
  file INSTALL cannot find
  "/home/gromualdi/robot-code/bipedal-locomotion-controllers_estimators/src/GenericContainer/include/BipedalLocomotionControllers/GenericVector/TemplateHelpers.h":
  No such file or directory.
Call Stack (most recent call first):
  src/cmake_install.cmake:42 (include)
  cmake_install.cmake:69 (include)

The problem can be easily fixed with the following patch
diff --git a/src/GenericContainer/CMakeLists.txt b/src/GenericContainer/CMakeLists.txt
index 026ec88..e4203de 100644
--- a/src/GenericContainer/CMakeLists.txt
+++ b/src/GenericContainer/CMakeLists.txt
@@ -5,9 +5,7 @@
 # set target name
 add_bipedal_component(
     NAME                   GenericContainer
-    PUBLIC_HEADERS         include/BipedalLocomotionControllers/GenericContainer/Vector.h include/BipedalLocomotionControllers/GenericVector/TemplateHelpers.h
+    PUBLIC_HEADERS         include/BipedalLocomotionControllers/GenericContainer/Vector.h include/BipedalLocomotionControllers/GenericContainer/TemplateHelpers.h
     PUBLIC_LINK_LIBRARIES ${iDynTree_LIBRARIES}
     SUBDIRECTORIES   tests
     IS_INTERFACE     ON)

Whoops :sweat_smile:


Embedded PowerShell window in the task bar

📝 Embedded PowerShell window in the taskbar
Just like search, we can embed the PowerShell window itself into the taskbar (of course have it turned on only when the users specify).
This would be very hand in a situation when the user just wants to run a script and leave it be, or perform any one-line (looking at git users 👀) commands. Could also add an option to switch the window with 'run' (options are great, although I don't see the use-case here).

If you'd like to see this feature implemented, add a 👍 reaction to this post.

This would be neat.  I'd say this would be leveraging Windows Terminal personally. this would be highly complex but insane positively.

Pretty sure deskband is the API needed
https://docs.microsoft.com/en-us/samples/microsoft/windows-classic-samples/deskbands/

Going to actually track this against https://github.com/microsoft/terminal/issues/653.  This will do what you're asking for and is built into Terminal.

📝 Embedded PowerShell window in the taskbar
Just like search, we can embed the PowerShell window itself into the taskbar (of course have it turned on only when the users specify).
This would be very hand in a situation when the user just wants to run a script and leave it be, or perform any one-line (looking at git users 👀) commands. Could also add an option to switch the window with 'run' (options are great, although I don't see the use-case here).

If you'd like to see this feature implemented, add a 👍 reaction to this post.

This is exactly what I have been looking for. How did you do that?

📝 Embedded PowerShell window in the taskbar
Just like search, we can embed the PowerShell window itself into the taskbar (of course have it turned on only when the users specify).
This would be very hand in a situation when the user just wants to run a script and leave it be, or perform any one-line (looking at git users 👀) commands. Could also add an option to switch the window with 'run' (options are great, although I don't see the use-case here).

If you'd like to see this feature implemented, add a 👍 reaction to this post.

This is exactly what I have been looking for. How did you do that?

It's just a mockup for my proposal, afaik its not implemented yet. @koder101


cannot open </usr/bin/gnuplot -persist > /dev/null 2>&1> in mode w

Hi,
gnuplot is great :-)
After running for a few minutes, or perhaps for a few plots, I get:
^C/home/user/torch/install/bin/luajit: cannot open </usr/bin/gnuplot -persist > /dev/null 2>&1> in mode  w at /home/user/git/torch7/lib/TH/THDiskFile.c:585
stack traceback:
	[C]: at 0x7f5fdc71ce10
	[C]: in function 'PipeFile'
	/home/user/torch/install/share/lua/5.1/gnuplot/gnuplot.lua:134: in function 'getfigure'
	/home/user/torch/install/share/lua/5.1/gnuplot/gnuplot.lua:736: in function 'filefigure'
	/home/user/torch/install/share/lua/5.1/gnuplot/gnuplot.lua:754: in function 'pngfigure'

Simple script that reproduces the problem:
require 'paths'
require 'gnuplot'

local d = torch.Tensor(2000):uniform()

for i=1,2000 do
  gnuplot.pngfigure('/tmp/foo.png')
  gnuplot.plot(d)
  gnuplot.plotflush()
end

Since the problem seems to be related more to how often I call the inner loop, rather than elapsed time, I guess there is something I need to clean up after each plot perhaps?

You should have gnuplot.close(ff) where ff is return value from gnuplot.pngfigure. Every call to pngfigure creates a new figure, so you end up having too many gnuplot processes and pipes for each one of them.

Great!  Thanks! :-)

Great!  Thanks! :-)


Linux build does not have an icon

Latest develop branch, as of filing this message, built with Wails CLI v2.0.0-beta.32, running Ubuntu / Gnome - the app has no icon.
I don't consider this a blocker for release.

❯ wails build -f -clean
Wails CLI v2.0.0-beta.32

App Type:               desktop
Platforms:              linux/amd64
Compiler:               /usr/bin/go
Build Mode:             Production
Skip Frontend:          false
Compress:               false
Package:                true
Clean Build Dir:        true
LDFlags:                ""
Tags:                   []

Building target: linux/amd64
----------------------------
  - Installing frontend dependencies:
    npm WARN EBADENGINE Unsupported engine {
    npm WARN EBADENGINE   package<EMAIL_ADDRESS>    npm WARN EBADENGINE   required: { node: '^16.13.2' },
    npm WARN EBADENGINE   current: { node: 'v17.5.0', npm: '8.4.1' }
    npm WARN EBADENGINE }
    npm WARN deprecated<EMAIL_ADDRESS>See https://github.com/lydell/source-map-resolve#deprecated
    npm WARN deprecated<EMAIL_ADDRESS>Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
    npm ERR! code ERR_SOCKET_TIMEOUT
    npm ERR! network Socket timeout
    npm ERR! network This is a problem related to network connectivity.
    npm ERR! network In most cases you are behind a proxy or have bad network settings.
    npm ERR! network
    npm ERR! network If you are behind a proxy, please make sure that the
    npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/edd/.npm/_logs/2022-02-23T11_46_54_432Z-debug-0.log

Error: %!(EXTRA string=exit status 1)

If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthony

vegawallet-desktop on  develop [!] via 🐹 v1.17 took 15s
❯ nvm use 16
Now using Node v16.14.0 (npm 8.3.1) ~/.local/share/nvm/v16.14.0/bin/node

vegawallet-desktop on  develop [!] via 🐹 v1.17
❯ wails build -f -clean
Wails CLI v2.0.0-beta.32

App Type:               desktop
Platforms:              linux/amd64
Compiler:               /usr/bin/go
Build Mode:             Production
Skip Frontend:          false
Compress:               false
Package:                true
Clean Build Dir:        true
LDFlags:                ""
Tags:                   []

Building target: linux/amd64
----------------------------
  - Installing frontend dependencies: Done.
  - Compiling frontend: Done.

  - Packaging application: Done.
Built '/home/edd/src/vega/vegawallet-desktop/build/bin/Vegawallet' in 43.134s.

If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthony

This requires to distribute a .desktop file and the icon file along with the software. The .desktop file requires some paths to be set to locate the executable and icon files. The cleanest way to provide is to create an Linux installer of some sort.
Contribution welcome.

If we do something for this we should consider doing it as a wails contribution rather than just handling in the wallet


Add collate kwarg to DataLoader

Can you add more specific tests and add some for the DataLoader itself? E.g. (didn't test)
X = rand(10, 20)
d = DataLoader(X, collate=false, batchsize = 2)
for (i, x) in enumerate(d)
    @test x == [X[2i-1], X[2i]]
end

d = DataLoader(X, collate=true, batchsize = 2)
for (i, x) in enumerate(d)
    @test x == X[2i-1:2i, :]
end

d = DataLoader(X, collate=nothing, batchsize = 2)
for (i, x) in enumerate(d)
    @test x == X[2i-1:2i, :]
end

We should define  a custom type for testing the nothing vs true behavior.

Added the tests 👍

Codecov Report

Merging #89 (6dc61ff) into main (151ffa4) will increase coverage by 0.15%.
The diff coverage is 80.00%.

@@            Coverage Diff             @@
##             main      #89      +/-   ##
==========================================
+ Coverage   90.28%   90.44%   +0.15%
==========================================
  Files          13       13
  Lines         484      471      -13
==========================================
- Hits          437      426      -11
+ Misses         47       45       -2

Impacted Files
Coverage Δ

src/eachobs.jl
96.87% <80.00%> (-3.13%)
:arrow_down:

src/obstransform.jl
83.33% <0.00%> (-0.76%)
:arrow_down:

src/utils.jl
93.87% <0.00%> (-0.25%)
:arrow_down:

src/resample.jl
100.00% <0.00%> (ø)

src/Datasets/generators.jl
100.00% <0.00%> (ø)

src/parallel.jl
96.49% <0.00%> (+1.66%)
:arrow_up:

src/observation.jl
88.63% <0.00%> (+1.67%)
:arrow_up:

src/folds.jl
95.83% <0.00%> (+3.83%)
:arrow_up:

Continue to review full report at Codecov.

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


Item Stats tooltips incorrectly showing Superantipoison duration as 12 minutes

The actual duration is 6 minutes
Thanks to Gnomercey on Discord for reporting this

I was looking to fix this as my first contribution but I either can't seem to re-create this or it's already been fixed, just came here and drank a dose and it's coming up as 6 minutes:

this is in reference to the item stats tooltips, not the Timers plugin infobox. The code which defines these times is here: https://github.com/runelite/runelite/blob/master/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PotionDuration.java#L37


Add an API resource to get all bookings

Created resource for get method: /api/booking?start_date=[start_date]&end_date=[end_date]
If no arguments are given bookings from current day will be returned.
#10

Hi @JimMadge
Just a friendly reminder: Can you add hacktoberfest-accepted label to my PR?


Render to Texture

There is currently no way to render to texture in the three branch.

It should end up looking something like this

Can confirm, should end up looking something like that.


Fix init split logic in testable modules

Purpose
Fix init split logic in testable modules.
Fixes #18934
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

We need to write a test for this and can do after release. Create issue https://github.com/ballerina-platform/ballerina-lang/issues/18935 for track this.


Pipe proper CIDR to E2E test

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


Choose your own adventure in f#

How does this connect to http://brandewinder.com/2018/07/23/give-me-monsters-part-1/ ?

Perhaps : https://github.com/Freymaurer/PathfinderAttackSimulator


remove unnecessary const declarations

Since implementing the new variant_count crate's VariantCount Derive macro, many (all?) of the related const variables can be removed. Some will be easy, like TUTORIAL_STEP_SIZE, which is created once & used once in the same file.

Others will take a bit more work, like WORK_SIZE, which is imported in many files, so there will be more refactoring and risk of error.

most of these should probably be "if it compiles it works"
That's what I've really liked working with Rust on this project.

Fair enough. Also, doubling back on it, I think these const values give some nice explicit readability to the code. I'm going to close this one out.
 I have many years of professional "step in and tweak the code to adhere to standards and/or optimize".... so some of my poking around here is just bad habits -- good habits in the workplace; bad when I'm stepping on others' toes.
Thank you for being patient with me.


ENH: disable MPI detection (pointless) if ParHIP itself is disabled

when MPI is detected, report the include and library information.
On systems with multiple MPI installations, the cmake find MPI
follows a fixed order, irrespective of the current user environment.
On openSUSE (for example), this means it will detect libmpich first
and use that for linking, even if the environment is nominally
using open-mpi. At runtime there will be a ldd so version mismatch
and it will bail.
Better to inform people up-front about what they are actually
getting and mention the existence of the MPI_HOME env variable
which can be used to influence the cmake find MPI.

MPI is not pointless if ParHIP is not compiled. KaFFPaE (the evolutionary algorithm) still uses MPI.

That opens a lot of other question.
Which MPI does it use (and how)?
Since the cmake has MPI as "required", I guess this will prevent compilation on a machine without any MPI (I'm thinking here of RPM and debian builds).


AdMob iOS rootViewController issues

Hi there,
I am having a few issues with AdMob on iOS. Specifically, when instantiating an Interstitial Ad. It preloads successfully, but upon calling the show method, this seems to always throw the error:
{
    event: "adFailedToShowFullScreen",
    error: "Content Error: Cannot present from a nil view controller.",
    data: {}
}

This is being raised by the delegate: GADFullScreenContentDelegateImpl.prototype.adDidFailToPresentFullScreenContentWithError.
Any help would be greatly appreciated. Thanks.

Also, when attempting to preload the Interstitial from a different view.
The error is: Error: The provided view controller is not being presented.

For reference, I have found where this problem is occurring.
When calling topViewController() within the show() method of the InterstitialAd class (in index.ios), the top view controller is coming back as undefined.
I will try and put a fix in place, and open a PR.

Me too i have an issue with AdMob on iOS, with the normal banner. Its preloaded but when calling the methods to  show the ad the application throw this error in simulator and kill the app in Testflight.
Ad failed to load:  Error: You must set the rootViewController property of <GADInternalBannerView: 0x7faba07267e0; frame = (0 0; 414 100); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x600001fc8a40>> before loading a request.
Any one encounter the same or similar bug with Firebase/admob ?
Thanks !

@aymenelhajayed once the npm package has been updated, I believe this problem should resolve itself.
I experienced it previously when trying to use an adaptive banner size. The width/height of the rootViewController couldn't be determined so Google returns "No ad to show" as it can't find any adverts to fill in 0x0 pixels.
Alternatively, if this doesn't fix that issue, the guidance on this StackOverflow link might be of help.
https://stackoverflow.com/questions/39108558/admob-bannerview-request-error-no-ad-to-show

There are no ads for your ad unit id.
Check whether your ad unit id is proper or not.
You will get the same error if either your banner width/height is 0.
Make sure that your adUnitID is perfect.


use dehydrated -c -g for cron runs

As dehydrated bails out on errors and stops, it would be nice to have -g passed on to dehydrated to process the remaining entries in case of an API hickup at letsencrypt.
 --keep-going (-g)                Keep going after encountering an error while creating/renewing multiple certificates in cron mode

I do not see why this is required. If you setup the cronjob to run once a day as I recommend it will be done 24h later. If letsencrypt has a hickup it is safe to assume the issue is fixed by now. And dehydrated renews certificates by default if they expire in the next 30 days. So there are 30 tries until a cert is expired.


Path Information

Hello,
I have created a simple graph by using a distance matrix.
Below you can find the code.
from dijkstar import Graph, find_path
matrix = ...... (distance matrix is created here)
graph = Graph()
for i in range(size):
for j in range(size):
graph.add_edge(i, j, {'cost': matrix[i][j]})
cost_func = lambda u, v, e, prev_e: e['cost']
path = find_path(graph, 0, 6, cost_func=cost_func)
path
My question is, how am I able to learn the details of the founded path. There is a total cost, but I want to learn with which order of nodes I will get this cost. I want to learn the optimal order of nodes.
Thank you.

I suppose the problem may be related to the cost function that I used. I directly coppied from the documentation and I couldn't understand the usage of it.

find_path() returns a PathInfo object that has nodes, edges, costs, total_cost attributes, so you can access the ordered nodes with path.nodes.
Regarding the cost function, you don't need it if you're not dynamically computing costs. You could change your code to the following:
from dijkstar import Graph, find_path
matrix = ...... (distance matrix is created here)
graph = Graph()
for i in range(size):
    for j in range(size):
        graph.add_edge(i, j, matrix[i][j])
path = find_path(graph, 0, 6)
path


gridlock:0.2.0

I am submitting

[ ] a new package
[x] an update for a package

Description: Updated package to support the new par.spacing property.

Thanks!


VScode Disabling preview SVG badges with Some content has been disabled in this document

VSCode Version: Version 1.31.0 (1.31.0)
OS Version: macOS Mojave v 10.14.1

Steps to Reproduce:

Copy badge markdown from Continous Integration Platform and Paste it in a README.md. file
Press CMD+ SHIFT+ V to preview build badge.
Actual experience is an error message with Some content has been disabled in this document

Does this issue occur when all extensions are disabled?:
Yes

Duplicate of #68033

@mjbvz I had the feeling that you would mark the issue as a duplicate but it does not help when the duplicates of also do not have solutions.
Please know that some issues are closed without solutions.


iptables: Restricting to correct vlan, and adding GPFS port.

Further tightening of the firewall rules, and addition of a required GPFS port.

https://github.com/openmicroscopy/prod-playbooks/pull/107/files#diff-c4fd213fe44fcc72f487cf67bf9a6aa5R62 has been tested on ome-demoserver by running a rule-replace
[root@ome-demoserver ~]# iptables -L INPUT 7
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:6556 /* ansible[ome_ports] */
[root@ome-demoserver ~]# iptables -R INPUT 7 -p tcp -m tcp --dport 6556 -s <IP_ADDRESS>/24 -j ACCEPT
[root@ome-demoserver ~]# iptables -L INPUT 7
ACCEPT     tcp  --  vl34.net.lifesci.dundee.ac.uk/24  anywhere             tcp dpt:6556

Then re-running the Check_MK check which uses this TCP port.
Then made the change permanent by hand-editing /etc/sysconfig/iptables.

As a quick fix this looks OK. Longer term we should probably separate out the GPFS config because it only applies to one server whereas these rules are applied to all servers.
Why did you need to do a manual change? Running this modified playbook against demo should've have handled everything.

It was run manually as I had to do it in a hurry, and I didn't have time to work out how the Ansible was implemented.


Add TO Go GET cdn/name/dnsseckeys, DS record txt

What does this PR do?
Rewrites GET cdn/name/dnsseckeys in traffic_ops_golang.
Also adds the actual DS Record text to the endpoint, in 1.4. Which is a huge convenience, before this, on a KSK roll, you had to grep the Traffic Router logs to get the text to insert in the DNS parent resolver.
Riak endpoint, so the API Tests don't support it yet.
Includes docs.
Which TC components are affected by this PR?

[x] Documentation
[ ] Grove
[ ] Traffic Analytics
[ ] Traffic Monitor
[x] Traffic Ops
[ ] Traffic Ops ORT
[ ] Traffic Portal
[ ] Traffic Router
[ ] Traffic Stats
[ ] Traffic Vault
[ ] Other _________

What is the best way to verify this PR?
Hit the /cdns/name/dnsseckeys endpoint in 1.2, verify it works. Verify 1.4 has the new "text" key in the "dsRecord" objects.
Check all that apply

[ ] This PR includes tests
[x] This PR includes documentation updates
[x] This PR includes an update to CHANGELOG.md
[x] This PR includes all required license headers
[ ] This PR includes a database migration (ensure that migration sequence is correct)
[ ] This PR fixes a serious security flaw. Read more: www.apache.org/security

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/2787/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/2831/
Test PASSed.


[Feature request] - Please add "Spring", "Link"and Cable element property

Thanks for sharing this @netsonicyxf, it’s been noted. We have this on our roadmap and should start implementation within the next quarter.
@a-tiwari17 FYI.


tabs icon

Checklist

[x] I have read the newlest tutorials and know the correct effect of the functional design.
[x] There is no similar question on existing issues (including closed ones).
[x] I have tried to find the answer on Jekyll Forum and StackOverflow.
[ ] My question is based on the latest code of the master branch.

Description

I tried to create a new tab inside _tabs, it worked, I changed it's icon, but it only works in home page.
here is what I did, I copied about.md inside _tabs, renamed it to certificate.md changed it's details, title, icon, order to 4(above about), changed about order to 5, so the problem is whenever I go to any other path in my website(other than root), the icon becomes the same as about(explanation mark icon).
how can fix this?

I fixed it, I just added a custom layout with the name of my tab

I fixed it, I just added a custom layout with the name of my tab

can u have supply more details ? I have a same issue. I can not understand your way to resolve it.


Fix #9983 - Typo in docstring of pad for resampling methods.

Fix #9983.
I added a new entry to the docdict: pad replacing the previous pad-fir for resampling methods.
The docdict entry pad-fir is now created by appending to the entry pad.

Thanks @mscheltienne !


Changed office-files-password to document-password

The password is also applied to PDFs.
See https://github.com/joesecurity/jbxapi/issues/16

Closed due to alternative backwards-compatible implementation.


Outdated vendor/golang.org software

Gitea version (or commit ref): 1.5.0
Git version:
Operating system:
Database (use [x]):

[ ] PostgreSQL
[ ] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[X] Not relevant

Log gist:

Description
While trying to build gitea on other OSes (SmartOS, NetBSD, ...) I encountered some errors and after checking, it is related to the golang/sys version gitea distributes. Apparently it hasn't been updated in a while.
I've based the list below in the "revisions" found in Gopkg.lock which I assume they were generated by some command based on Gopkg.toml.

Vendor software
Date
Version

golang.org/x/sys
2016-07-15
https://github.com/golang/sys/commit/a646d33e2ee3172a661fc09bca23bb4889a41bc8

golang.org/x/oauth2
2016-08-25
https://github.com/golang/oauth2/commit/c10ba270aa0bf8b8c1c986e103859c67a9103061

golang.org/x/net
2017-01-14
https://github.com/golang/net/commit/f2499483f923065a842d38eb4c7f1927e6fc6e6d

golang.org/x/sync
2017-03-17
https://github.com/golang/sync/commit/5a06fca2c336a4b2b2fcb45702e8c47621b2aa2c

golang.org/x/text
2017-06-17
https://github.com/golang/text/commit/2bf8f2a19ec09c670e931282edfe6567f6be21c9

golang.org/x/crypto
2018-04-18
https://github.com/golang/crypto/commit/12dd70caea0268ac0d6c2707d0611ef601e7c64e

Before trying to send a PR for an updated golang.org/x/sys, is there a procedure to correctly upgrade vendor software? I would assume some test need to be run and passed first, etc.
Also, maybe it would be good to have an automatically generated list of the vendor software and dates of the revisions used, just an idea :smiley:

Update to my comment above: I've created a PR to update the minimum used version of golang used to test the build so now the packages you've mentioned above can be upgraded to an appropriate version.

Thanks. So to update the packages above, do you guys use a specific procedure?

Yup, a dep ensure -update golang.org/x/PACKAGE (for each package), and then create a PR. You may need to change the revision in Gopkg.toml first before running the command.
Our lowest supported version of go right now is 1.9 and so if you want to check that the project builds with that version before pushing you can, but the CI will also check. Because of this, the latest commit for these packages may not work, rather than going commit by commit figuring out which commit is good, I start at most recent, see where the build fails then git blame the line where it fail, and skip to the revision before that and repeat until successful.
Also, personally I'd prefer all of these updates in one PR to make it easier to merge, but it is up to you if you want to do one, or many. My preference is not a strong one and I'd be happy to review either way 😄

I think I'll work on the updates individually, it's easier for me. I'm going to use the CI as you said, I think it's going to be a better check than my local builds.
I've already opened a PR (#5059). I'll see if I can use your 'git blame' trick.
Thanks!

Also update edsrzf/mmap-go for #4799


[FP]: io.openliberty.grpc.1.0.internal*jar is being tripping multiple Google gRPC CVEs

Package URl
<EMAIL_ADDRESS>CPE
cpe:2.3:a:grpc:grpc:1.0.62.cl220320220302.1100:*:*:*:*:*:*:*
CVE
No response
ODC Integration
{"label"=>"CLI"}
ODC Version
8.0.0
Description
The scan of the Open Liberty <IP_ADDRESS> package is tripping a lot of CVEs - it looks like at least some are poorly formed CPEs.
Thanks!

I've evidently entered the pkg data incorrectly.  I'm not entirely clear on what the correct setup should be, but the following Kotlin Gradle call works:
implementation("io.openliberty.api:io.openliberty.grpc.1.0:1.0.62")

But maybe what you scanned was a snapshot-version of the library, as for 'the real deal' I would expect it to end in @1.0.62 with the gradle coordinates you mention.

Hmmm... I will need to follow-up with the team packaging this third-party component.
@aikebah  - Quesiton - How does dependency check assemble the pkg information - specifically, I'm wondering where to it might be finding the trailing characters - cpe:2.3:a:grpc:grpc:1.0.62.cl220320220302.1100:::::::*
Thanks.

@aikebah  - Ah, found it:
META-INF/maven/dev/com.ibm.ws.webcontainer/pom.xml
which contains the reference:
1.1.62.cl220320220302-1100
This version tag, combined with the /maven/dev/ path suggests that our copy is not the official release.
I will close this ticket (and 5344 as these are our problem, not yours.
Thanks!
Richard Seeton

@aikebah   - I've done some more digging and am reopening.
The 'pom.xml' file included in the official OpenLiberty releases ( https://openliberty.io/start/ ) copy of the io.openliberty.grpc.1.0.internal_1.0.62.jar has the following version tag:
1.0.62.cl220320220302-1100
This matches the pom.xml file included in the io.openliberty.grpc.1.0.internal_1.0.62.jar pulled from Maven Central using implementation("io.openliberty.api:io.openliberty.grpc.1.0:1.0.62").
Unfortunately, the pom.xml version  and the Maven pkg reference mismatch prevents the Central Analyzer from matching the file with the correct CPE, resulting in a False Positive.
Ideally, IBM would package the Open Liberty version cleanly in the pom file, or Maven would use the pom file's version. However, for now, Dependency Check is throwing false positives for IBM Open Liberty.
I'm not sure how the Dependency Check wants to deal with this issue.

With the centralAnalyzer enabled I would expect the CLI to link the two (centralAnalyzer looks up the maven artifact using the SHA1 of the jar)

Unless IBM is packaging a different 1.0.62 jar than published on Maven Central

And I can confirm that the files in the IBM package from https://openliberty.io/start/ package don't match what is on Maven Central.
Okay - I'll follow-up with IBM to see if I can sort out what their thoughts are.
Thanks for your patience.


Wrong position for tspan elements in Chrome

Hello,
this is not an issue with your library, but an issue in Chrome: the coordinates are wrong for tspan, as getBBox returns the coordinates of the containing text element instead. Reported to the Chromium team here:
https://bugs.chromium.org/p/chromium/issues/detail?id=349835&q=tspan bbox&colspec=ID Pri M Stars ReleaseBlock Component Status Owner Summary OS Modified
There seems to be a workaround, using other techniques. I thought I'd just mention it in case you wanted to include a fix for that in your library, but it's entirely up to you :) Thank you.

FYI, it's fixed in Chromium 84.
Safari does have the issue though, filed a bug report here.

This plugin is obsolte with svg.js v3 (I think even in 2.x??). Just use rbox()


Maybe a Dirty Reads thread bug in AsyncHttpClient

I'm inexperienced on thread, but maybe this is a Dirty Reads bug.
line 1187 in com.loopj.android.http.AsyncHttpClient.sendRequest(DefaultHttpClient client, HttpContext httpContext, HttpUriRequest uriRequest, String contentType, ResponseHandlerInterface responseHandler, Context context):
if (context != null) {
    // Add request to request map
    List<RequestHandle> requestList = requestMap.get(context);
    synchronized (requestMap) {
        if (requestList == null) {
            requestList = Collections.synchronizedList(new LinkedList<RequestHandle>());
            requestMap.put(context, requestList);
        }
    }

    requestList.add(requestHandle);

    ...
}

After this sequence:

Thread A
Thread B

map.get(x)==null

                         | map.get(x)==null
                          | map.put(x, listB)

map.put(x, listA) |
|  listB.add(sth2)
listA.add(sth1) |
listB and sth2 are lost.
I think requestMap = Collections.synchronizedMap() only insure requestMap.get finished before next operation on it, but can't prevent this Dirty Reads probability.
Should List<RequestHandle> requestList = requestMap.get(context); be in synchronized (requestMap) { ... }? I'm not sure about it so I didn't pull request. Is there anyone skilled about it?
ADD: Maybe this is a sample, http://en.wikipedia.org/wiki/Singleton_pattern#Lazy_initialization

Thank you, fixed


comment tokens gone?

inline and block comments arent visible as tokens anymore, ganito ba talaga siya? even for our lexical? i remember kasi na we had mga 2 pulls ago HAHAHAHA

oh may filter atm that removes them para sa syntax. tanggalin ko nalang for lex then reimplement for syntax


build: avoid panicing build script if target does split to >2 elements

In meta-rust, I've observed failures caused by missing the first length check.
I haven't seen any failures caused by the second (because I'm not building anything for windows) but I don't see a reason not to check for it.

Thanks for catching this.


Add Mike Mikina blog to iOS development blog list.

I have added my personal blog to the list.

Thanks!


Phase 1B Update button style

pretty simple blow I'll past a screenshot of the new button and below the old one:
new button style:

Old Button

@DanCollinz  looks like it is already taken care in "phase-two-redo" branch. Please let me know if anything more to be fixed
https://phase-two-redo--takeda-ihs--hlxsites.hlx.page/author-guide/style-guide

this is done


fix format of title links in zh

Purpose: Update Link Format in Simplified Chinese Version to Seamlessly Align with the English Version
Explanation: Through make preview checks and trials, I have updated the formatting issues in the Simplified Chinese translation version.
In the original English paragraph such as - **Opportunity available for providing utility functions outside of Bitcoin Core:**, the link format generated is:
/en/newsletters/2018/11/13/#opportunity-available-for-providing-utility-functions-outside-of-bitcoin-core
However, in the Simplified Chinese translation, if the format is - **<!--opportunity-available-for-providing-utility-functions-outside-of-bitcoin-core-->提供 Bitcoin Core 之外的实用功能的机会：**, the generated link format would be:
/zh/newsletters/2018/11/13/#opportunity-available-for-providing-utility-functions-outside-of-bitcoin-core-bitcoin-core
As you can see, compared to the English link, the Chinese link, despite commenting the same content, adds the English and numeric content from the beginning of the Chinese paragraph to the end of the link during page generation. The reason is that the content between - ** and ** is treated as a whole when generating the link. This difference in link generation leads to a poor experience for readers who wish to read the original text by changing zh to en in the link, as they cannot locate the same paragraph. To improve this, we need to modify the existing format to generate the corresponding link.
In this update, I have changed the format of the translated content by adding **** between --> and the Chinese title to form a separation, which alters the title generation logic in the original code. After checking with make preview, the generated link format is:
/zh/newsletters/2018/11/13/#opportunity-available-for-providing-utility-functions-outside-of-bitcoin-core
Thus, the generated Chinese link format can remain consistent with the original English link format.
I have thoroughly checked the link generation method for all the first 21 issues and made corresponding modifications. I will update the correct link format in the manual and revise future links accordingly. The previous link generation method referred to the Simplified Chinese translation method after issue 203, without attempts to modify it for optimal results. This is now corrected.

Additional Explanation: If the ** is not added around the initial link comment, i.e., <!--xyz-->, forming the format **<!--xyz-->**, it cannot be recognized as a comment to generate a link.
Whether the translated Chinese paragraph's initial content also uses ** to bold the format, forming **一二三：**, should only be consistent with the English content.

@hulatown your feedback might be valuable here at a conceptual level

I also noticed the repeat of any English word in the translated title.
I think this trick can solve the problem 👍

@harding I wanted to check if this was any concern regarding the migration to Hugo?


Hw1

Just a heads up, you can review these notebook changes with GitNotebooks too: https://gitnotebooks.com/yandexdataschool/nlp_course/pull/142
I think it offers some advantages over what you're currently using.

these changes look like solved seminar and homework, which is an unwanted spoiler.
I suggest to the maintainers to decline and delete this PR.
@Sinus2x,
If you want to improve the original seminar and homework - please resubmit with focused and clearly explained changes.

@poedator I have closed my pull request. Can you delete the pull request since you are in touch with the maintainers>


Live link doesn't work

https://slate-markdown.spectrum.chat
There is 404 error on this page.

We have not used this package in years, it is unmaintained. I will archive the repo to make that clear!


Add checksum to chocolatey package

Excerpts from the most recent newsletter:

Checksums Required For All Future Package Approvals
tl;dr - Moving forward packages will not be approved without checksums if they download remote resources (exact date to be determined). This includes trusted packages.

How can I calculate checksums?

Install checksum - choco install checksum
Download the binaries you want to use with the package.
Call checksum -t sha256 -f path\to\file. Add that to your function arguments. See PowerShell Function Reference to learn how to pass those to the function you are using (another method is to use choco new pkgname from newest version of choco and using output to update your package).
NOTE: Checksums should be calculated during package build time where the result of the checksum is added to the package, not calculated at runtime. Calculating at runtime defeats the purpose of checksumming as a measure of protection.

How do I calculate checksums with automatic packaging?
That's a great question. One of our community maintainers and moderators maintains over 900 packages using automatic packaging and does exactly this. He has provided examples and the code for hooking into the auto updating is at @dtgm's Chocolatey Packages - Ketarin Checksum Settings.

Another tool up and coming for automatic packaging is AU, https://github.com/majkinetor/au. AU uses a PowerShell module to run and doesn't require any templating. When used with packaging, it uses an Update.ps1 file to determine what to replace in the package files. Miodrag, the author of AU, just added automatic checksumming to AU this week so it will pull down x86/x64 urls and provide sha256 checksums automatically to be used for replacement in packages.

We will be adding better instructions on how to do this in the Automatic Packaging documentation.

Actions Moving Forward

Choco tools default to safety - the next version of Chocolatey due out early next week won't allow empty checksums by default. They will have switches and a feature to adjust this behavior. See chocolatey/choco#112 and chocolatey/choco#895.
Choco tools will include a consumer override for checksums (consumer provides checksum instead of using package checksum).
The validator will require checksums when downloading from the internet.
choco pack will include validation (subset of the package validator used on the community repository).
VirusTotal checks will become part of automated moderation and findings will flag a package for human review.
Some validator findings may flag a package for human review. This will hold a trusted package for some additional safety checks.

@spraints We are spending more time considering whether checksums for HTTPS is really required to be a default "on" setting or if folks could switch it on for more security. Feel free to provide comments on 895.