[downloader/hlsnative] Resuming encrypted HLS streams leads to broken files

[x] I've verified and I assure that I'm running youtube-dl 2<IP_ADDRESS>

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

[$] youtube-dl --hls-prefer-native http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444
[HotStar]<PHONE_NUMBER>: Downloading JSON metadata
[HotStar]<PHONE_NUMBER>: Downloading TABLET JSON metadata
[HotStar]<PHONE_NUMBER>: Downloading m3u8 information
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 416
[download] Destination: The Promiscuous Wives-1000153444.mp4

Now twice the video has been downloaded but each time I have not been able to view the video either under mpv or vlc but when it is in .part I can play the video. It is only when it is complete, it doesn't play. I suspect some sort of corruption happening.
This is the ouput I get while viewing the .part file via ffprobe -
[$] ffprobe The\ Promiscuous\ Wives-1000153444.mp4.part
ffprobe version 3.1.4-1 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 6.2.0 (Debian 6.2.0-6) 20161010
  configuration: --prefix=/usr --extra-version=1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-libtesseract --disable-stripping --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librubberband --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-frei0r --enable-chromaprint --enable-libopencv --enable-libx264
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 48.101 / 57. 48.101
  libavformat    57. 41.100 / 57. 41.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 47.100 /  6. 47.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
[h264 @ 0x1693e00] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1693e00] SPS unavailable in decode_picture_timing
[h264 @ 0x1693e00] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1693e00] SPS unavailable in decode_picture_timing
[mpegts @ 0x168f3e0] PES packet size mismatch
Input #0, mpegts, from 'The Promiscuous Wives-1000153444.mp4.part':
  Duration: 00:11:12.00, start: 0.100667, bitrate: 2144 kb/s
  Program 1
    Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 60 kb/s

Look forward to know more.

Both work fine for me.

it doesn't work at my end. Especially if for some reasons it stops, I have to start at beginning otherwise I just get -
[$] mediainfo The\ Promiscuous\ Wives-1000153444.mp4.part
General
Complete name                            : The Promiscuous Wives-1000153444.mp4.part
File size                                : 558 MiB

What it should give -
[$] mediainfo The\ Promiscuous\ Wives-1000153444.mp4.part
General
ID                                       : 1 (0x1)
Complete name                            : The Promiscuous Wives-1000153444.mp4.part
Format                                   : MPEG-TS
File size                                : 543 MiB
Duration                                 : 35 min 23 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 2 143 kb/s

Video
ID                                       : 256 (0x100)
Menu ID                                  : 1 (0x1)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile<EMAIL_ADDRESS>Format settings, CABAC                   : Yes
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=25
Codec ID                                 : 27
Duration                                 : 35 min 24 s
Bit rate mode                            : Constant
Nominal bit rate                         : 2 000 kb/s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.087

Audio
ID                                       : 257 (0x101)
Menu ID                                  : 1 (0x1)
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format version                           : Version 4
Format profile                           : LC
Muxing mode                              : ADTS
Codec ID                                 : 15
Duration                                 : 35 min 23 s
Bit rate mode                            : Variable
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 spf)
Compression mode                         : Lossy

This was there sometime back, you can see the difference yourself.

I am also experiencing this same issue. Downloading a youtube video and attempting to play this on VLC Ubuntu will only have a black screen and no audio. However, when using the -k option (keep), both the audio (.mp4) and video (.webm) files play. I assume the error lays somewhere during combining of the files.

@bobbybluff I guess that's because you're using avconv. Try to install ffmpeg and run youtube-dl with --prefer-ffmpeg. If things are still broken, paste the output of youtube-dl -v --prefer-ffmpeg "your URL"
@shirishag75 Which player are you using? It's most likely player's problem on unable to handle mpeg-ts segments. If you have no choice on which player to use, install ffmpeg and replace --hls-prefer-native with --hls-prefer-ffmpeg from your commands.

@yan12125  Thank you for your reply. I attempted using ffmpeg but still encounter same issue. Here's the output:
youtube-dl -v --prefer-ffmpeg https://www.youtube.com/watch?v=QAa2O_8wBUQ
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'--prefer-ffmpeg', u'https://www.youtube.com/watch?v=QAa2O_8wBUQ']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.6 - Linux-3.13.0-53-generic-x86_64-with-Ubuntu-14.04-trusty
[debug] exe versions: ffmpeg 3.2, ffprobe 3.2, rtmpdump 2.4
[debug] Proxy map: {}
[youtube] QAa2O_8wBUQ: Downloading webpage
[youtube] QAa2O_8wBUQ: Downloading video info webpage
[youtube] QAa2O_8wBUQ: Extracting video information
[youtube] QAa2O_8wBUQ: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[debug] Invoking downloader on u'https://r6---sn-n4v7kn7s.googlevideo.com/videoplayback?id=4006b63bff300544&itag=137&source=youtube&requiressl=yes&usequic=no&mv=m&ms=au&nh=IgpwcjAxLnNqYzA3Kgw3Mi4xNC4yMjAuMTA&mn=sn-n4v7kn7s&mm=31&pl=19&initcwndbps=1046250&ratebypass=yes&mime=video/mp4&gir=yes&clen=70470272&lmt=1439629639453652&dur=380.040&signature=35B7375B8BB7EC5E6E518B882938405D13A653DD.5F67DF5198C0A69798E802BA4372E725C3EC597B&upn=nNajwXz_G3w&mt=1479012812&key=dg_yt0&ip=<IP_ADDRESS>&ipbits=0&expire=1479034487&sparams=ip,ipbits,expire,id,itag,source,requiressl,usequic,mv,ms,nh,mn,mm,pl,initcwndbps,ratebypass,mime,gir,clen,lmt,dur'
[download] Destination: What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f137.mp4
[download] 100% of 67.21MiB in 00:29
[debug] Invoking downloader on u'https://r6---sn-n4v7kn7s.googlevideo.com/videoplayback?id=4006b63bff300544&itag=251&source=youtube&requiressl=yes&usequic=no&mv=m&ms=au&nh=IgpwcjAxLnNqYzA3Kgw3Mi4xNC4yMjAuMTA&mn=sn-n4v7kn7s&mm=31&pl=19&initcwndbps=1046250&ratebypass=yes&mime=audio/webm&gir=yes&clen=7125999&lmt=1449568716498724&dur=380.041&signature=857A8E46293471C759F401919F732A6BACB12887.7016012B0FE440A9995C695C4F2BD3A00BAD94AB&upn=nNajwXz_G3w&mt=1479012812&key=dg_yt0&ip=<IP_ADDRESS>&ipbits=0&expire=1479034487&sparams=ip,ipbits,expire,id,itag,source,requiressl,usequic,mv,ms,nh,mn,mm,pl,initcwndbps,ratebypass,mime,gir,clen,lmt,dur'
[download] Destination: What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f251.webm
[download] 100% of 6.80MiB in 00:02
[ffmpeg] Merging formats into "What is Dark Matter and Dark Energy-QAa2O_8wBUQ.mkv"
[debug] ffmpeg command line: ffmpeg -y -i 'file:What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f137.mp4' -i 'file:What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f251.webm' -c copy -map 0:v:0 -map 1:a:0 'file:What is Dark Matter and Dark Energy-QAa2O_8wBUQ.temp.mkv'
Deleting original file What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f137.mp4 (pass -k to keep)
Deleting original file What is Dark Matter and Dark Energy-QAa2O_8wBUQ.f251.webm (pass -k to keep)

Just tried it and VLC 2.2.4 plays fine for me.

Just tried it with SMPlayer and it works. Issue lies with VLC 2.2.1.

OK let's wait for @shirishag75 and see what's his problem

hi all,
I was able to download it but after many tries. I am on Debian testing/strech and avconv is no longer an option. It is all ffmpeg now -
[$] apt-cache policy ffmpeg
ffmpeg:
  Installed: 7:3.2-2
  Candidate: 7:3.2-2
  Version table:
 *** 7:3.2-2 600
        600 http://httpredir.debian.org/debian testing/main amd64 Packages
          1 http://httpredir.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

The core issue is that re-downloading the video from where it stopped results in no play of the video. I use mpv as my preferred movie player as it doesn't take much memory, is good with kbd shortcuts and is out of the way -

─[$] apt-cache policy mpv
mpv:
  Installed: 0.21.0-2
  Candidate: 0.21.0-2
  Version table:
 *** 0.21.0-2 600
        600 http://httpredir.debian.org/debian testing/main amd64 Packages
          1 http://httpredir.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

Hope this info. clears the issues a little bit.

@shirishag75 First please paste the output of this command:
youtube-dl -v --hls-prefer-native http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444

And can you describe more on "can't play"? I tried a 3.1MB partial video with mpv 0.21.0 and it plays fine. By the way, mediainfo (version 0.7.90) shows correct info even for partial files:
$ mediainfo The\ Promiscuous\ Wives-1000153444.mp4.part
General
ID                                       : 1 (0x1)
Complete name                            : The Promiscuous Wives-1000153444.mp4.part
Format                                   : MPEG-TS
File size                                : 3.10 MiB
Duration                                 : 11 s 960 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 2 168 kb/s

Video
ID                                       : 256 (0x100)
Menu ID                                  : 1 (0x1)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile<EMAIL_ADDRESS>Format settings, CABAC                   : Yes
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=25
Codec ID                                 : 27
Duration                                 : 12 s 0 ms
Bit rate mode                            : Constant
Nominal bit rate                         : 2 000 kb/s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.087

Audio
ID                                       : 257 (0x101)
Menu ID                                  : 1 (0x1)
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format version                           : Version 4
Format profile                           : LC
Muxing mode                              : ADTS
Codec ID                                 : 15
Duration                                 : 11 s 925 ms
Bit rate mode                            : Variable
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 spf)
Compression mode                         : Lossy

I guess there's something wrong in downloading.
By the way, what's your version of python-crypto? This package is required to download encrypted streams provided by hotstar with youtube-dl's builtin downloader.

First things first, my version of python-crypto is -
[$] apt-cache policy python-crypto

python-crypto:
  Installed: 2.6.1-6+b1
  Candidate: 2.6.1-6+b1
  Version table:
 *** 2.6.1-6+b1 600
        600 http://httpredir.debian.org/debian testing/main amd64 Packages
          1 http://httpredir.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

well for these are there are 416 pieces of the file (fragments) , the downloader needs each file in sequence when all the 416 pieces are completed so that it can stitch/append all the files. the issue you are facing is due to network instability (major issue in your and my country) so a piece of file gets partially downloaded so it fails to stitch properly, even though all fragments are there. So  i would recommend is to download via an external downloader or first play it externally through vlc

I understand what you are saying. I do follow that the 'stitching' process may have some issue/bug. I don't know which is the element where that part needs to be followed up . Any pointers will be good .
I don't understand partially though your last statement, the part about

or first play it externally through vlc

let's say there is a stiching issue. If it is, is there a way that vlc can fix it rather than using mpv ?

use the command
wget -O output-filename.mp4 $( youtube-dl -g http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444      )

@siddht1 encrypted hls streams are not that easy

that is the point that I was trying to tell/share. Btw this again failed at my end -
┌─[shirish@debian] - [~/Videos] - [4513]
└─[$] youtube-dl -v --hls-prefer-native http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'--hls-prefer-native', u'http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.12+ - Linux-4.7.0-1-amd64-x86_64-with-debian-stretch-sid
[debug] exe versions: ffmpeg 3.2-2, ffprobe 3.2-2, rtmpdump 2.4
[debug] Proxy map: {}
[HotStar]<PHONE_NUMBER>: Downloading JSON metadata
[HotStar]<PHONE_NUMBER>: Downloading TABLET JSON metadata
[HotStar]<PHONE_NUMBER>: Downloading m3u8 information
[debug] Invoking downloader on u'https://staragvod3-vh.akamaihd.net/i/videos/lifeok/sain/1848/1000153444_,16,180,400,800,1300,2000,_STAR.mp4.csmil/index_5_av.m3u8?null=0&id=AgA7XwESaF++HKmdKFiuCX7ukDaVHaqLmr+POapKdfur9OZCV+kxbTC1wMlQ6iWxjMby6eftCNw+Mg%3d%3d'
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 416
[download] Destination: The Promiscuous Wives-1000153444.mp4
[download]  26.7% of ~638.23MiB at 114.31KiB/s ETA 45:56^C
ERROR: Interrupted by user

In vlc it just goes to a loop and gives [mp3 @ 0x7f7c4cc51300] Header missing
In mediainfo and mpv you get to know what the issue is -
┌─[shirish@debian] - [~/Videos] - [4525]
└─[$] mpv --mute The\ Promiscuous\ Wives-1000153444.mp4.part
(null) requires an argument
Playing: The Promiscuous Wives-1000153444.mp4.part
Failed to recognize file format.

Exiting... (Errors when loading file)

and

└─[$] mediainfo The\ Promiscuous\ Wives-1000153444.mp4.part
General
Complete name                            : The Promiscuous Wives-1000153444.mp4.part
File size                                : 170 MiB

As can be seen it is the 'stiching' part which is at fault somewhere.

@shirishag75 Confirmed the bug. Thanks for the detailed steps.

@yan12125  yes i saw that too
wget -O output-filename.mp4 $( youtube-dl -g http://www.hotstar.com/tv/savdhaan-india/363/the-promiscuous-wives/1000153444 )
--2016-11-13 22:56:43--  https://staragvod3-vh.akamaihd.net/i/videos/lifeok/sain/1848/1000153444_,16,180,400,800,1300,2000,_STAR.mp4.csmil/index_5_av.m3u8?null=0&id=AgAvHRkbMSwyH1OiKFhFGhPWwIog6Vxgvgu1KjBYpMA5RDDVcuCn%2FmozQdSBM9e1AQVDZ7ZbYHaOig%3D%3D
Resolving staragvod3-vh.akamaihd.net (staragvod3-vh.akamaihd.net)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to staragvod3-vh.akamaihd.net (staragvod3-vh.akamaihd.net)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 101785 (99K) [application/vnd.apple.mpegurl]
Saving to: ‘output-filename.mp4’
output-filename.mp4 100%[===================>]  99.40K   482KB/s    in 0.2s
2016-11-13 22:56:45 (482 KB/s) - ‘output-filename.mp4’ saved [101785/101785]
so surely the problem is when retriving files , got change the user agent to an android mobile phone , hotstar is blocking the stream

@shirishag75  even though its a bug. let me help you.
eg : a file contains abcdefghjklmnopqrstuvwxyz
so its 26 characters (refrence for pieces)
i downloaded it as
abcdefgghijklmnopqrstuvwxz
so the downloader sees that it has 26 characters and a,z are in front and back , mid is n is 13 so it stiches it as it thinks its the right pieces , but it cant confirm as there is not error detection . this is whats happening

@yan12125  is there anyway in youtube-dl where a checksum/crc can be done directly

@siddht1 I got this, I am asking as for most people they would just give up. If there is no error-detection, then it is upto the developers to fix it and they can only do it if we highlight our issues and this is reproducible by them.

@shirishag75  i get you , and yes the developers can fix it , especially who are dealing for youtube-dl from several years. But i am to a developer (not for youtube-dl ), but for java calling of this program https://github.com/rg3/youtube-dl/issues/10975  , have faced issue as porting also needs work. this check can be done , so i can surely help if nedded. just checking crc/checksum can be done for an on line file

Anybody working on this .... ping ?


[docs] npm vs Yarn confusion and onboarding

https://github.com/tauri-apps/tauri/wiki/04.-MS-Windows-Setup
The documentation makes it sound like tauri cannot function without Yarn, and that npm should not be used, which is completely backwards to everything in the Node.js ecosystem. Node ships with npm and only a small minority of projects use Yarn (let alone require it).
Further, for onboarding new users the ideal scenario would be:

Install Node.js and npm
npm install -g @tauri/cli
tauri my-app-name
cd my-app-name && npm start

But my expectations are that it at least be:

Install Node.js and npm
npm init -y
npm install --save-dev tauri
Edit your package.json to point the main to index.html
Create an index.html
npx tauri .

Hey @TheJaredWilcurt , thanks for your issue.
According to that sentence ("Linux Setup" page):

Now that npm is installed, if you like you may additionally install yarn - the preferred package manager of the Tauri team.

Yarn is preferred internally which implicitly means it's not mandatory. I know it should also appear on the "MS Windows Setup" page, I guess a small update should be applied.
To answer your question in a more straightforward way: either NPM or Yarn can be used with Tauri.

Yes, for onboarding, it would also be ideal for there to only be one set of instructions that work on all platforms. Then any platform specific bits mentioned after the main instructions. This solves the problem of people skipping all other platform instructions and going to their OS. It also reduces the effort of having to maintain 3 sets of instructions.

Thanks for the comment! Well, there is always a sweet spot to be found between verbosity, accuracy and security. While I do like the theory behind npx I am not willing to recommend it. See here:
https://github.com/tauri-apps/tauri/issues/280#issuecomment-570825300


Non-reproducible hit finding on cuda

hit search on cuda seems to be somewhat non-reproducible. It's expect that hits may come in with a different order, but they should always be the same hits. Running a pipeline on voyager data with range -5 to 5Hz/sec then moving to cpu for hit_search gives a consistent 11 hits (I've run this a few dozen times repeatedly):
hit: .start_freq_MHz=8419.921875 (.index=524288), .drift_rate_Hz_per_second=-0.000000 (.index=500), .SNR=24762.199219, .power=3523141632, bandwidth=0.0
hit: .start_freq_MHz=8419.565228 (.index=651993), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=127.647469, .power=12842161, bandwidth=449.8
hit: .start_freq_MHz=8419.542734 (.index=659988), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=1071.168579, .power=107766488, bandwidth=61.5
hit: .start_freq_MHz=8419.520239 (.index=668097), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=122.781815, .power=12352645, bandwidth=441.4
hit: .start_freq_MHz=8419.475402 (.index=684087), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=13.124967, .power=1320456, bandwidth=5.6
hit: .start_freq_MHz=8419.475080 (.index=684202), .drift_rate_Hz_per_second=-0.357149 (.index=535), .SNR=14.723750, .power=1481304, bandwidth=5.6
hit: .start_freq_MHz=8419.610230 (.index=635887), .drift_rate_Hz_per_second=-0.387762 (.index=538), .SNR=13.594336, .power=1116704, bandwidth=329.7
hit: .start_freq_MHz=8419.565711 (.index=651764), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=14.698190, .power=1478733, bandwidth=8.4
hit: .start_freq_MHz=8419.564756 (.index=652106), .drift_rate_Hz_per_second=-0.387762 (.index=538), .SNR=13.553493, .power=1113350, bandwidth=11.2
hit: .start_freq_MHz=8419.520717 (.index=667868), .drift_rate_Hz_per_second=-0.367353 (.index=536), .SNR=13.233637, .power=1331390, bandwidth=5.6
hit: .start_freq_MHz=8419.519762 (.index=668210), .drift_rate_Hz_per_second=-0.387762 (.index=538), .SNR=13.299211, .power=1092462, bandwidth=14.0

When the cuda connected_components implementation runs, we get ....more hits... A lot of them are in the range above and below 1.3 Hz/sec. If I reduce the search range to -1 to 1 Hz/sec, there are usually 11 hits but unfortunately often we get 12 hits and sometimes even 13 hits. The extra hits can look like this:
hit: .start_freq_MHz=8419.542708 (.index=659990), .drift_rate_Hz_per_second=0.795932 (.index=22), .SNR=56.486515, .power=3594187, bandwidth=64.3
hit: .start_freq_MHz=8419.542594 (.index=660047), .drift_rate_Hz_per_second=0.612255 (.index=40), .SNR=70.239807, .power=4996826, bandwidth=290.6
hit: .start_freq_MHz=8419.921953 (.index=524253), .drift_rate_Hz_per_second=-0.540826 (.index=153), .SNR=1547.952393, .power=110120584, bandwidth=162.1
It does look like the expected hits are always there, so it's not necessarily an issue of random hits but something is randomly causing bad hits and at higher drift rate ranges there are nearly guaranteed bad hits showing up.

I'm not sure how the code is setup, but inconsistent results from CUDA-land sounds like a synchronization issue (e.g. between tasks (or maybe __syncthreads() if you're using shared memory on the GPU).  Just one of many possibilities... :P

Narrowing down issues:

This is only related to connected_components_cuda hit search. Doing the rest of the pipeline on cuda and connected_components_cpu has no inconsistency
running local_maxima_cuda (on branch MR #50) always gives 64 hits when a range of -1 to 1 Hz/sec is used and 1235 hits when -5 to 5 Hz/sec is used. N=several (~-10) of each when neighbor l1 dist 15 and snr is 50. When snr is 10 and l1 dist is 7, it's always 5290 hits with -5 to 5
if I take out the label_spreading from connected_components I still see variable numbers of hits!
I did find a place where the visited array was being initialized incorrectly by not taking in to account the sizeof(int) in cudaMemSet, that's fixed and does reduce variability but still an issue lingering

I took out what should have been a dumb optimization to set the entire neighborhood to a label rather than just the max to a label (should reduce a call to spread_labels) that winds up thrashing a bit... without that things are consistent and without spread_labels the number of protohits now matches local_maxima (they are very similar kernels without spreading labels)
Adding back in spread_labels gets us back to a non-reproducible number of hits, so the (remaining) issue is entirely with spread labels and need to think through a reproducible method to do this operation which is OKish since that's been that optimization target so far and was at least partial of #48.
side note: on that branch (MR #50) cpu local_maxima is borked, but not a priority at the moment

Closed by #55


Fix parameter type as it now takes a hashtable

It looks like this previously took a json parameter but it takes a hashtable instead.

@aurnovcy or @rpsqrd , can either of you confirm this change? Thanks.

Great catch! This is the correct syntax going forward. I approve this change.


Tweaks to Custom Languages section of the README

The README does not explain the contribution language extension point clearly, and references features that do not exist.
I updated it to match what is in the code, which should be extended when those features are added.

Thanks!

Thanks!


Update create-and-manage.md

The Powershell examples use Az not AzureRM.

@theheatDK : Thanks for your contribution! The author, @DCtheGeek, has been notified to review your proposed change.

@theheatDK Thanks for correcting this! #sign-off


Inconsistent behavior in deployed web app for desktop and mobile

Steps to Reproduce

Run flutter create bug.
Update the files as follows: ...
My prototype web app, which was deployed to the web after uploading the build/web folder to AWS Amplify, does not appear to work when using mobile device browsers (Chrome on Android or iOS).  The app will crash at a certain point and will not display text in other parts where it is supposed to.  The web app works fine when using a desktop on Chrome.  It also works as a stand alone mobile app on iOS and Android.  Here is the link for the prototype web app:
https://mkcapp.app2playdev.com

Expected results:
The web app should work consistently and should not depend on what the device/browser is.
Actual results:
The app was crashing at certain points in the app and was not displaying text correctly in other areas.
Example, in the recipe converter, text was not displayed for mobile devices.  In the recipe converter, the app was crashing after attempting to convert the recipe.  This worked fine on desktop web and in development for Android/iOS mobile devices.  This does not work for mobile accessing the web app.

Logs

N/A

N/A

[√] Flutter (Channel stable, 2.0.3, on Microsoft Windows [Version 10.0.19042.867], locale en-US)
    • Flutter version 2.0.3 at C:\src\flutter
    • Framework revision 4d7946a68d (7 days ago), 2021-03-18 17:24:33 -0700
    • Engine revision 3459eb2436
    • Dart version 2.12.2

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\MKC\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.1.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.54.3)
    • VS Code at C:\Users\MKC\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.20.0

[√] Connected device (2 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 89.0.4389.90
    • Edge (web)   • edge   • web-javascript • Microsoft Edge 89.0.774.57

• No issues found!

Hi @ernestrlee
Can you please provide a minimal complete reproducible code sample instead of deployed app?
Thank you

Hello Taha,
Sure, I'll attach minimal code here.
lib.zip
After looking at the issue, it may have something to do with the rich text or widget spans.  It is also causing issues with swipe to delete on browsers.  I'm not sure why it works on desktop browser, iOS, and Android, but it does not work mobile browser.  I deployed to firebase and also got the same issue.
Thanks!

Hi @ernestrlee
Thanks for the code sample, I can see text rendering issue when using you code sample on the mobile web from stable to dev channels, only master works. Is it the same issue as yours?
but I am sure what the exact issue you're describing here, can you please explain the issue in detail

After looking at the issue, it may have something to do with the rich text or widget spans. It is also causing issues with swipe to delete on browsers.

Here I deployed and tested on Chrome on Android and iOS
Text only shows when taping
stable
https://gracious-panini-5a8551.netlify.app/
beta
https://admiring-dijkstra-d0036f.netlify.app/
dev
https://romantic-bohr-9570fd.netlify.app/#/
master
https://distracted-fermat-30f9ab.netlify.app/

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.3, on macOS 11.2.3 20D91 darwin-x64, locale
    en-GB)
    • Flutter version 2.0.3 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 4d7946a68d (10 days ago), 2021-03-18 17:24:33 -0700
    • Engine revision 3459eb2436
    • Dart version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (3 available)
    • iPhone 12 (mobile) • 83060656-28E7-44CD-801E-B11EC3EC89BA • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64
      • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)       • chrome                               • web-javascript
      • Google Chrome 89.0.4389.90

• No issues found!

[✓] Flutter (Channel beta, 2.1.0-12.2.pre, on macOS 11.2.3 20D91 darwin-x64,
    locale en-GB)
    • Flutter version 2.1.0-12.2.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision 5bedb7b1d5 (11 days ago), 2021-03-17 17:06:30 -0700
    • Engine revision 711ab3fda0
    • Dart version 2.13.0 (build 2.13.0-116.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.90

• No issues found!

[✓] Flutter (Channel dev, 2.1.0-12.1.pre, on macOS 11.2.3 20D91 darwin-x64,
    locale en-GB)
    • Flutter version 2.1.0-12.1.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision 8264cb3e8a (3 weeks ago), 2021-03-10 12:37:57 -0800
    • Engine revision 711ab3fda0
    • Dart version 2.13.0 (build 2.13.0-116.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.90

• No issues found!

[✓] Flutter (Channel master, 2.1.0-13.0.pre.294, on macOS 11.2.3 20D91 darwin-x64, locale
    en-GB)
    • Flutter version 2.1.0-13.0.pre.294 at /Users/tahatesser/Code/flutter_master
    • Framework revision a603714610 (22 hours ago), 2021-03-28 03:54:02 -0700
    • Engine revision b5e15d055d
    • Dart version 2.13.0 (build 2.13.0-162.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.90

• No issues found!

Thank you

Hi @ernestrlee
Thanks for the explanation, did you master the link from https://github.com/flutter/flutter/issues/79087#issuecomment-809191675, i can see same behavior when using master on chrome on android or iOS as on desktop

stable
master

Can you please confirm you get the same result?
Thank you

Hi @ernestrlee
Thanks for the confirmation!

I can reproduce the issue only Android

preview

When you tap to transform text, the keyboard isn't opened but if you double-tap, the on-screen keyboard appears, it's not just chrome but also on Safari. Can you confirm this behavior?

preview

Also, I just arranged all your classes into a runnable code sample for anyone fixing this issue

complete code sample
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'dart:collection';
import 'package:flutter/foundation.dart';

void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (_) => ListData()),
      ],
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return MyList();
  }
}

class ListData extends ChangeNotifier {
  List<String> _list = [
    'Apple',
    'Broccoli',
    'Flour',
    'Cabbage',
  ];

  UnmodifiableListView<String> get list {
    return UnmodifiableListView(_list);
  }

  void addItem(String item) {
    _list.add(item);
    notifyListeners();
  }

  void removeItem(int index) {
    if (index >= 0 && index < list.length) {
      _list.removeAt(index);
    }
    notifyListeners();
  }

  void updateItem(int index, String str) {
    if (index >= 0 && index < list.length) {
      _list[index] = str;
      //notifyListeners();
    }
  }

  void updateList(List<String> list) {
    _list = list;
    notifyListeners();
  }

  void clearList() {
    _list = [];
    notifyListeners();
  }
}

class MyList extends StatefulWidget {
  @override
  _MyListState createState() => _MyListState();
}

class _MyListState extends State<MyList> {
  // This function updates the text used in the textfield
  void _updateText(int index, String str) {
    Provider.of<ListData>(context, listen: false).updateItem(index, str);
  }

  void _deleteItem(int index) {
    Provider.of<ListData>(context, listen: false).removeItem(index);
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        FocusScope.of(context).unfocus();
      },
      child: Scaffold(
        body: Container(
          margin: EdgeInsets.all(20),
          child: Column(
            children: List.generate(
              Provider.of<ListData>(context).list.length,
              (index) => TransformerTextField(
                key: ValueKey(
                    '${Provider.of<ListData>(context).list[index]}$index'),
                index: index,
                text: Provider.of<ListData>(context).list[index],
                onTransform: capSpan,
                onDelete: _deleteItem,
                onUpdate: _updateText,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

class TransformerTextField extends StatefulWidget {
  final int? index;
  final String? text;
  final Function? onTransform;
  final Function? onUpdate;
  final Function? onDelete;
  final Key? key;

  TransformerTextField(
      {this.index,
      this.text,
      this.onTransform,
      this.onUpdate,
      this.onDelete,
      this.key});

  @override
  _TransformerTextFieldState createState() => _TransformerTextFieldState();
}

class _TransformerTextFieldState extends State<TransformerTextField> {
  bool isEnabled = false;
  TextEditingController _controller = TextEditingController();
  FocusNode? _focusNode;

  @override
  void initState() {
    super.initState();
    _controller.text = widget.text!;
    _focusNode = FocusNode();
    _focusNode!.addListener(_onFocusChange);
  }

  @override
  void dispose() {
    _controller.dispose();
    _focusNode!.removeListener(_onFocusChange);
    _focusNode!.dispose();
    super.dispose();
  }

  void _onFocusChange() {
    if (_focusNode!.hasPrimaryFocus) {
      setState(() {
        // Toggle to texfield view
        isEnabled = true;
        // Populate the texfield with the text
        _controller.text = widget.text!;
        // Start cursor at end of text when tapped on
        _controller.selection = TextSelection.fromPosition(
            TextPosition(offset: _controller.text.length));
      });
    } else {
      // Update the original text value
      _updateText();
      setState(() {
        // Toggle to the text view
        isEnabled = false;
      });
    }
  }

  void _updateText() {
    widget.onUpdate!(widget.index, _controller.text);
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      key: widget.key,
      child: Visibility(
        visible: isEnabled,
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Expanded(
              child: Padding(
                padding: const EdgeInsets.symmetric(horizontal: 10.0),
                child: TextField(
                  decoration: InputDecoration(
                    border: InputBorder.none,
                  ),
                  style: TextStyle(
                    fontSize: 16,
                    height: 1.8,
                  ),
                  focusNode: _focusNode,
                  controller: _controller,
                  autofocus: true,
                  keyboardType: TextInputType.text,
                  maxLines: null,
                ),
              ),
            ),
          ],
        ),
        replacement: GestureDetector(
          onTap: () {
            setState(() {
              isEnabled = true;
              _focusNode!.requestFocus();
            });
          },
          child: Dismissible(
            key: UniqueKey(),
            onDismissed: (direction) {
              widget.onDelete!(widget.index);
            },
            background: Container(
              decoration: BoxDecoration(
                color: Colors.red,
              ),
              child: Padding(
                padding: const EdgeInsets.all(10.0),
                child: Align(
                  alignment: Alignment.centerRight,
                  child: Text(
                    'Delete',
                    style: TextStyle(
                      color: Colors.white,
                    ),
                  ),
                ),
              ),
            ),
            direction: DismissDirection.endToStart,
            child: Row(
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.all(10.0),
                    child: widget.onTransform!(context, _controller.text),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Widget capSpan(BuildContext context, String str) {
  List<WidgetSpan> output = [];

  for (int i = 0; i < str.length; i++) {
    if (i % 3 == 0) {
      output.add(buildTaggedTextWidgetSpan(context, str[i]));
    } else {
      output.add(buildTextWidgetSpan(context, str[i]));
    }
  }

  return RichText(
    text: TextSpan(
      text: '',
      children: output,
    ),
  );
}

WidgetSpan buildTaggedTextWidgetSpan(BuildContext context, String str,
    [TextStyle? style]) {
  return WidgetSpan(
    child: Container(
      margin: EdgeInsets.only(right: 4),
      decoration: BoxDecoration(
        color: Colors.amber,
        borderRadius: BorderRadius.circular(5.0),
        //backgroundBlendMode: BlendMode.dst,
      ),
      padding: EdgeInsets.symmetric(horizontal: 5.0, vertical: 3),
      child: Text(
        str,
        style: style ??
            TextStyle(
              fontSize: 16,
            ),
      ),
    ),
  );
}

WidgetSpan buildTextWidgetSpan(
  BuildContext context,
  String str, [
  TextStyle style = const TextStyle(
    fontSize: 16,
  ),
]) {
  return WidgetSpan(
    child: Container(
      padding: EdgeInsets.only(top: 5.0, bottom: 5, right: 4.0),
      child: Text(
        str,
        style: style,
      ),
    ),
  );
}

Hello Taha,
Thank you for putting together the summary.  This looks correct, except for the description for the dismissible bug.  It also is seen on my Android device.  When I drag left, but not all the way, and I move to the next item in the list, and drag but not all the way, the items that were previously dragged all turn red at the same time.  You can see this when you do it to each of the items in the list.  Try dragging on each item in the list.
Thanks,
Ernest

Hi @ernestrlee
Thanks for the confirmation, I'm unable to reproduce the "all turn red" issue on a physical device or emulator
Code Sample
https://github.com/flutter/flutter/issues/79087#issuecomment-810842779
Issue summary
https://github.com/flutter/flutter/issues/79087#issuecomment-811727143

Hello Taha,
The below clip is what I am seeing.  This happens on all devices I have tested, including emulator.
https://user-images.githubusercontent.com/30732731/113555857-6965e400-95b0-11eb-94f9-fab3758ff817.mp4
Thanks,
Ernest


Dataset Display and UI Consistency

Carried over from https://issues.liferay.com/browse/LPS-87822, as I've been pointed to https://liferay.design/lexicon/core-components/dataset-display/, which doesn't contain the requested standards.
Apologies if they're defined elsewhere - I don't know my way around the rather abstract descriptions of Lexicon, just recognize inconsistencies in the concrete product.
This is all in the context of Liferay 7.0 and 7.1
As an example, I'll use the Control Panel / Sites / Sites listing
.

When you create a new Site (+ button), the next form will be the site's Site Settings.
Site Settings are the second entry down in the "Action/Kebap" menu of the line (screenshot), despite being the default target of "Add Site".
When clicking on an existing site's name, user ends up at the site's "Pages" configuration.

Similar example:

User Groups: Adding a user group ends up in the listing of the existing user groups (side effect: This might not be ideal if there are hundreds of user groups - After creating another Usergroup, the admin needs to remember&search for it in order to do anything with it)
Clicking a Usergroup's name brings us to the "Assign Members", which otherwise would be the fifth entry down in the "Actions/Kebap" menu

In contrast to User Group, different behavior for Roles:

Adding a new role stays on the same screen, just now with enabled "Define Permissions" and "Assignees" tabs.

hey @olafk — sorry to send you to yet another Jira project 😬 but this repo is for the Lexicon site, from what I can tell, this issue might be better suited as a LEXI ticket (a 'proposal' perhaps?)
cc @victorvalle

Thanks, and sorry, @plhnk
Filed LEXI-568

@olafk no apology necessary! It’s on us to make sure filing issues is clearer 🙂
Sent with GitHawk


Add OnError to rtmp.Handler

Add OnError to rtmp.Handler.

@yutopp, do you have a progress with CI?


Add CSS Vars

First thanks for this. It's a time saver.
Looking at the CSS, the styles would benefit from using CSS variables for attributes like width, height, color, duration, timing function, etc. For my purposes, I changed the inner color:
      :root {
        --inner-color: #7cf358
      }

      .hamburger.is-active .hamburger-inner,
      .hamburger.is-active .hamburger-inner::before,
      .hamburger.is-active .hamburger-inner::after {
        background-color: var(--inner-color);
      }

      .hamburger-inner,
      .hamburger-inner::before,
      .hamburger-inner::after {
        width: 40px;
        height: 4px;
        background-color: var(--inner-color);
        border-radius: 4px;
        position: absolute;
        transition-property: transform;
        transition-duration: 0.15s;
        transition-timing-function: ease;
      }

This repo isn't actively maintained so I created it by myself. Please check it out https://github.com/TomoyaKuroda/CSS-Variables-Hamburgers


Suiggestion menu borders not visible

Hi,
I'm using  typeahead.bundle.min.js 0.11.1 + jQuery v2.1.3
The suggestions are visible but not the box around
With  Bootstrap v3.3.4

Without Bootstrap:

-- Jimmy

There's no border added by default. Only the bare minimum css is applied out of the box. If you want to add a border, something like the following will do the trick:
.tt-menu {
  border: 1px solid black;
}


View support

We need to add view support, just like we did for tables and functions.

Done in 2.0.3


Wrap a c++ function that the node.js server will call

Wrap a c++ function that the node.js server will call and return its result through socket.io
(We already know that it is 100% like doing it with node.js on a regular OS)

On the Mac Server it works.
On the iOS Server there is a problem with the .node file, problem written in the README file.

The script from the Xcode can't be run because of gcc issues, all written in the README file.
Check this:
https://github.com/devernay/xcodelegacy
I found it now, maybe it can help. See the history at the bottom.


How to stay in sync when users replace their access keys?

I created some users with this module, but I also gave them permission to manage their own access keys. One of my users rotated his keys and now terraform plan shows that it wants to create another access key for him. Whats the best way for me to make sure my state is up to date without creating a new key for this user?

Hi David!
Normally, if you want users to manage their own AWS access keys themselves you don't need to create those for them by specifying create_iam_access_key = false. Users will be able to create them once when login to AWS console.


Simply Wrong.

"There are two ways to start the AD FS Federation Server Configuration Wizard....".  Neither of these methods appear to be available in ADFS 4 (2016).  Please update this documentation to reflect that you have to run the configuration wizard on the additional server.

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

ID: fe984b9f-e613-1d70-f4fc-89f21f2814a5
Version Independent ID: cd46dde4-9fd2-1592-caa9-f538131649ac
Content: Add a Federation Server to a Federation Server Farm
Content Source: WindowsServerDocs/identity/ad-fs/deployment/Add-a-Federation-Server-to-a-Federation-Server-Farm.md
Product: windows-server
Technology: identity-adfs
GitHub Login: @billmath
Microsoft Alias: billmath

Thanks for your dedication to our documentation. If we have been unable to review your issue in a timely manner, we sincerely apologize for the delayed response. We have captured the informtion you have provided for review. We are closing this issue for now, but if you feel that it's still a concern, please respond and let us know. If you determine another possible update to our documentation, please don't hesitate to reach out again. #please-close

#assign:IngridAtMicrosoft


@conda-forge-admin, please rerender

Additional comment:
@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I rerendered the recipe in conda-forge/methodtools-feedstock#2.


State (boolean) Widget display not working

. Using Version 1.3.0
. I have a boolean value generated by SensESP representing bilge pump state
. Verified that value is updating correctly in Signal K's data browser
. Created a State (boolean) Value widget for the value
. Widget displays as a yellow box with the label, but no state indication (e.g. on/off)
. When value changes from false to true, the yellow color gets sightly darker, but still no indication of state (as shown in attached screenshots)
. Tried this with Chrome and Edge with same results.
. Signalk/instrumentpanel displays the value as expected
Thank you for all the effort you have put into this software!

Same use case here with a bilge water sensor. It sent true or false but that didn't show well in KIP.
My workaround was to change the output to 0 or 1 and use a linear gauge (min 0, max 1) which changes color more visibly.
Still the state/boolean gauge would be nicer to use, so +1 for the CR.

Any updates on this issue?  any way I can help?

Hi. Are you on version 1.3.0? I had fix issues with this control but maybe not all!
Question: what do you find is a better usecase for Kip compared to Instrumentpanel or other instruments apps?
Also, are you able to run Kip from Master branch? I need people to beta test a major release that is blocking other releases and biz fixes.
Thanks

Hi, Yes, I'm on version 1.3.0, installed via the SignalK appstore
As far as use cases, Kip has a more refined and polished look that I would choose as the (production quality) interface to my SignalK installation, in particular, the 3d-look of widgets and the wide range finish and texture choices.  Also, setup and customization of the widgets is consistent and straight forward.
I would be glad to help test any version, I just need a quick guide on how to build and deploy.
Thanks!

Thanks for the feedback! It's always good to keep track of why a product exists and where things should go next. I'll get to fixing the button as soon as I get this important version released.
Thanks for you offer to help! Do you have JavaScript coding experience or any kind of programming knowledge? If not it you take some effort to set you up and it would probably be easier if I just let you know when I release so you can be an early tester. Do you have regular access to you boat or Pi installation to deploy and test? All my hardware is on my boat and not readily available.
Thanks

Thanks for the quick response, glad to know the button fix is on your list.
I have programming experience, but not in JavaScript.
I do have regular access to the boat, and a test system I can use at home.

I looked at it. The intent was that the color change was indication of the changing state of the boolean value. Maybe not clear the way it's rendured?

This was my first interaction with the boolean state widget so I wasn't sure how it was intended to work.
Looking at the widget rendering (as seen in the screenshots in my report), it's very difficult to determine the state of the variable.
In the absence of a graphical indication, maybe more contrast between the true and false colors (e.g. green/red) would be clearer? thanks!

Agreed. I've implemented this but without ever using it myself - no such device in my setup!
I'll improve on it.
I guess for Boolean values we need the button/switch widget to turn things on/off as we do now and another widget similar to an "active" light indicator.
Ideally I could also do a multi-light indicator widget but that would require much more (spare) time.

Exactly.  It would be an active light indicator for things like Ignition, Bilge Pump, etc.
Thanks for all the effort you're putting into this.

Hi @basil59 @JonyIvy. I made a quick fix in v2 beta 5. Far from good looking but until I do a SVG version it will have to do. It's a light indicator with a label and button. I have no way of testing it! Please send feedback!

Have a look at the new v2.6 Boolean Switches widget.
Button and Light indicator coming soon. Needs feedback on this first design as the other will follow the same design.
Thank you

Thanks for adding the switch panel widget, I like the idea a lot!
A minor observation, the slider switch control size is a little large compared to the switch text and the panel title text sizes.


Email customization problems

I use rest-auth combined with allauth for registration
I customized the reigstration endpoints and also the email being returned to users
whenever I test it out in localhost it returns the email the way I want it to be returned
`Dear TestUser1,
Welcome to Ekopages, your gateway to sustainable education!
We're thrilled to have you join our community. To get started on your journey towards a greener future, please click the link below to confirm your email address:
https://ekopages.com/registration/account-confirm-email/NTE:1rUpCQ:qimz8K0QFUD5ZM8WbMlmcBqq3HSzNp0vNSziMaJRV44/
Once confirmed, you'll have full access to ekopages.com, where learning meets sustainability.
Thank you for choosing Ekopages. Let's embark on this educational adventure together!
Green regards,
The EkoPages Team.
ekopages.com`
but whenever I push to production it returns
`Hello from !
Dear TestUser01,
Welcome to Ekopages, your gateway to sustainable education!
We're thrilled to have you join our community. To get started on your
journey towards a greener future, please click the link below to
confirm your email address:
https://ekopages.com/registration/account-confirm-email/ODI:1rYDAZ:9-iTNT6_wtKMwvWsrLLc1ATuzNwWIxAvTjUxLDP5G4Q/
Once confirmed, you'll have full access to ekopages.com, where
learning meets sustainability.
Thank you for using !`
Ive modified the emails and even the custom adapter still no luck. What can I do to fix this issue?

This isn't an issue with dj-rest-auth, this email is an allauth feature.
Adding USE_I18N = False (disable translations) to your settings.py might fix your issue.
If it doesn't fix it or you want to keep translations:
You're issue resides with the base_message.txt "extends" inside email_confirmation_message.txt. Instead of removing the extends, the easiest fix for you is to override base_message.txt (this way it'll remove this text from all emails)
New File: {yourApp}/{yourTemplatesDir}/account/email/base_message.txt
File Contents:
{% block content %}{% endblock content %}

Original File
Explanation: I removed the translation blocks and the translation (i18n) load from the original
The reason you are getting two results (debug v production) most likely has something to do with translation not working while you're in debug. Theory being: there's no locale set/found in debug and therefor the blocks don't render. I'm not sure why this is. Docs
Unfortunately, I don't know where you're "Green regards," block went and I can't tell with the info provided. I suggest adding it to the new base_message.txt maybe that will fix it, plus it'll show up at the end of every email


[QUESTION] Documentation for import 3.0

Prerequisites

[x] Able to reproduce the behaviour outside of your code, the problem is isolated to Laravel Excel.
[x] Checked that your issue isn't already filed.
[x] Checked if no PR was submitted that fixes this problem.

Versions

PHP version: none
Laravel version: none
Package version: 3.0

Description
I did not found any documentation for import in Laravel Excel 3.0 documentation : https://laravel-excel.maatwebsite.nl/docs/3.0/getting-started/basics
Steps to Reproduce
Go to https://laravel-excel.maatwebsite.nl/docs/3.0/getting-started/basics
Expected behavior:
I would love to see a documentation about import
Actual behavior:
I did not see a documentation about import.
Additional Information
none

see https://github.com/Maatwebsite/Laravel-Excel/issues/1579


Implement additional integration methods

scIB contains a lot of directly usable implementations for integration methods. It should be fairly easy to implement them based on the functions provided in this script.
Integration methods to implement

[x] scanorama
[ ] trvae
[x] trvaep
[x] scgen
[x] bbknn
[ ] saucie
[x] combat
[x] desc

Integration methods to standardize
We already have some integration methods available in our pipeline. They should also be using the scIB package so that we have the same structure for all the integration methods.

[x] scVI
[x] scANVI
[x] MNN

The following packages have dependency problems and could not easily be implemented by now:

trvae (not a problem because trvaep is just another implementation of it)
saucie

Seurat integration would be very valuable but can not be implemented using scIB since it is a pure R package. Maybe @serareif could have a look at this?

There are multiple R-based integration methods, created separate issue for this (#18)


Merge with NuBuild

There is a NuBuild project with similar concepts. ( https://github.com/bspell1/NuBuild )
I wish both projects are merged into one maintained project for NuGet packaging.

I think consolidating would be a good thing as well. I've never used NuBuild so I can't comment for sure, but from reading their README I don't see any particularly unique and mandatory features that NuProj doesn't offer. Given NuProj is based on CPS and NuBuild appears to be based on MPFproj, I think NuProj may be the better platform on which to build the unified solution.
Have you spoken with the NuBuild folks?

I find NuProj an easier therefore a better choice for me as a beginner package writer.
So other teammates would like something easier to use.
I opened an issue there https://github.com/bspell1/NuBuild/issues/63 .
I hope that project is not dead and we get an answer :)

I'm the guy who forked NuBuild v1.x to v2.x (https://github.com/lmagyar/NuBuild) and added nearly the same main features as in NuProj. :)
I started to play with NuProj (ie. not a comprehensive test), read some doc/QA, but minimal source reading. I've found these issues (maybe bug, maybe I misunderstood something, maybe new features), so a quick analysis/comparison:

NuProj doesn't calculate the minimal set of the dependencies (installed packages != dependencies), it's tricky, but NuGet command line contains a "minimal set walker", I've based on that algorithm and created a DependencyManager "god class" that finally spits out FrameworkReferences and DependencySets. It can handle multiple framework targets also.

NuProj doesn't include the correct frameworkAssemblies (eg. System.Messaging wasn't included during my quick test, but it is not part of a default C# project, so I think it should be included).

When targeting multiple framework versions, only the lowest version is included in frameworkAssemblies, is it a feature, that NuProj checks whether the reference list is identical for different framework versions and adds only the lowest? Will this work, when you add the package to the higher version framework (I didn't test it)? It is possible, that different sets are required for different framework versions, so is this implementation correct?

Is it possible to use the referenced binaries' properties (id, version, author, etc)? It is important to maintain these information at only one place.

If it is possible to use the referenced binaries' properties, and there are multiple referenced binaries, but with different id/name, title, description, can you select which binary will be the source for the properties? This should be a property/attribute of the ProjectReference.

Can you limit the major version of the dependencies?

Can you copy files to the output folder (next to the .nupkg file)?

NuBuild v1.x legacy, I've never used it: you can name the .nupkg file without the version.

If the referenced project's output is an .exe, NuProj should include it, the target folder in the package (eg. /lib or /tools) should be an optional property/attribute of the ProjectReference or a global setting.

To specify the output dir (and make it depending on Release/Debug configuration), would be useful.

To specify build events, would be useful. There are strange packaging situations, where we need them.

There is the .pp extension in NuGet for source code transformation, a'la pre-processing. We created the .ppp extension for pre-package-processing: before these text files are added to the package builder, $something$ variables can be replaced in them with the properties of the package (eg. $version$).

We add the NuBuild tool version to the project file. So if one developer edits the project with a newer version and adds some new properties or uses a new feature, but another developer (or the build server) uses an older version that eg. can't handle the new property, it causes a build error ie. forces an update. Version is updated when the project file / properties are edited.

Handling mixed AnyCPU, x86, x64 projects during MSBuild build was painful. MSBuild (even 12.0) can't determine the project build order from ProjectReference items (we have to use MSBuild task in this case on the referenced projects), but VS builds correctly. So we had to run MSBuild directly for the referenced projects before packaging, but only when building outside the VS. I see BuildingInsideVisualStudio conditions in your .targets file (simply searched for it, didn't test it), but I had no time to analyze your .targets. :) This feature is important, if you build & pack mixed eg. C++, hardware specific, crypto binaries.

Am I understand correctly: to use NuProj on a build server, eg. TFS you have to edit the .nuproj file manually? And how to install the NuProj.nupkg in a NuProj project? NuGet filters projects based on the project file extension, it is impossible to install it in to the NuProj project. It seems to me as magic, if it is not obvious, developers will screw it. I couldn't find clear description in the doc.

Strange: after installing the .vsix from an .msi, the Uninstall button should be grayed out in VS, you shouldn't be allowed to uninstall the .vsix without the uninstallation of the .msi. I've found InstalledByMsi="true" in the .vsixmanifest, strange.

NuProj install uses VS2013Setup/VS14Setup actions and those use "devenv.exe /setup". This is the reason, that the installation freezes at 99%. ;) The /updateconfiguration option is much faster, it's just a blink (it only touches the extensions.configurationchanged file in the Extensions folder). You need a CustomAction for this.

Why I forked NuBuild? The breaking change was that NuBuild v2.x uses C# project flavor and not standalone project system. This way you can install NuGet packages into these packaging projects (NuGet accepts the .csproj extension but filters out the .nuproj). It is more flexible than creating and sharing project templates. And project flavors have very nice Properties pages. :) But I understand, this is not an option at all.
How to continue? Currently my productivity is very limited due to my medical condition. So if you accept these issues as enhancements, I prefer to contribute only what is complex but requires lesser knowledge of NuProj internal logic (eg. better FrameworkReferences and DependencySets).

Just couple of quick comments:

:open_mouth: This looks interesting.
Currently frameworkAssemblies must be added manually and we don't have CPS support for them.
This appears to be a :bug:.
#68 needs to reviewed, updated, merged and extended functionality to other properties.
See 4.
Yes. We have support for both .csproj to nuget and nuproj dependencies.
Nope, we don't have support for that.
What would be a use case for that feature?
You can specify, if the output of referenced project should go to lib, tools, ... folders.
Eeeyup. I think CPS can support that.
I prefer to use BeforeTargets and AfterTargets attribute to extend build functionality.
Hrrrm, interesting idea.
I think it would be better to use NuProj nuget package in this case to have latest project system within solution.
I haven't noticed issues you described in NuProj.
NuGet does not have support for CPS projects we would require. I believe they are working on it. @AArnott will know more.
:bug:
Should be easy to implement, even easier if I could just C&P it from somewhere.

May I suggest a quick triage:
create new issue/bug: 16
create new issue/improvement: (1-2-3) together, 7, 10, 12, 17
I can start to investigate: (1-2-3), 17
icebox: 11, 13, 15
already an issue: (4-5)
false alarm: 6, 9, 14
has no use case: 8

Thanks for the very impressive list, @imagyar and @kovalikp for jumping on it so fast!
My quick read is that your interests are compatible with NuProj so I think the bugs/features that are missing from NuProj would make good additions. And it sounds like you two are already working on whittling down that list to an actionable set. Great. :)

Another false alarm: 16 - the uninstall button is grayed out, sorry, I've mixed NuProj with the Package Manager.

Correction to item 6 in my comment: version constraints for .csproj references are implemented in #129, which waits for review and merge.

Perhaps at some point we can edit the original issue comment with the latest draft of the edited list of work items we'd want to do so we can discuss and ratify the plan overall. Then break it out into individual filed issues.

OK, I'm currently working on it.

Recommended issues based on my previous comment:

Don't freeze installation at 99%

NuProj install uses VS2013Setup/VS14Setup actions and those use "devenv.exe /setup". This is the reason, that the installation freezes at 99%. ;) The /updateconfiguration option is much faster, it's just a blink (it only touches the extensions.configurationchanged file in the Extensions folder). You need a CustomAction for this.

Automatically calculate dependency minimal set and framework assemblies from project references

NuProj doesn't calculate the minimal set of the dependencies (installed packages != dependencies), it's tricky, but NuGet command line contains a "minimal set walker", I've based on that algorithm and created a DependencyManager "god class" that finally spits out FrameworkReferences and DependencySets. It can handle multiple framework targets also.

Add boolean <LimitDependencyMajorVersion> to project properties / Property Pages

This is an alternative to <VersionConstraint> #129 in <ProjectReference>, <LimitDependencyMajorVersion> automatically sets the constraint on all dependencies (on .nuproj project references and on installed NuGet packages in referred binary projects), you do not need to enter constant values. Eg. when the installed NuGet package version is 1.2.3 in a referenced binary project, the automatically limited major version constraint will be: [1.2.3,2.0.0)

Implement "Copy to Output Directory" functionality on project items

The property editor already maintains this value in the .nuproj file, the .targets file should execute it.

Add "Output Dir" to the Property Pages, and add it as configuration/platform dependent property

This is already in the project file, but not on UI.

Implement .ppp extensio for pre-package-processing

There is the .pp extension in NuGet for source code transformation, a'la pre-processing. Implement .ppp extension for pre-package-processing: before these text files are added to the package builder, $something$ variables can be replaced in them with the properties of the package (eg. $version$).

And I've tested NuProj much deeper, some improvements to add:

Extend project reference's properties window

Add <PackageDirectory> and <VersionConstraint> #129 properties to the project reference's properties window. Currently there is only Identity and Path, it should be obvious that there are these properties without reading the doc and especially without editing the project file. Without this, what is the difference between text-editing the project file vs. a .nuspec file?

Group properties in the Property Pages

Eg. "Metadata", "General", "Config specific"

Add description to properties in the Property Pages

Eg. what does "No Package Analysis" mean?

Extend Property Pages with already existing properties

Add "Development Dependency" and "Language" metadata to Property Pages.
Add "Project defaults (template)" to Property Pages and let user choose from file-system. #56?

The "Require Licence Acceptance" property processed improperly

Even if the false value of "Require Licence Acceptance" is added to the project file, it can't overwrite the template's true value. A true value in the project file can overwrite a false value in the template.
The $(RequireLicenceAcceptance) macro has constant False value in the macro editor and replaces as an empty string during build, even when the template and the project file has true value.

Add "<Edit...>" option to the boolean "Require Licence Acceptance" property

What if somebody wants to use macros?

Treat empty properties in Property Pages as missing/null values

Does "<inherit from parent or project defaults>" option simply means, that the property will be deleted from the project file? And this option is only there, when the property is already in the project file, when you enter a value into an empty property, this option will be present only after Apply is pressed. But after you delete a property from the project file and reopen the property page, the field is simply empty. This is illogical and disturbing. I recommend 2 options:

display missing properties always as "<inherit...>" option (ie. null = "<inherit...>")
when a property is empty in the property pages, automatically delete it from the project file and forget this "<inherit...>" option, ie. empty=null=delete (I prefer this, because this is the natural and simple way to specify sg. in a .nuspec file also)

In "<inherit from parent or project defaults>", what does "parent" mean at all?

And finally questions:

Why these metadata properties have to be specified in the project file and can't be inherited from the template? id, version, title, authors, owners, description #57?

Why these metadata properties can't be inherited from the template? minClientVersion

Why these metadata properties are not in the macro name/value pair list? icon/project/licence url, summary, tag, release notes

Why these metadata properties have no any metadata property values in the macro name/value list? They can't refer any other metadata property. id, version, title, author, owner


Unrecognized Device Blue Pill to Blackmagic

Followed instructions to download blackmagic to blue pill:

Hook up an UART adapter to Bluepill (A9 - RX pin, A10 - TX pin).
Set Bluepill jumpers to the bootloader mode (BOOT0 jumper=1, BOOT1 jumper=0).
Plug in UART adapter to the computer. Run "STM32 Flash loader demonstrator".
Download to device blackmagic_dfu.bin at offset 0x8000000 with "Global Erase" option. < verified
Download to device blackmagic.bin at offset 0x8002000 with "Erase necessary pages" option. < verified
Put Bluepill jumpers back to the operational mode (BOOT0 jumper=0, BOOT1 jumper=0).
Using Zadig after that to attempt to install libusb-win32 fails. < FAILS

When plugging back in the Bluepill windows no longer recognizes the device.

Attempting to install libusb-win32 drivers to the device with zadig fails as well.

This happened on 2 blue-pills.
Plugging in the blue-pills before attempting this process showed up on windows as STM32X device and the fact that UART was successful tells me it's unlikely the Dataline resistor is at fault here. Not sure what to do at this point

Maybe this https://github.com/joric/nrfmicro/wiki/Bootloader#possible-issues

I went through those before posting:
The device can be connected overUART so that rules out the pull up resistor.
Windows doesn't recognize the device at all so the other issue referenced doesn't help me unfortunately. Their device just needed different USB drivers.
My running theory is the dfu flashed at address 0x800000 doesn't work for my board.

I bought another set of bluepills. This set matches the images on the troubleshooting page.
Checked the resistor value and it is the correct 10k.
Connected to the device over UART and realized something:
On both boards, iteration doesn't matter, it only detects 32kb of flash.
It looks like a minimum of 64kb is required for blackmagic probe.

A side by side of the 2 versions of blue pill, left one is the first set I bought, right one is the second set
I just noticed the component that has 32k written on it as well. Checking the aliexpress link you gave the first offering of blue pill on aliexpress also has that 32k:

Ok the issue is clear now.
The blue pills I bought off amazon (both types) use the cheaper STM32F103G6T6A (32kb flash)
The aliexpress blue pills use STM32F103C8T6 (64kb flash)
I guess let this be a warning that there are blue pills with smaller flash.


Refactor: navigation_obstacle_3d

Clean NavigationObstacle3D

Add _ before private methods
Fix code duplication in NOTIFICATION_PAUSED and NOTIFICATION_UNPAUSED
Add some const keywords
Remove redundant parenthesis
Simplify if-if
Rename one-letter variables

See https://github.com/godotengine/godot/pull/69988.
Could prepare a patch for those refactor changes that still apply but parent node and estimate radius are removed.
Obstacle3D and Obstacle2D share mostly the same code so should be always refactored together.

Closing as the obstacle has evolved so much since that everything in this draft is obsolete by now.
Thanks for the PR contribution nonetheless!


FR: Cheat Sheet/Color Reference

I collect different color schemes and one of the most useful things I've seen on how to implement are guides like this one for solarized:

via: http://www.zovirl.com/2011/07/22/solarized_cheat_sheet/
There's a similar idea in the catuppchin docs:

https://github.com/catppuccin/catppuccin/blob/main/assets/palette/palettes.svg
These help folks who don't have much experience setting up a theme do it, and is a really handy reference. This FR is to propose this idea!

You can find the color reference here:
https://stephango.com/flexoki

unless I'm missing something that looks like a color reference/palette and not an implementation guideline; feel free to close if not desired/out of scope :)

A mappings section has been added


Update lodash

Coverage remained the same at 98.752% when pulling f97a0c3d38816d268d127b284698347a5619cb47 on macbre:update-lodash into 8df4a328c5019fd74e625c36ea18bbad82cc8dbf on jshint:master.


Update README.md

Updated ClloudFront to CloudFormation
Issue #, if available:
Description of changes: I believe this is a tyo and should be CloudFormation instead
Description of testing performed to validate your changes (required if pull request includes CloudFormation or source code changes):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thanks for your PR, good spot of the typo!
We are integrating it into another PR


In Arrays

Declaring and Initializing Values
it is written "This means that each string has the first word set to nil and the second word set to 0."
But, this shouldn't be "This means that each string has the first word set to nil and the second word set to an empty string ("")." ?

Not really. Let's review the whole paragraph from the https://tour.ardanlabs.com/tour/eng/arrays/1:

A string is an immutable, two word, data structure representing a pointer to a
backing array of bytes and the total number of bytes in the backing array. Since
this array is set to its zero value state, every element is set to its zero value
state. This means that each string has the first word set to nil and the second
word set to 0.

A string is two word data structure. First word - a pointer to a backing array, second word - the total number of bytes. So, "the second word set to 0" is correct, because it's the number of bytes.


ideas for refactoring: image_parser module is too large

The extract.image_parser module has become a catch-all of functions.  Many of these can be moved out.
I'll start by doing the following across two PRs:

copying functions to new modules in appropriate locations
changing import statements to the new modules/locations
finally, remove the old functions from the old modules (maybe a 3rd PR?)

I suggest creating one PR with refactor to which multiple individuals contribute and initiate one or two PRs. Our goal should be to describe dataflow with names of the modules/functions.
For example,
Load images and metadata, write output:
io.load_scienion(path, metadata)
io.load_octopi(path, metadata)
io.save_OD()
io.save_intensities()
io.save_background()
Image->OD per well:
analyze.segment_well
analyze.compute_background
analyze.find_array_spots
analyze.compute_OD
debug plots:
debug.plot_overlay
debug.plot_icp
OD->calls across wells:
measure.standard_curve
measure.plot_OD(antigen,serum)
measure.antibody_concentration
The last module (measure ) needs to be defined.

I suggest creating one PR with refactor to which multiple individuals contribute and initiate one or two PRs. Our goal should be to describe dataflow with names of the modules/functions.

One difficulty with this approach is that there can not be any permission, PR, or other check that someone pushes changes we all agree upon.  Contributors to this branch will simply "push to remote".  And all other contributors will have to frequently "pull from origin" and resolve conflicts to make sure we are synched with new pushes.
It is possible to do PR to this branch.  I think we each can have a repo fork and submit a PR across forks/branches.


Handle unhandled exceptions reading file on Android

Proposed solution to #6
I found exceptions on these paths were not handled. My method was to artificially throw a RuntimeException in copyContentUriAndReturnFileInfo and see what operations caused a crash.

Closing in favor of #8


Change sorting of tiles in the TileMap palette to be based on ID instead of atlas name

Godot version:

3.2.4 beta 6 mono
OS/device including version:

win10 64
Issue description:

As the title indicates, the alphabetical order in the tile IDs is broken.

Steps to reproduce:
Add some textures to a tilemap node, delete some texture again, add another.
Minimal reproduction project:

As I wrote on Discord:

It's not a bug, alphabetical comparison is done character by character, and 2 comes before .. The order would be correct if I renamed icon.png to icon1.png :)

Now, the sorting is done based on the file name, and maybe it would be preferred to have it based on the tile ID. In the above screenshot I created first a tile in icon1.png (0), then in icon2.png (1), and finally another one in icon1.png (2).

As I wrote on Discord:

It's not a bug, alphabetical comparison is done character by character, and 2 comes before .. The order would be correct if I renamed icon.png to icon1.png :)

Now, the sorting is done based on the file name, and maybe it would be preferred to have it based on the tile ID. In the above screenshot I created first a tile in icon1.png (0), then in icon2.png (1), and finally another one in icon1.png (2).

Wouldn't it be more appropriate for Godot to sort them by ID number?

Wouldn't it be more appropriate for Godot to sort them by ID number?

Yes that's an option if that's preferred by most users. I never used TileMap with multiple atlases so it wasn't an issue for me, would be good to hear from other users. It might also be fixed in 4.0 already by @groud's refactor, but we could still change the ordering in 3.2 if there's a consensus.

Yes that's an option if that's preferred by most users. I never used TileMap with multiple atlases so it wasn't an issue for me, would be good to hear from other users. It might also be fixed in 4.0 already by @groud's refactor, but we could still change the ordering in 3.2 if there's a consensus.

Well I think it would be the most appropriate because normally the name of the image is something like "cityTileset.png" or "dungeonTileset.png" and the order would be something strange.

Well I think it would be the most appropriate because normally the name of the image is something like "cityTileset.png" or "dungeonTileset.png" and the order would be something strange.

This is no longer a problem in the new TileMap.

This is no longer a problem in the new TileMap.

Closing as this enhancement is not applicable anymore in master.


GDB/ltrace errors when debugging drow payloads

Hey zznop.

While trying to figure something out I noticed that GDB and other tools like ltrace  don't like the binaries produced by drow. I've included the original target binary and the backdoored one.
ls.gz
ls-bd.gz

"0x7ffc14b4cce0s": not in executable format: file format not recognized
------- tip of the day (disable with set show-tips off) -------
Use the canary command to see all stack canary/cookie values on the stack (based on the usual stack canary value initialized by glibc)
pwndbg>
ltrace ./ls-bd
Couldn't get section #1 from "/proc/994604/exe": invalid section index

While I have you I might as well ask - Are we supposed to be able to call libc functions from drow payloads? I've been experimenting with different payloads like the one below and haven't been able to figure it out. You can see I'm just trying to call libc puts. I've tried various ways like puts@PLT. Do I have to find the address of libc functions my self and then call them or is the an easier way? Thanks!

.intel_syntax noprefix
jmp past
message:
.string "See, I am drow, and I'd like to say hello,\n"
past:
lea rdi, [rip + message]
call puts
ret

Sorry for the late response: I noticed the same and have not dug into exactly why. My best guess is it doesn't like some of the mods that drow is making to program headers.
As for your assembly, drow injects shellcode payloads. When the example payload is built, only the .text section is objcopy-ed out of the ELF to the shellcode bin file (see here). Therefore you can't use imports, such as libc functions, without knowing / resolving the address yourself. All code needs to be self-contained and position-independent, as there is nothing that will fix-up relocations for you.

I think I've found the root of the problem. At least it stopped crashing gdb for me.
The problem is adjusting the elf headers: e_shoff and e_phoff in expand_section(). It's written like this:
printf(INFO "Adjusting ELF header offsets ...\n");
if (ehdr->e_shoff > tinfo->base)
	ehdr->e_shoff = ehdr->e_shoff + patch_size + stager_size;
if (ehdr->e_phoff > tinfo->base)
	ehdr->e_phoff = ehdr->e_phoff + patch_size + stager_size;

However, it shouldn't adjust ELF header offsets if nothing was expanded beforehand. In other words, the adjustment should only come when the inject method is METHOD_EXPAND_AND_INJECT. For example, like this (not the best look, but works as an example):
if (sinfo->inject_method == METHOD_EXPAND_AND_INJECT) {
	printf(INFO "Adjusting ELF header offsets ...\n");
	if (ehdr->e_shoff > tinfo->base)
		ehdr->e_shoff = ehdr->e_shoff + patch_size + stager_size;
	if (ehdr->e_phoff > tinfo->base)
		ehdr->e_phoff = ehdr->e_phoff + patch_size + stager_size;
}

For some reason, this part doesn't account for this condition. After this, the problem with gdb and other elf utilities disappeared. Maybe this should help?


How to mutate the default form state alias ?

Hello, Guys,
Just a simple question as topic, the default redux form state alias remains as 'form', is there a way to redefine ?
Thanks a lot ;)

I guess this is what you want: http://redux-form.com/6.5.0/docs/api/ReduxForm.md/#-getformstate-function-optional-

Thanks @mqklin.
@be-next-hotdog, please note that it's better that you ask question at StackOverflow, our GitHub issue tracker is not the proper place for this.


Four small fixes (all found using phpstorm)

Thanks for this @stweil.  I'd like to switch from JSHint to ESLint at some point soon.  The two .js issues would have been caught by ESLint rules.

It doesn't look like we have a CLA on file for you.  Would you be able to submit one?

Am 12.02.2015 um 19:59 schrieb Tim Schaub:

It doesn't look like we have a CLA
https://github.com/openlayers/cla/blob/master/signed-agreements.md
on file for you. Would you be able to submit one
https://docs.google.com/spreadsheet/viewform?formkey=dGNNVUJEMXF2dERTU0FXM3JjNVBQblE6MQ?
—
Reply to this email directly or view it on GitHub
https://github.com/openlayers/ol3/pull/3233#issuecomment-74129954.

Done.

Thanks for the contribution!


Q replication fork restart

I would like to annotate a GP involved in "replication restart"
GO:0031297    JSON
Definition (GO:0031297 GONUTS page)
The process in which a DNA replication fork that has stalled is restored to a functional state and replication is restarted. The stalling may be due to DNA damage, DNA secondary structure, bound proteins, dNTP shortage, or other causes. PMID:11459955 PMID:15367656 PMID:17660542
replication restart | related
replication fork restart | related
Does anyone know why these are related? The first sentence of the def appears to be describing "replication restart"

@mah11  will likely know the answer

Please stop saying I know things I don't.
From the definitions, and from a few papers I've seen in recent months, I gather that restarting replication is a knock-on effect -- albeit an adaptively advantageous effect -- of the DNA binding, recombination, etc. events that make up the larger replication fork processing ... er, process.
It might be worthwhile to edit the definition to describe the fork processing steps in a little more detail, but I don't have a big problem with the "restart" synonyms being related.

I said "likely" because you work on the DNA metabolism area of curation.
Apologies if it offends you that I think you might know things.

I used  replication fork processing


problem with carousel

carousel images are of unequal sizes , i want to work on this issue

Assigned, one day for you, go ahead
All The Best❕

@YooAshu Good Job❕


Merge homebrew/master into linuxbrew/master

@sjackman No sign of it on Homebrew/install. I suspect the underlying Bash version on the images has changed.

😕 Okay. I'll try to figure out this build failure in a separate PR.


Operation not permitted - /usr/bin/thor

When I try to install Bourbon with $ sudo gem install Bourbon it gives me the error:
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/thor

I'm not sure what to do.
Thanks in advance.

This doesn't really address your issue, but it should not be necessary to install gems using sudo. Have you looked into installing gems into a directory you own and adding this directory to your PATH?

Thanks elomatreb.
When not using sudo it gives me this error:
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
I have to admit that i'm not a Terminal specialist ;-)
I hope you can bring me a step firther.

This is a duplicate of #820 and likely not directly a Bourbon issue, but more of permissions issue with your local development environment…
Closing this issue in favor of consolidating conversation in #820.

You closed the issue without resolution and linked it to another answer that was closed due to lack of response.
Issue not solved @tysongach

+1

@jeremykenedy @lab-js Are you able to install other gems, or is this isolated to Bourbon? What’s your development environment look like?


OpenXRay

Project link: https://github.com/OpenXRay/xray-16
Project license: https://github.com/OpenXRay/xray-16/blob/xd_dev/License.txt
Does it work on 64-bit only Linux: YES
Is source code available?: YES
Is source code stored in Git?: YES
List of Steam AppIds of supported games:

https://store.steampowered.com/app/41700/STALKER_Call_of_Pripyat/

Additional information
My progress so far is at https://gitlab.com/d10sfan/luxtorpeda-openxray. It'll build with this, although i had to change a few includes to get it to work with the environment. There's a patch file (https://gitlab.com/d10sfan/luxtorpeda-openxray/-/blob/master/0001-Changes-to-make-Linux-compile.patch) that goes in more detail. The xrRender_GL isn't required, was an attempt to get around an issue where the game was complaining about an opengl extension it should have had access to.
I pulled in the latest from their dev branch and tried again. This time, it didn't complain about that extension, but it's seg-faulting. Also, it seems to be trying to use GLEW 1.10 instead of 2, like I gave it. I manually gave it 2 instead, which is probably contributing to that seg-fault.

Continued progress in https://github.com/luxtorpeda-dev/packages/pull/54


Get teams that end up against

Hi
Great job! This is the best.
My main question is:

When teams move to the next round, is it possible to get those teams names, how end up against each other and I will get the results of that match and update results data. I understand that this is possible with “save” method, but I don’t find a method to get teams that end up against.
Other questions that I can work around, but would be cool if there are solutions for these:
Is it possible to make winner of the team that has less points?
If teams play best out of 3 games, is it possible to show all the 3 games?

Hi, great to hear you've found it useful!
Answer to all three of the questions is unfortunately that there is no built-in capability.

you would need to implement your own function that could calculate and return the match information of a specific round based on the result object.
you could modify the code or enhance the API by passing a function that determines from given scores which team should propagate. This should be fairly straightforward to do.
you'd need to be able to have more complicated results for matches than just numbers. These result objects would then need to be passed to your custom rendering function (both "edit" and "view").