date type column values returned as date time

my column is date column with values as YYYY-MM-DD.
when I run the query it returned as  Sat Sep 30 2028 20:00:00 GMT-0400 (Eastern Daylight Time)
Please advise how to fix this thing.
What I want is what is stored in the database. No implicit conversion of date types.
Thanks in advance.
Gaurav

This topic was discussed here. You can easily solve it with myDateColumn.toISOString().slice(0,10).


Constraint dynamical addition fails

See testCostas of DynamicPostTest

This happens with some global constraints having an internal data structure that is initialized at constraint creation (e.g. alldiff AC build a bipartite graph with a value mapping).
=> If the constraint is created at the middle of the search, then these data structures are initialized with the current domains. Therefore, it does not handle values that had been filtered previously. This means a problem may occur upon backtrack (when these values come back into the domains). And this is somehow normal.
In conclusion, we may need to review global constraints to identify which ones cannot be dynamically added

Fixed in 3.3.2


Ranges in episodes

The ability to download/list ranges: 1-100 to mean from episode 1 to episode 100. Better than: 1,2,3..,100. Apologies if this is implemented but I couldn't figure it out.

No worry, it's not implemented. I thought about that, on the other hand, using a for loop to iterate a range and run the script is already pretty handy. That's why I didn't add the function to use the range of episodes as input.

Got you. However, writing for loops in the command line is really daunting. I would say the whole output of animepahe-dl -s [slug] is a bit rough, tbh. I would suggest a -v, --verbose flag because having a big list of metadata (with date) is always necessary. You could check https://github.com/vignedev/twist-dl (on master branch and merge autoselect branch). It could use a keymap for selecting/deselecting all, but it's quite nice.
I think it's important to output how many episodes are there. The syntax 1-20,25,30-40 would work great, I think. If you can make it so that having no input (on enter) would mean all, that would be good. Same goes for the flag -e.

Alright, let me check if I can make the syntax you mentioned 1-20,25,30-4 work in the script.

@smhmd The episode range is implemented in this commit. Would you like to give it a try? Hope you'll be happy fort that :)

Works great! You got it.


Feature request: use pip extras for kms integration dependencies

What sort of feature would you like to see?
tink 1.7.0 was relatively lightweight to install:
https://github.com/google/tink/blob/1.7/python/requirements.txt
but 1.8.0 with its integrations with GCP and AWS KMS brings a lot of dependencies along with it:
https://github.com/tink-crypto/tink-py/blob/5934f47df29666ccadaa5ff4cc2ba626f82bcdf5/requirements.in
Would be really nice if pip "extras" were used in the tink python package so that we could select those as optional dependencies only if we needed them, ie to install them all it'd be something like:
pip install tink tink[gcpkms] tink[awskms]
Have you considered any alternative solutions?
I considered staying in 1.7.0 but a vulnerable protobuf lib is used so I prefer not to.

Hi @darkvertex, the reason for these dependencies is that we have stopped depending on tink-cc-awskms and tink-cc-gcpkms for implementing KMS integrations, and instead use native Python implementations.

Would be really nice if pip "extras" were used in the tink python package so that we could select those as optional dependencies only if we needed them, ie to install them all it'd be something like:
pip install tink tink[gcpkms] tink[awskms]

Thanks for the suggestions, I'll look into this.


Fix composition section on combination pages

Fixes #673

Excellent catch @sujaypatil96! You've set a good example of finding a bite-sized problem and proposing a solution (which I am now going to approve and merge!)


Reached illegal state! IPV4 address change from defined to undefined

Current Situation
Since updating code based to HAP-Nodejs 1.10 and subsequently having ciao updated to 1.3.0, been seeing these errors below in my accessory logs
Thoughts on why now occurring?
AssertionError [ERR_ASSERTION]: Reached illegal state! IPV4 address change from defined to undefined!
    at MDNSServer.handleUpdatedNetworkInterfaces (/opt/Nest_accfactory/node_modules/@homebridge/ciao/src/MDNSServer.ts:695:18)
    at NetworkManager.emit (node:events:531:35)
    at NetworkManager.checkForNewInterfaces (/opt/Nest_accfactory/node_modules/@homebridge/ciao/src/NetworkManager.ts:345:12)

Logs
AssertionError [ERR_ASSERTION]: Reached illegal state! IPV4 address change from defined to undefined!
    at MDNSServer.handleUpdatedNetworkInterfaces (/opt/Nest_accfactory/node_modules/@homebridge/ciao/src/MDNSServer.ts:695:18)
    at NetworkManager.emit (node:events:531:35)
    at NetworkManager.checkForNewInterfaces (/opt/Nest_accfactory/node_modules/@homebridge/ciao/src/NetworkManager.ts:345:12)

Configuration
.

Environment

OS: Docker NodeJS image, 20-Alpine3.20
Software:
Node: 20.15.1
npm: 108.2

Process Supervisor
other (Explain in Additional Context)
Additional Context
No response

This is not stale.. Still occuring
Aug 28 09:36:00 garagedoor node[11165]: AssertionError [ERR_ASSERTION]: Reached illegal state! IPV4 address change from defined to undefined!
Aug 28 09:36:00 garagedoor node[11165]:     at MDNSServer.handleUpdatedNetworkInterfaces (/home/pi/node_modules/@homebridge/ciao/src/MDNSServer.ts:695:18)
Aug 28 09:36:00 garagedoor node[11165]:     at NetworkManager.emit (node:events:526:35)
Aug 28 09:36:00 garagedoor node[11165]:     at NetworkManager.checkForNewInterfaces (/home/pi/node_modules/@homebridge/ciao/src/NetworkManager.ts:345:12)
Aug 28 09:36:00 garagedoor node[11165]:     at processTicksAndRejections (node:internal/process/task_queues:95:5)

If you can recreate this, at will, turn on debugging please. There should be network change messages around it like Detected network changes that will provide a bit more context. I’ve struggled to recreate this one at will, unfortunately, and without that…I need data. 😄
Add the environment variable:
DEBUG=ciao:NetworkManager

And let’s see what comes up in/around the assertion error that’s generated and let’s get this one tracked down for everyone’s sake. 😄

@hjdhjd
Oct 27 17:34:28 irrigation node[19804]: 2024-10-27T06:34:28.182Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , fd13:730d:c0d0:c945:509b:4bd2:3713:6503 -> undefined }]!
Oct 27 17:35:43 irrigation node[19804]: 2024-10-27T06:35:43.577Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , undefined -> fd13:730d:c0d0:c945:509b:4bd2:3713:6503 }]!

Oct 28 18:17:21 irrigation node[19804]: 2024-10-28T07:17:21.037Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , fd13:730d:c0d0:c945:509b:4bd2:3713:6503 -> undefined }]!
Oct 28 18:18:36 irrigation node[19804]: 2024-10-28T07:18:36.421Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , undefined -> fd13:730d:c0d0:c945:509b:4bd2:3713:6503 }]!
Oct 29 10:02:04 irrigation node[19804]: 2024-10-28T23:02:04.385Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , fd13:730d:c0d0:c945:509b:4bd2:3713:6503 -> undefined }]!
Oct 29 10:04:50 irrigation node[19804]: 2024-10-28T23:04:50.176Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , undefined -> fd13:730d:c0d0:c945:509b:4bd2:3713:6503 }]!
Oct 29 10:49:33 irrigation node[19804]: 2024-10-28T23:49:33.131Z ciao:NetworkManager Detected network changes: added: [], removed: [], changes: [{ name: wlan0 , <IP_ADDRESS> -> undefined , fd13:730d:c0d0:c945:509b:4bd2:3713:6503 -> undefined }]!
Oct 29 10:49:33 irrigation node[19804]: AssertionError [ERR_ASSERTION]: Reached illegal state! IPV4 address change from defined to undefined!
Oct 29 10:49:33 irrigation node[19804]:     at MDNSServer.handleUpdatedNetworkInterfaces (/home/pi/node_modules/@homebridge/ciao/src/MDNSServer.ts:695:18)
Oct 29 10:49:33 irrigation node[19804]:     at NetworkManager.emit (node:events:526:35)
Oct 29 10:49:33 irrigation node[19804]:     at NetworkManager.checkForNewInterfaces (/home/pi/node_modules/@homebridge/ciao/src/NetworkManager.ts:345:12)
Oct 29 10:49:33 irrigation node[19804]:     at processTicksAndRejections (node:internal/process/task_queues:95:5)

Thanks, @n0rt0nthec4t I'll take a closer look this week. Offhand it looks like the WiFi interface is losing it's connectivity, and therefore it's IPs...and then reacquiring them a few moments to minutes later.
Appreciate your help capturing the data to this point. Will update with more as I track this down further.

Some other observations, this only starting occurring in like a recent version of CIAO. maybe 1.2 or later? Doesnt seem to happen with bonjour or AVAHI, but thats just conjecture

I’m aware - don’t need more data at this time. Will get back to you when more info or testing is needed. Thanks. 😄

I'm having the same error on a new Raspberry Pi 5, standard Homebridge image with a setup restored from a long-term install on a Mac Mini that finally failed.  It intermittently loses connectivity, and seems to also restart Homebridge on its own at least some of the times that the network resets.
Reviewing the logs after the most recent night of frequent restarts, one of the restarts was preceded by the same error as in the original report, which came after repeated lines of:
Warning: no IPv4 address available on eth0
I get those no IPv4 address errors a lot - not always accompanied by restarts.
I think the network loss is unrelated to Homebridge - I also lose ssh and pi-hole, then everything comes back a bit later. But home bridge doesn't seem to like it. So I'm trying to fix that problem, but thought I should chime in on this thread to report that it's not limited to n0rt0nthec4t's config.
Environment
OS: Debian Bookworm (12)
Node: 20.18.0
npm: 10.8.2
Raspberry Pi 5, 4GB, no accessories except the fan connected, also running pi-hole and wireguard, nothing else

While I appreciate the earnestness, don’t need any additional feedback at this time on this issue. It’ll be resolved in an upcoming update. Thanks!


For windows container, "docker cp" command copy file to a volume folder not work

Steps to repro:
Create a volume
docker volume create --name testvolume

Create a windows container using this volume:
docker container create -it  --name testcontainer -v testvolume:c:/volumefolderr mcr.microsoft.com/windows/nanoserver:1809

Use docker cp commmand to copy a file to the volume folder
docker cp '.\testfile.txt' testcontainer:c:/volumefolder

Attach into this container, and the file doesn't exist in the volume folder
docker start -ai testcontainer

A typographical error; as per the commands posted, the volume is mounted at C:/volumefolderr (with an extra 'r') whereas the destination path for the file copy being specified as C:/volumefolder casing file to be copied into the container layer instead into the volume.

If anyone uses windows pods, it may be hard to get files copied to the pods from local machine with those linux paths for kubectl cp command:
Procedure to copy files from local machine to kubernetes pod: (especially windows container)

I want to copy node.aspx from my local machine to podname:\c:\inetpub\wwwroot
First upload Node.aspx to your cloud drive, path will be /home/{your_username} in my case /home/pranesh
Then find out the pod name, in my case its aspx-deployment-84597d88f5-pk5nh, follow below command

PS /home/pranesh> kubectl cp /home/pranesh/Node.aspx aspx-deployment-84597d88f5-pk5nh:/Node.aspx
This copies the file to c drive of container,
then move file from c drive to required path with powershell

PS /home/pranesh> kubectl exec aspx-deployment-84597d88f5-pk5nh powershell "Copy-Item "C:\Node.aspx" -Destination "C:\inetpub\wwwroot""
Use the reverse procedure for copying from container to cloud drive and download.

We hugely appreciate your contribution, feedback, and support to our technical documentation.
We’ve phased out GitHub Issues on this repository as the feedback mechanism for content and have replaced it with a new feedback system. For more information see, Content User Feedback. As part of this rollout, we are migrating your issue where our team will use your comments to improve the documentation experience. Unfortunately, this does mean you won't be able to access this issue after the migration is complete.
All issues will be migrated by Thursday 29th August 2024.
Once again, thank you for your valuable feedback, we hope you’ll continue to contribute using our new feedback system.


Moving files folders sometime doesn't rename all relative and alias paths!

Maybe this will be hard to found why, but sometime vscode not rename symbols path's from all files in big projets when moving big folders.
I need manually fix this and can be a pain , lucky git linter and history help.
in this example i moving from component to core folder ! and vscode not fixed path !

is there other people can confirm it also happened on they side when moving folder ?
also a little request, maybe hardcore feature, but are you working on the possibility to allow vscode take in account alias path from tsconfig or jsconfg when moving folders with multiple files hierarchy ?

This is done by the ts extension I believe thus forwarding to @mjbvz

This is done by the ts extension I believe thus forwarding to @mjbvz

ho, hum it could possibly be due to the jsx extension.
but it seems random behavior ! i remember move jsx files in another project and no problem !
maybe something broken since a update?! or inside the config of this project !
Need more test on others projects !

Please share a minimal example project that demonstrates the issue

Please share a minimal example project that demonstrates the issue

hum ! i not success to reproduce in a example project ! all go fine and also with Alias 🙄!!
i will close and will reopen if i understand what wrong ! it maybe something in my project !


Explorer eval based on material?

Would it be useful to have the material or simple FEN position evaluation in the Explorer Eval when no other sources are available?

Seems unlikely


Do not merge: Build gr-satellites v4.5.0 against GNU Radio 3.10.1

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

This PR is just to test if things build correctly against GNU Radio 3.10. Once we see everything works, we can see how to handle GNU Radio 3.9 and 3.10 following the comments in #47.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender


Add Gitlab support

Work in progress. Sorry, I was too quick on a click. :)

Add option to choose the Git server: Github (by default) or any instance of Gitlab (official or self-hosted).

Thank you for taking your time and submitting these 2 PRs! 🙌 For ease of review, could you please separate #9 changes from this PR? Greatly appreciated.

As requested, I have taken out what is in the other merge request (#9 dev-actions) of this one (#10 dev-gitlab).


Flake8 not working with syntastic on Windows 10, python 3.6.3

I've installed Flake8, added C:\Users\Lopanda\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\flake8 to my environment variable, this is my vimrc: https://pastebin.com/2iZJsjzk , I ran e: C:\python\test.py , typed in some code, wasn't seeing any syntax highlighting, so I ran :SyntasticCheck flake8 and got the following error:

Did I add the wrong folder to my environment variable? Did I miss something in the vimrc?
This is the message that I get when I run :SyntasticInfo from within the python file:

Thanks in advance for any assistance.

I figured it out, The path that needed added to the environment variable was C:\Users\Lopanda\AppData\Local\Programs\Python\Python36-32\scripts not what I had posted earlier, and now it's working like a charm!


TwitterBridge failed with error 500

Hello devs,
it seems as if the "TwitterBridge" has a problem when used behind a proxy.
The bridge is not able to query the Guest Token from twitter.com, as the error below states. But it is able to get an API token, as I found out while debugging.
I have set the "proxy" parameter in the config.ini.php file in the main folder and adjusted the permissons of the file and the cache folders.

It worked around until 20.04.2023, so I decided to upgrade but now we get this error. We are using PHP 7.4.33 on RHEL7. It works with the same PHP version on Debian 10, since it is not behind our proxy.
Side note: The TwitterEngineeringBridge and the TwitScoopBridge do work! But I cannot confirm that they also use the Guest token, so maybe that's a different thing.
Exception: Could not parse guest token in lib/error.php line 26

index.php(7): RssBridge->main()
lib/RssBridge.php(15): RssBridge->run()
lib/RssBridge.php(92): DisplayAction->execute()
actions/DisplayAction.php(133): TwitterBridge->collectData()
bridges/TwitterBridge.php(222): TwitterBridge->getApiKey()
bridges/TwitterBridge.php(576): returnServerError()
lib/error.php(46): returnError()
lib/error.php(26)

Query string: action=display&bridge=TwitterBridge&context=By+username&u=sebsauvage&format=Html
Version: dev.2023-03-22 (git.master.887f4bb)
Os: Linux
PHP version: 7.4.33

Is there maybe a quick fix for this issue or does the code have to be corrected?
Kind regards,
Michael

been lots of troubles with twitter. let know if still problem


Create Homepage

Fixes #35
Adds basic components of the homepage without implementing search functionality, but still needs some work. I'm having a little trouble wrapping my head around using neat and taking the right approach to layouts. As it stands now, the hero is not responsive in the way it should be (elements are overlapping), and the search box has a non-responsive, fixed width. Can I get some help cleaning that up?
Since you are creating a menu component for the My List page, I held off adding that so as to not duplicate work.
It may make sense to make the hero its own component to be able to pull the styling out from layouts.scss.

OK, there's still a bit more stuff to do here, but it's closer.

Added form action and method so form now redirects as it should, fixes #49
Did a bit of futzing with the HTML structure and styling. On large screen sizes you'll see that the content is off-center, but that will be fixed when the changes I'm working on are merged (adding a wrapper div)

I think the dropdown in the search bar is really just a select input, right? The dropdown I created for the My List page is a different animal.

Great, thanks for that cleanup and direction. I can keep working on this! And yes, you're totally right - that is a select input, not a menu.

@helrond , I've cleaned this up a bit more:

I pulled out search and hero components (the search component may need some style tweaking when we implement on other pages)
Added the select input
Cleaned up styles

What still needs to be done here or outside of this PR

I was struggling to get the button to display its full width. It's cutoff by the select and I'm not sure how to fix that.
There's not yet any form validation
Styling for the options in the select menu are apparently super limited. I wasn't able to make anything work yet, but was thinking we could handle in a separate issue
Focus styles need some finessing, but I think this is something we can do across the site


Remove null pointer from error message

Fixes #67556

Hi @majiddadashi Any update on this PR? Please. Thank you!

Hi @majiddadashi  , Any update on this PR? Please. Thank you!


Android: live streaming from GoPro

Problem:
I need to develop an Android App that display live streaming from GoPro Hero 4..
Can You help me, please?
I have used a Python script that work very well (it using ffplay), but I do not know how to do with Android.
GoPro Hero4.
Thank you very much!
Best Regards!

FFmpeg-Android from Writing Minds. Learn to use it and adapt GoProStream to udp://<IP_ADDRESS>:1000 (see gopro-py-api). Then just play it using your favorite video library (I use Video view)

@KonradIT thank you very much!
Can I use this library?
http://writingminds.github.io/ffmpeg-android-java/
At the end of the page, there is an apk, that I have used only to check if it work.
What is the command to livestream?
I have used:" ffplay -an -fflags nobuffer -f:v mpegts -probesize 8193 rtp://10.5.59:8554" (because it work well from linux terminal)
but the app display "FAILED with output" and "ffplay: invalid argument"

@KonradIT  thank you very much!
I am using this library:
http://writingminds.github.io/ffmpeg-android-java/
and I am watching only the code of this project:
https://github.com/WritingMinds/ffmpeg-android-java
A question:
what is the command to execute to livestream GoPro Hero4?
I have used this:
ffmpeg -loglevel panic -fflags nobuffer -f:v mpegts -probesize 8192 udp://<IP_ADDRESS>:1000
because work well from a linux terminal, but the Android App display:

Unable to find a suitable output format for 'ffplay ... etc..

The execution call more time the "onProcess" method. In my code there is a "Log.i(..." that print the String message parameter in each call-->I have attached a screenshot:

Can you help me?
Thank you very much!
Best regards!

@KonradIT
I think I'm wrong about the command. What is the right comand?
Thank you.

@KonradIT thank you very much!
I have used this library:
http://writingminds.github.io/ffmpeg-android-java/
This is my code:
String command = "ffplay -loglevel panic -fflags nobuffer -f:v mpegts -probesize 8192 udp://:8554";
String[] cmd = command.split(" ");
...
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){ etc...
I have used this command:

ffplay -loglevel panic -fflags nobuffer -f:v mpegts -probesize 8192 udp://:8554

because it works well from a linux terminal.
But Android call the onFailure(String message) method.
I think that the command is not correct in Android.
Can you help me, please?
Thank you very much!!!
Best Regards!

No. You need to stream udp://:8554 to localhost. See: https://github.com/KonradIT/gopro-py-api/blob/master/goprocam/GoProCamera.py#L784

@KonradIT
Then I should run the Python script on a pc that open a stream udp on its ip (through this command)
subprocess.Popen("ffmpeg -f mpegts -i udp://" + self.ip_addr + ":8554 -b 800k -r 30 -f mpegts " + addr, shell=True)
and then the Android library must read this stream from the pc? is it correct?

ffmpeg -f mpegts -i udp://" + self.ip_addr + ":8554 -b 800k -r 30 -f mpegts

@KonradIT
ok. I must run the python script and use this command:
ffmpeg -f mpegts -i udp://" + self.ip_addr + ":8554 -b 800k -r 30 -f mpegts
and then execute the ffpeg library in Android  with this command:
String command = "ffmpeg udp://:8554";
String[] cmd = command.split(" ");
....
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){ etc...
Is it correct?

@KonradIT
ok..if I understand it well:

I must run the python script in the pc and use this command:
ffmpeg -f mpegts -i udp://" + self.ip_addr + ":8554 -b 800k -r 30 -f mpegts

then execute the ffpeg library in Android  with this command:

String command = "ffmpeg udp://ipComputer:8554";
String[] cmd = command.split(" ");
....
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){ etc...

Is it correct @KonradIT ?

@KonradIT I am sorry but I am confused.
In my Android App I do an http request to this link:
http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart
and then I execute the FFmpeg Android library. This is the code:
String command = "ffmpeg -f mpegts -i udp://<IP_ADDRESS>:8554 -b 800k -r 30 -f mpegts";
String[] cmd = command.split(" ");
try {
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){  ...etc...
<IP_ADDRESS> is the ip of the tablet where run the application.
In my code there is a Log.i(... in the onProgress(String message) - onFailure(String message) methods, that print the value of the "message" parameter. So I have attached a screenshot:

At the end, it print:
[NULL @ 0xf342a600] Unable to find a suitable output format for 'ffmpeg'
ffmpeg: Invalid argument
What is wrong?
@KonradIT Thank you very much!

@KonradIT I am sorry but I am confused.
In my Android App I do an http request to this link:
http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart
and then I execute the FFmpeg Android library. This is the code:
String command = "ffmpeg -f mpegts -i udp://<IP_ADDRESS>:8554 -b 800k -r 30 -f mpegts";
String[] cmd = command.split(" ");
try {
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){  ...etc...
<IP_ADDRESS> is the ip of the tablet where run the application.
In my code there is a Log.i(... in the onProgress(String message) - onFailure(String message) methods, that print the value of the "message" parameter. So I have attached a screenshot:

At the end, it print:
[NULL @ 0xf342a600] Unable to find a suitable output format for 'ffmpeg'
ffmpeg: Invalid argument
What is wrong?
@KonradIT Thank you very much!

@KonradIT
I must use a pc that read the live streaming from GoPro Hero4 and open a new udp stream (and Android read this stream), or can I read the live streaming from gopro directly from Android?

@KonradIT
I must use a pc that read the live streaming from GoPro Hero4 and open a new udp stream (and Android read this stream), or can I read the live streaming from gopro directly from Android?

Ok thank you very much!
@KonradIT only a question please,
I must use a pc that read the live streaming from GoPro Hero4 and open a new udp stream (and then Android read this stream), or can I read the live streaming from gopro directly from Android?

@KonradIT thank you very much!
Meanwhile, I write what I have done...
In my Android App I do an http request to this link (through Volley Library):
http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart
and GoPro respons with this:
{"status":"0"}
And then I use FFmpeg Android Library to execute this command:
String command = "ffmpeg -f mpegts -i udp://"+ip.toString()+":8554 -b 800k -r 30";
String[] cmd = command.split(" ");
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler(){ etc........
It cal more times onProgress methd (of the FFmpeg library) and it read for example:

[h264 @ 0xeecfc000] no frame!
[h264 @ 0xeecfc000] non-existing PPS 0 referenced
Last message repeated 1 times
etc....

and at the end call onFailure method with this messages:

[NULL @ 0xeecaca00] Unable to find a suitable output format for 'ffmpeg'
ffmpeg: Invalid argument

What is wrong?
@KonradIT  thank you

Now I can reiceve frames by the GoPro.
It call always the onProgress(String message) method..
Message parameter has that values:
frame=  262 fps= 67 q=29.0 size=      46kB time=00:00:09.00 bitrate=  41.8kbits/s dup=199 drop=0 speed=2.31x
frame=  276 fps= 62 q=29.0 size=      60kB time=00:00:09.47 bitrate=  51.9kbits/s dup=200 drop=0 speed=2.12x
frame=  296 fps= 59 q=26.0 size=      72kB time=00:00:10.11 bitrate=  58.0kbits/s dup=200 drop=0 speed=   2x
etc....
Is it correct?
How can I display them?
@KonradIT

@KonradIT
Now I can reiceve frames from the GoPro.
It call always the onProgress(String message) method..
"String message" parameter has that values:
frame=  262 fps= 67 q=29.0 size=      46kB time=00:00:09.00 bitrate=  41.8kbits/s dup=199 drop=0 speed=2.31x
frame=  276 fps= 62 q=29.0 size=      60kB time=00:00:09.47 bitrate=  51.9kbits/s dup=200 drop=0 speed=2.12x
frame=  296 fps= 59 q=26.0 size=      72kB time=00:00:10.11 bitrate=  58.0kbits/s dup=200 drop=0 speed=   2x
etc....
Is it correct?
How can I display them, or read the frame content?
@KonradIT

@KonradIT
Now I can reiceve frames from the GoPro.
It call always the onProgress(String message) method..
"String message" parameter has that values:
frame=  262 fps= 67 q=29.0 size=      46kB time=00:00:09.00 bitrate=  41.8kbits/s dup=199 drop=0 speed=2.31x
frame=  276 fps= 62 q=29.0 size=      60kB time=00:00:09.47 bitrate=  51.9kbits/s dup=200 drop=0 speed=2.12x
frame=  296 fps= 59 q=26.0 size=      72kB time=00:00:10.11 bitrate=  58.0kbits/s dup=200 drop=0 speed=   2x
etc....
Is it correct?
How can I display them, or read the frame content?
@KonradIT

Yes you're receiving data from the GoPro, now stream it to a localhost url (maybe read the docs on ffmpeg to understand how it works) and play the URL back using VideoView/ExoPlayer, etc..

@KonradIT thank you very much!! You are very kind!
I have used this command to restream in Android:
-fflags nobuffer -i udp://:8554 -f rtp -an rtp://<IP_ADDRESS>:1000/gopro
<IP_ADDRESS> is the Ip of a PC where I can see live stream using VLC (through this--> udp://@:1000/gopro).
If I stream in localhost url, VideoView write:

Can't play this video

Do you know what is the right ffmpeg command?
@KonradIT
(When I finish, I will publish a tutorial to get live streaming from GoPro on Android)

@chri1389 Looking forward to the tutorial! :smiley:

@garydelarosausername
certainly!!
As soon as I can get it to work! ;-)

Ok, let's settle this down.
First, @chri1389 you must understand the mere basics of internet and computer networks, for this I recommend reading Computer Networks - a top down approach (available as PDF).
Android development experience will also help, if you want to leverage your Android developing skills take a look at EDX Android course or the coursera Android course.
Last but not least it is critically important to learn about the tools you're using. @chri1389 you need to look at the man page for ffmpeg (by running man ffmpeg on your PC) or by looking at the FFmpeg Wiki: https://ffmpeg.org/documentation.html
Maybe this weekend I can get a PoC rolling, but I doubt it since I'm crushed under a ton of work from school. Please learn so you don't have to depend on me.

@KonradIT
I can display the live stream in Android.
I have used the FFmpeg Android library, and i have used this command:
String[] cmd = {"-an","-i","udp://:8554", "-f:v", "mpegts","udp://<IP_ADDRESS>:8555/gopro"};
So, I have used the vlc Android library, learning this tutorial:
http://www.truiton.com/2015/03/stream-rtmp-live-android/
and then, vlc open this url stream: mFilePath = "udp://@:8555/gopro";
It display the live stream from GoPro Hero 4, but it has a problem: the video is very bad.
Can I display the video better?

@chri1389 seems like you commented something but I'm not able to see it. You got the preview to work? I tried using ExoPlayer, mPlayer and videoView but could not get it to display. Seems like it needs to be udp > rtmp/m3u8.

@KonradIT
now I can display live stream from GoPro Hero4.
You can use the vlc library (that can display udp stream).
With the ffmpeg library, use this command:
String[] cmd  = {"-f", "mpegts", "-i", "udp://:8554", "-f", "mpegts","udp://<IP_ADDRESS>:8555/gopro?pkt_size=64"};
and with vlc library, display the stream "udp://@:8555/gopro"
and then you can see the live stream.
If you use only vlc library, opening the url "udp://:8554" (without ffmpeg that stream) you can display the live stream, but the quality is very bad...
Now, there is only a problem: there is a delay of 3 seconds...
If you have any question about it, you can ask :)

@chri1389 you mean LibVLC? Haven't tried it, will do tomorrow.

@chri1389 https://github.com/KonradIT/gopro-udp-stream-android
Can't get it to play.

Ok @KonradIT!
Try doing these steps:

Create a new Android Project

Learn this tutorial:
http://www.truiton.com/2015/03/stream-rtmp-live-android/
and use the "Android VLC SDK" (it is very simple to use, follow the steps).

Import and learn about the FFmpeg Android Library.
I have used this command:
String[] cmd  = {"-f", "mpegts", "-i", "udp://:8554", "-f", "mpegts","udp://<IP_ADDRESS>:8555/gopro?pkt_size=64"};

Set the url that vlc must open:
mFilePath = "udp://@:8555/gopro";

Very important: you must do a thread that do a http request to this link:
http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart
It must do this request, about every seven seconds.
It is important that the first request is after that ffmpeg is started!

@KonradIT  Let me know if there are problems or it works properly!

@chri1389 thanks, now it works. There's delay, its not smooth and the image has artefacts and turns green, but at least it displays the stream.

Perfect @KonradIT
Can we work togheter to take away the delay? :)

@chri1389 sure, needs faster refresh rate so I suggest dump LibVLC and do UDP>x transcoding

@konradit ok!
We can write in private and then publish a short tutorial useful for other users!

there is the possibility to use WebRTC for a stream on android?

@chri1389
tried all steps you explained , still no success.. :(
can you help me  please?

@ShyamBarange sure!
You must follow this steps:

create a new Android Project
import and use VLC library. For this, for example you can use this tutorial (use it only to import and use VLC):
http://www.truiton.com/2015/03/stream-rtmp-live-android/
you must import FFMPEG library
http://writingminds.github.io/ffmpeg-android-java/
now, the FFMPEG command is
String[] cmd = {"-f", "mpegts", "-i", "udp://:8554", "-f", "mpegts","udp://<IP_ADDRESS>:8555/gopro?pkt_size=64"};
the VLC url must be
mFilePath = "udp://@:8555/gopro";
You must also do an http request to the GoPro, to command the Live Streaming.
The request must be about every 7 seconds at this URL:
http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart
It is very important that the first HTPP request is after that ffmpeg is started!
you must add the INTERNET permission in the AndroidManifest:
<uses-permission android:name="android.permission.INTERNET" />
before run the application, assure that Android Phone is connected to the GoPro WiFi network!

Let me know if there are problems or it works properly!

@chri1389
Thanks for the quick response.
I have imported the VLC library and FFMpeg library successfully and its working (since I can stream video from a URL in VideoView widget in android app). But when my phone is connected to the GoPro WiFi network, it is showing some error message that "unable to create media player".
I might be doing some mistake in passing FFMpeg command.
I am also doing http request using Volley library.
still no success.
can you help me in passing the FFmpeg command.
thanks

Hello @ShyamBarange
Can you write the code?

Hey @chri1389
Here is my MainActivity
Let me know if I am doing something wrong.
`public class HomeActivity extends AppCompatActivity implements IVLCVout.Callback {
public final static String TAG = "HomeActivity";
private String mFilePath;
private SurfaceView mSurface;
private SurfaceHolder holder;
private LibVLC libvlc;
private MediaPlayer mMediaPlayer = null;
private int mVideoWidth;
private int mVideoHeight;
Integer count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mFilePath = "udp://@:8555/gopro";
    Log.d(TAG, "Playing: " + mFilePath);
    mSurface = (SurfaceView) findViewById(R.id.surface);
    holder = mSurface.getHolder();
}

public void onClickPreview(View view) {
    callStream();
    createPlayer(mFilePath);
}

public void callHTTP() {
    StringRequest request = new StringRequest("http://<IP_ADDRESS>/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            Log.wtf("CODE", response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Toast.makeText(HomeActivity.this, "Error", Toast.LENGTH_SHORT).show();
        }
    });

    RequestQueue queue = Volley.newRequestQueue(this);
    queue.add(request);

}

public void callStream() {
    callHTTP();
    try {
        String[] cmd = {"-f", "mpegts", "-i", "udp://:8554", "-f", "mpegts", "udp://<IP_ADDRESS>:8555/gopro?pkt_size=64"};

        FFmpeg ffmpeg = FFmpeg.getInstance(getApplicationContext());
        ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {

            @Override
            public void onStart() {
                count += 1;
                if (count == 7) {
                    count = 0;
                    callHTTP();
                }
            }

            @Override
            public void onProgress(String message) {
                Log.d("FFmpeg", message);
                callHTTP();

            }

            @Override
            public void onFailure(String message) {
                Toast.makeText(getApplicationContext(), "Stream fail", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onSuccess(String message) {
            }

            @Override
            public void onFinish() {
            }
        });
    } catch (FFmpegCommandAlreadyRunningException e) {

    }
    createPlayer(mFilePath);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setSize(mVideoWidth, mVideoHeight);
}

@Override
protected void onResume() {
    super.onResume();
    createPlayer(mFilePath);
}

@Override
protected void onPause() {
    super.onPause();
    releasePlayer();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    releasePlayer();
}
/**
 * Used to set size for SurfaceView
 */
private void setSize(int width, int height) {
    mVideoWidth = width;
    mVideoHeight = height;
    if (mVideoWidth * mVideoHeight <= 1)
        return;

    if (holder == null || mSurface == null)
        return;

    int w = getWindow().getDecorView().getWidth();
    int h = getWindow().getDecorView().getHeight();
    boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
    if (w > h && isPortrait || w < h && !isPortrait) {
        int i = w;
        w = h;
        h = i;
    }

    float videoAR = (float) mVideoWidth / (float) mVideoHeight;
    float screenAR = (float) w / (float) h;

    if (screenAR < videoAR)
        h = (int) (w / videoAR);
    else
        w = (int) (h * videoAR);

    holder.setFixedSize(mVideoWidth, mVideoHeight);
    ViewGroup.LayoutParams lp = mSurface.getLayoutParams();
    lp.width = w;
    lp.height = h;
    mSurface.setLayoutParams(lp);
    mSurface.invalidate();
}

/**
 * @param media
 */
private void createPlayer(String media) {
    releasePlayer();
    try {
        if (media.length() > 0) {
            Toast toast = Toast.makeText(this, media, Toast.LENGTH_LONG);
            toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,
                    0);
            toast.show();
        }

        ArrayList<String> options = new ArrayList<String>();
        options.add("--aout=opensles");
        options.add("--audio-time-stretch"); // time stretching
        options.add("-vvv"); // verbosity

        libvlc = new LibVLC(this, options);
        holder.setKeepScreenOn(true);

        mMediaPlayer = new MediaPlayer(libvlc);
        mMediaPlayer.setEventListener(mPlayerListener);

        final IVLCVout vout = mMediaPlayer.getVLCVout();
        vout.setVideoView(mSurface);
        //vout.setSubtitlesView(mSurfaceSubtitles);
        vout.addCallback(this);
        vout.attachViews();

        Media m = new Media(libvlc, Uri.parse(media));
        mMediaPlayer.setMedia(m);
        mMediaPlayer.play();
        Log.wtf("Status", "Player Created");
    } catch (Exception e) {
        Toast.makeText(this, "Error in creating player!", Toast
                .LENGTH_LONG).show();

        Log.wtf("Status", "Error in creating player!");

    }
}

private void releasePlayer() {
    if (libvlc == null)
        return;
    mMediaPlayer.stop();
    final IVLCVout vout = mMediaPlayer.getVLCVout();
    vout.removeCallback(this);
    vout.detachViews();
    holder = null;
    libvlc.release();
    libvlc = null;

    mVideoWidth = 0;
    mVideoHeight = 0;
}

/**
 * Registering callbacks
 */
private MediaPlayer.EventListener mPlayerListener = new HomeActivity.MyPlayerListener(this);

@Override
public void onNewLayout(IVLCVout vout, int width, int height, int visibleWidth, int visibleHeight, int sarNum, int sarDen) {
    if (width * height == 0)
        return;

    // store video size
    mVideoWidth = width;
    mVideoHeight = height;
    setSize(mVideoWidth, mVideoHeight);
}

@Override
public void onSurfacesCreated(IVLCVout vout) {

}

@Override
public void onSurfacesDestroyed(IVLCVout vout) {

}

@Override
public void onHardwareAccelerationError(IVLCVout vlcVout) {
    Log.e(TAG, "Error with hardware acceleration");
    this.releasePlayer();
    Toast.makeText(this, "Error with hardware acceleration", Toast.LENGTH_LONG).show();
}

private static class MyPlayerListener implements MediaPlayer.EventListener {
    private WeakReference<HomeActivity> mOwner;

    public MyPlayerListener(HomeActivity owner) {
        mOwner = new WeakReference<>(owner);
    }

    @Override
    public void onEvent(MediaPlayer.Event event) {
        HomeActivity player = mOwner.get();

        switch (event.type) {
            case MediaPlayer.Event.EndReached:
                Log.d(TAG, "MediaPlayerEndReached");
                player.releasePlayer();
                break;
            case MediaPlayer.Event.Playing:
            case MediaPlayer.Event.Paused:
            case MediaPlayer.Event.Stopped:
            default:
                break;
        }
    }
}

}`

@chri1389  I managed to get a stream following your tutorial, thanks. However, I have a lag in the video stream and it seems to vary:
 03-04 16:41:08.585  30518-30669/com.gopro.stream D/VLC﹕ [b4463128/77cd] core video output: picture might be displayed late (missing 9 ms) 03-04 16:41:08.999  30518-30518/com.gopro.stream D/STREAM﹕ frame=  530 fps= 35 q=9.2 size=    1751kB time=00:00:20.14 bitrate= 711.9kbits/s speed=1.34x 03-04 16:41:09.086  30518-30663/com.gopro.stream W/VLC﹕ [aeb85728/77c7] core audio output: playback too late (67090): up-sampling 03-04 16:41:09.513  30518-30518/com.gopro.stream D/STREAM﹕ frame=  547 fps= 35 q=11.4 size=    1798kB time=00:00:20.72 bitrate= 710.8kbits/s speed=1.33x 03-04 16:41:10.025  30518-30518/com.gopro.stream D/STREAM﹕ frame=  562 fps= 35 q=11.4 size=    1839kB time=00:00:21.22 bitrate= 709.7kbits/s speed=1.32x 03-04 16:41:10.095  30518-30669/com.gopro.stream W/VLC﹕ [b4463128/77cd] core video output: picture is too late to be displayed (missing 42 ms) 03-04 16:41:10.095  30518-30669/com.gopro.stream D/VLC﹕ [b4463128/77cd] core video output: picture might be displayed late (missing 8 ms) 03-04 16:41:10.565  30518-30518/com.gopro.stream D/STREAM﹕ frame=  578 fps= 35 q=8.9 size=    1891kB time=00:00:21.77 bitrate= 711.2kbits/s speed=1.31x 03-04 16:41:11.075  30518-30518/com.gopro.stream D/STREAM﹕ frame=  594 fps= 35 q=12.2 size=    1934kB time=00:00:22.30 bitrate= 710.3kbits/s speed= 1.3x 03-04 16:41:11.595  30518-30518/com.gopro.stream D/STREAM﹕ frame=  609 fps= 35 q=12.1 size=    1977kB time=00:00:22.81 bitrate= 710.2kbits/s speed=1.29x 03-04 16:41:12.097  30518-30518/com.gopro.stream D/STREAM﹕ frame=  624 fps= 34 q=11.6 size=    2019kB time=00:00:23.29 bitrate= 710.0kbits/s speed=1.28x 03-04 16:41:12.601  30518-30518/com.gopro.stream D/STREAM﹕ frame=  639 fps= 34 q=11.5 size=    2069kB time=00:00:23.79 bitrate= 712.5kbits/s speed=1.28x 03-04 16:41:13.109  30518-30518/com.gopro.stream D/STREAM﹕ frame=  654 fps= 34 q=12.1 size=    2109kB time=00:00:24.29 bitrate= 711.1kbits/s speed=1.27x 03-04 16:41:13.629  30518-30518/com.gopro.stream D/STREAM﹕ frame=  670 fps= 34 q=12.7 size=    2152kB time=00:00:24.82 bitrate= 710.0kbits/s speed=1.26x 03-04 16:41:15.739  30518-30669/com.gopro.stream D/VLC﹕ [b4463128/77cd] core video output: picture might be displayed late (missing 5 ms)
@KonradIT @chri1389  did you manage to fix the lag?
If so can I please know how? :)

Hi,
I haven't managed to fix the Lag yet, I still have to try ExoPlayer and SurfaceView renderer.

@Massier87 Hey,
can you please share your code? I tried but I couldn't stream my go pro over android.
here is my mail id<EMAIL_ADDRESS>help will be appreciated.
Thanks.

@KonradIT Thanks, Also is it a possibility to replace LibVLC with UDP>x? I couldn't find a PoC...If you can please point to a reference, I can try this path.
@ShyamBarange sent

Hello,
Unfortunately I could not solve the delay.
Now, I'm trying other solutions ...
If you have an idea, please contact me!

Hello,
Unfortunately I could not solve the delay.
Now, I'm trying other solutions ...
If you have an idea, please contact me!

hello guys, i'm intrested in this project, my objective is receive the video from gopro connected via wi-fi to an andoird device and stream it in broadcast. now the problem is that i didn't find nothing useful , only this issue can help me, as soon as possible i will follow the @chri1389 steps to try something, but in the meanwhile i was thinking that we could make a github together and try to help eachother to develop this code. so if you agree we cn exchange our email adress and organize it all. let me know and thank for your work on this thread :)

@frequel I already have a repository with @chri1389 method; https://github.com/konradit/gopro-udp-android

@KonradIT page not found error 404 :/
i'll try to find it on your giuthub page

i only found this one https://github.com/KonradIT/gopro-udp-stream-android
is the correct link?

yeah its that one

@KonradIT ok thank you, i will try something for myself and as soon as possible i will help on that git.
for opinion exchange we will keep in touch in this issue or in the github? so we can store all information in a single way....

Hello, I am on this subject also for a few weeks already.
The problem I have is that I can't use libvlc since it's too big for the android device I am trying to get the livestream to (android 4.1.2). And the stock mediaplayer doesn't support udp.
I am now trying to use only exoplayer (release 2 with the UDP fix) to connect directly to the cam but I still get a socket timeout on the udp://:8554... even with the gpStream url , and the keepalive message ( HDHP...) sent on udp to the gopro every 2.5 sec...
Any idea to help me solving this out?
Thank a lot,
JC

@Frequel sure. let's chat over here so everyone can benefit.
@jc999 You might have to transcode to something like M3u8 which Video view can play.

hi guys, i´m very noob in andorid studio, so i couldn't do very much these days, i've followed the tutorial linked by @chri1389 and it worked, so now iǘe understood how is working the stream but i have a few problems if you could help me.
1)ffmpeg is imported adding only  compile 'com.writingminds:FFmpegAndroid:0.3.2' in  app/build.gradle ? because in the writingminds guide there are three way and the first one doesn't work for me and the second one, that is in the @KonradIT git which linked me few days ago, in my project doesn't work to. can you explain me what i have to do? i followed other method to import external library in android studio and i always receive an error syncing the buil.gradle file. it could be a my problem or i miss some passages?
2) i cloned the @KonradIT git in this link https://github.com/KonradIT/gopro-udp-stream-android but i can build or run anything, someone that can help me???
i'm learning about android studio and i would like to help in the developing of the git so if you can help me is very appreciated and useful. :)
thank you for your patience

i was forgetting a third question, sorry.
3) if i'm not wrong in the previous message you are talking about a lag in the streaming, have you tried to add the nobuffer comand in the ffmpeg line comand? as @KonradIT suggest in this link https://github.com/KonradIT/goprowifihack/blob/master/HERO4/Livestreaming.md

@Frequel you have to make a new project and import the module :app, then use compile 'com.writingminds:FFmpegAndroid:0.3.2' to import FFmpeg (you do need to configure Android studio to allow GitHub connections) and then build or sign-build the app.

ok thank you, but i have other 2 question

the module :app from the archive on the writingminds page, right?
2)in your project the import is already complete? (module imported + compile 'com.writingminds:FFmpegAndroid:0.3.2' )

@KonradIT I think that the problem about the delay is VLC media player.
Now I want to check an other solution: read streaming from FFmpeg Android and restream it to OpenCV Android, and then display it.. What do you think about it?

Sure! Try that, maybe add the -fflags nobuffer  and let us know. I will run some tests this afternoon

Hello, I'm also trying to stream from GoPro.
I tried the code from https://github.com/KonradIT/gopro-udp-stream-android and it worked for me after some minor changes but the video quality starts ok then degrades drastically and eventually the stream get stuck.
Do you have any solution for that, maybe some flags/options that needs to be set for FFmpeg?
Also, if / when I get the GoPro stream to the device working good I need the frames, do you know how (or have any suggestion) I can extract the frames while simultaneously displaying the stream on the device??

Hello!
We are working to use an other method. Read the stream from Ffmpeg and then restream it in localhost and read from OpenCV. If it works, throught openCv you can extract the frames and display them.
If you are interesting, you can work togheter!

@chri1389 great! Can you share the code online? Would like to try it. How well does OpenCV work on Android?

@KonradIT
I have not tried anything yet. Unfortunately I did not have time.
Next week I will work to solve the problem.
We must study what format stream want opencv, and then pass it from ffmpeg.
We can work together..

Hello,
Did you turn to an openCV solution because vlc couldn't display the stream with an acceptable delay / quality?
From what I understand from reading all the messages here the problem is the delay, but following the steps you provided I can't get the stream to display with an acceptable quality (regardless of the delay).
Have you managed to display the stream ok except for the delay?
I'll give openCV a read as well

Yes! I have tried all the solutions to eliminate the delay with vlc, and I think (but I am not sure that it is right) that the problem is VLC!
Then I think that we must change the method and study other solutions (for example use OpenCv as described above...).

Hey @chri1389 @Sean-Kone @Frequel et al
I have pushed a non-working POC for ExoPlayer and FFmpeg:
https://github.com/KonradIT/gopro-udp-stream-android/commit/132472b292c878ef6d8b9a8c0ae29454aea2c4b7
Log here: https://gist.github.com/KonradIT/64a17eccb43e2e52466859fa48622fa8
It seems like ExoPlayer does not recognize the UDP protocol. We can try and have FFmpeg transcode and reencode to rtmp / HLS so ExoPlayer or VideoView can play the stream

tomorrow i will see what i can do. i can't at the moment

That’s great!
I also will see what I can do tomorrow.

i have an android phone with android 5.0 , i can't afford a new smartphone at the moment because mine is broken, it's ok if the minimum sdk version is 22? or is all incompatible with this os? i was looking the new code , i couldn't resist to see xD anyway i will do something tomorrow but i would like know if it's ok  reduce minimum sdk version to 22

@Frequel sure, change it to 22

hey guys, i'm working on it. i'm studying the guideline that you write in the past message
(like as https://github.com/KonradIT/gopro-py-api
http://www.truiton.com/2015/03/stream-rtmp-live-android/
https://github.com/KonradIT/goprowifihack/issues/url )
and i have understood the algorithm more or less, but i haven't understood how to stream the gopro to localhost.
so i have some question (again , yes, i'm sorry):

i need to connect the gopro via wi-fi to my phone or my laptop?
if i connect it via wi-fi to the gopro how i can the stream to localhost if i'm not connected anymore to my internet connection?
3)if i connect the gopro via wifi to my smartphone and try to use the compiled app of this link https://github.com/KonradIT/gopro-udp-stream-android and try the VLClib method i'm not working, in particular,  i received an error ("Error in Creating Player!") at the time i open the stream , how i can fix it.

as you can read i have a lot of doubts, of you can help me i will help more confidently on the project, my next step will be study the other 2 library so we could find a solution for the lag and stream quality.

@Frequel , check out my comment here https://github.com/KonradIT/gopro-udp-stream-android/issues/1.
I tried different flags/options on VLC and FFmpeg to try to deal with the delay issue but still no luck.
I has some improvement, at first the stream would stop for me after a few minutes and after setting additional options it now won't stop but the delay in the video keeps increasing and there is also the quality issue.
I looked into openCV as @chri1389 suggested but when I added the library I saw that the open method of video capture only accepts cam id (for some reason the open with filename string is not exposed) so I went on to try a different solution (might return to give openCV option another try).

@Sean-Kone so are you saying that probably my smartphone isn't compatible at the moment? because what i've understood from your comment is that the code worked only on your G3 and not on the other device but the guy who opened the issue has resolved is problem (we don't know how, probably with your suggestion about to declare the ffmpeg obj as an instance var?).
anyway i didn't understand something about the functionality of the code, the code in  https://github.com/KonradIT/gopro-udp-stream-android, it  works if the go-pro is connected to a pc or to the smartphone where the app is running? because if i connect the gopro via wi-fi i lost my internet connection , the only way for me to do a stream from a go pro was using this git https://github.com/KonradIT/gopro-py-api on my Desktop PC that has a cable connection (for the internet connectio) and an wi-fi adapter (for the go-pro connection). so, i could seem stupid but if someone could be more clear probably i understand what i'm doing wrong, probably is a simple thing that i forgot to read/think and seems all strange to me at the moment. i want really help but in my position at the moment i result an asshole more than an help and i'm sorry for that

Try turning off the mobile data (stay connected only to GoPro wifi).
On the the other devices it worked after i did that.
On G3 device it worked without having to turn off the mobile data.

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

@frequel Hero3+ uses standard HLS so you can read the incoming data using VideoView

@KonradIT , I'm still on the original working solution with ffmpeg and vlc.
I changed the keep alive to the message from your py script (instead of the http restart call):
void keepAlive() {
DatagramSocket socket = null;
try {
socket = new DatagramSocket();
String sendMessage = "GPHD:0:0:2:0.000000\n";
byte[] sendData = sendMessage.getBytes();
InetAddress IPAddress = InetAddress.getByName("<IP_ADDRESS>");
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 8554);
socket.send(sendPacket);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Now I'm still having issues with the quality but the delay seems to be stable-ish around 8 secs

Thanks! Will test in a couple hours.

@KonradIT Hello!
I am trying other solutions..
Now I have opened an UDP socket and listening the UDP packets from the GoPro Streaming (at the port 8554).
I receive correctly Byte Array from GoPro, but I don't known How is the size of the Byte Array.
Do you think that I can read this or use this Byte Array?
Furthermore, unfortunately, I can not display this Byte Array:
`byte[] byteArray = new byte[len];
...
...
Bitmap bitmap;
bitmap = BitmapFactory.decodeByteArray(message, 0, message.length);
imageView.setImageBitmap(bitmap);`
But imageView display a white image (then it doesn't work)

@KonradIT Hello!
I am trying other solutions..
Now I have opened an UDP socket and listening the UDP packets from the GoPro Streaming (at the port 8554).
I receive correctly Byte Array from GoPro, but I don't known How is the size of the Byte Array.
Do you think that I can read this or use this Byte Array?
Furthermore, unfortunately, I can not display this Byte Array:
`byte[] byteArray = new byte[len];
...
...
Bitmap bitmap;
bitmap = BitmapFactory.decodeByteArray(message, 0, message.length);
imageView.setImageBitmap(bitmap);`
But imageView display a white image (then it doesn't work)

@chri1389 bytes.length for getting the length of it instead of displaying (might be NAL-unit)

@KonradIT Ok but to listen in DatagramSocket you must declare a Byte Array with a fixed size (it would be as the size of a frame from gopro). Do you known how much is the size of a single gopro frame?

ok @KonradIT.
I can read the single frames from gopro (through a single UDP socket that listen at the 8554 port).
Do you known a method to display or elaborate them?

@chri1389 , Can you share your code for reading the frames?

I've managed to get the GoPro stream working with Vitamio but only on my nexus 4 device, with other devices I tried there is an error with loading the library.
The video quality is better but there are still glitches in the video and the delay still exist, around 5-6 seconds.
So I don't think it is the way to go.

@Frequel Hi, did you get it to work at last? I am now trying the same stuff on an Android Tablet but I am getting the same error of "error in creating player". If you got it to work, would you please share your experience?

@chri1389 & @KonradIT I am using following FFMPEG command-
String[] cmd = {"-f", "mpegts", "-i", "udp://:8554", "-f", "mpegts","udp://<IP_ADDRESS>:8555/gopro?pkt_size=64"};
and with vlc library, display the stream "udp://@:8555/gopro"
while using this, I am getting following exception-
E/FFmpeg: Exception while trying to run: [Ljava.lang.String;@eca06da
java.io.IOException: Cannot run program "/data/user/0/com.gopromanager/files/ffmpeg": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:983)
at java.lang.Runtime.exec(Runtime.java:691)
at java.lang.Runtime.exec(Runtime.java:559)
at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:133)
at java.lang.ProcessImpl.start(ProcessImpl.java:128)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:964)
at java.lang.Runtime.exec(Runtime.java:691)
at java.lang.Runtime.exec(Runtime.java:559)
at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Please help me to sort out this exception.

I have solved this by calling loadBinary(...) method of FFmpeg just before calling execute(...) method of FFmpeg.
Now I can able to live stream from GoPro HERO 2018.
But stream is not smooth and there is a lag in the video. Please update on it whenever you have done with this.
Thanks.

Hello everyone
Did someone achieve the problem of slow transmission?
frame= 3986 fps= 12 q=-1.0 size=    5409kB time=00:02:21.64 bitrate= 312.8kbits/s speed=0.432x
frame= 3992 fps= 12 q=-1.0 size=    5418kB time=00:02:21.84 bitrate= 312.9kbits/s speed=0.432x
frame= 3999 fps= 12 q=-1.0 size=    5425kB time=00:02:22.07 bitrate= 312.8kbits/s speed=0.432x
frame= 4006 fps= 12 q=-1.0 size=    5432kB time=00:02:22.30 bitrate= 312.7kbits/s speed=0.432x
frame= 4012 fps= 12 q=-1.0 size=    5438kB time=00:02:22.50 bitrate= 312.6kbits/s speed=0.432x
frame= 4018 fps= 12 q=-1.0 size=    5444kB time=00:02:22.70 bitrate= 312.5kbits/s speed=0.432x
another problem that occurs is that the gopro is discharged quickly.
Helppppppp!

@KonradIT
How to used GoPro live streaming in iOS objective c.

Can you please share the source code of android for play the streaming GoPro video in my application.

Can you please share the source code of android for play the streaming GoPro video in my application.

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

I have faced same problem. Please tell me the solution as early as possible.

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

I have faced same problem. Please tell me the solution as early as possible.

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

I have faced same problem that I have only GoPro Hero 3+ and I could not able to stream the video using the camera and its return "Stream fail" in "ffmpeg.execute" "onFailure" section. Please tell me the solution as early as possible.

@Sean-Kone ok thank you, now i can't try , this evening i return on the code.
@KonradIT https://github.com/KonradIT/gopro-udp-stream-android is working only with gopro hero4 and hero5 right? is possible make something similar to https://github.com/KonradIT/GoProStream/blob/master/GoProStream.py to use a hero3+? i would do it but with the code that doesn't work for me yet, i can't know if it will work. if you can could be useful, if you can't i will try as soon as i have the code working. (i have a gopro hero3+ that i can use at anytime, instead a gopro hero 4 that i can use only while i am at my friend's house, he doesn't leave me the camera)

I have faced same problem that I have only GoPro Hero 3+ and I could not able to stream the video using the camera and its return "Stream fail" in "ffmpeg.execute" "onFailure" section. Please tell me the solution as early as possible.

@chri1389 thanks, now it works. There's delay, its not smooth and the image has artefacts and turns green, but at least it displays the stream.

Can you please share the source code that I have display stream in my application.

@chri1389 thanks, now it works. There's delay, its not smooth and the image has artefacts and turns green, but at least it displays the stream.

Can you please share the source code that I have display stream in my application.

Same issue here... I have a huge delay and I'm trying to decode the packages on iOS but I can't really get a way to decode it.

Hi @chri1389 @KonradIT
I'm interested in this project and was wondering if you could solve the lag problem. Is there any way to get the live preview in an Android/IOS app like what the Quick GoPro app provides?
Best,


Proposal: Rename MergeExec

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
The name MergeExec has long confused me.
The name MergeExec implies to me that its purpose is to "merge sorted streams" into another sorteds stream
However,   MergeExec does something more like UNION ALL of streams into a single stream, combining the input streams in some arbitrary output order. Something that looks to me like an actual "merge" operation is described in  https://github.com/apache/arrow-datafusion/issues/362.
Describe the solution you'd like
I propose renaming  MergeExec to UnionToSingleStreamExec to make it clearer
It could also potentially combined with the existing UnionExec (which preserves partitioning) as another flag
Describe alternatives you've considered
As this would be a fairly invasive (and backwards incompatible change) leaving the current naming is also a possibility.

Do you have any thoughts on this @Dandandan  @jorgecarleitao @andygrove @returnString ?

agree 👍


Why have autocompletion in simple input/output and not for custom ?

It would be great if we could have autocompletion in custom input/output like in the simple.

Beside this, why there is not more autocompletion. If I type "io.myCanvas.s" it dosn't suggest my ".scale"

It's just that we need to add autocomplete to the ACE editors. But it would be very helpful indeed!

Use http://stackoverflow.com/questions/15019607/autocompletion-for-ace-editor as an example


Various URLs in the readme still refer to Mondo

Various URLs in the readme still refer to getmondo.co.uk and need to be changed to monzo.com or they won't work.

First of all, sorry for replying so late. The library was essential not supported since ~2017. I had some free time recently though and decided to give it some love and release v1.0.0
This should be fixed now : )


Resquest: update libreoffice-beta

I found latest beta version is different with that in libreoffice-beta.rb

Fixed in https://github.com/caskroom/homebrew-versions/pull/1492/


My vue table

auto merge

@laozhuang727 What is the purpose of thus PR?

There's no point in this, just reject it


Add a --js-stellar-sdk-version option to soroban contract bindings typescript

I think we should add a --js-stellar-sdk-version option to soroban contract bindings typescript.
When folks are generating contract bindings for their contract they're generating bindings that'll be used with a version of the js-stellar-sdk that they may already have imported into their application.
Today the version of CLI installed is tightly coupled to a version of the js-stellar-sdk, and upgrading one result in getting a version of the other.
It seems unreasonable to me that if a dev wants a latest CLI to get some new CLI feature, that they also need to go update the applications they use if they need to regenerate their bindings.
I think it's reasonable to limit the range of support. The CLI shouldn't be expected to support all versions of js-stellar-sdk going back to the beginning, but as part of addressing this issue a general rule can be decided on, such as support the last two major versions of the js-stellar-sdk.
cc @chadoh
cc @Shaptic @mollykarcher

I can also see an argument for specifying a version of the bindings instead, where a version of the bindings are still one-to-one mapped with the js-stellar-sdk. That solution would also address the same concerns, and would allow us to talk more specifically about changes to the bindings over time.

that'll be used with a version of the js-stellar-sdk that they may already have imported into their application

This is a fundamentally incorrect thing to do. The only way someone should access stellar-sdk is transitively via the bindings if they are using them because they are not cross-compatible.

if they need to regenerate their bindings

This is an opt-in action, right? So I don't see the concern. The only time it's compulsory is at protocol upgrades.

that'll be used with a version of the js-stellar-sdk that they may already have imported into their application

This is a fundamentally incorrect thing to do. The only way someone should access stellar-sdk is transitively via the bindings if they are using them because they are not cross-compatible.

Why is it unreasonable for someone to import the js-stellar-sdk for some uses, as well as use a binding to call a contract?

if they need to regenerate their bindings

This is an opt-in action, right? So I don't see the concern. The only time it's compulsory is at protocol upgrades.

We've seen folks update CLI, then as part of development regenerating their client (maybe they add a new function), then be forced to update the js-stellar-sdk when they just wanted to update their bindings.
The connection to CLI version is an oddity, and the experience gets worse the more dapps you work on because they may not all be using the same version.

Why is it unreasonable for someone to import the js-stellar-sdk for some uses

It's not, but they should be importing it from the bindings themselves!

We've seen folks update CLI, then as part of development regenerating their client (maybe they add a new function), then be forced to update the js-stellar-sdk when they just wanted to update their bindings.

But if they regenerate their bindings, it will automatically pull the appropriate version of the SDK. As long as they aren't separately installing the SDK (again, they shouldn't be because they aren't compatible with the bindings' imported SDK), it should still be transparent as long as it's not a protocol boundary (i.e. a breaking set of API changes).

But if they regenerate their bindings, it will automatically pull the appropriate version of the SDK.

They might not be wanting to upgrade the SDK though, or the bindings.

Right now, there is tight coupling between the specific TS Bindings generated by the CLI (that is, the small amount of JS code that must live in the CLI repo) and stellar-sdk. You really couldn't mix and match. We need to tightly lock the two together, with a specific stellar-sdk version in the package.json of the generated package like 12.0.0-rc.3 and NOT ^12.0.0-rc.3, otherwise things will not work as expected.
As the APIs stabilize, I would expect there to be some more flexibility. But right now, this "CLI depends on ContractClient in stellar-sdk" setup is incredibly new and unstable.

Just because they have a newer CLI doesn't mean they will want to upgrade the bindings or the SDK in use though.

If you change your contract interface, you will want to generate a new NPM package, so that your types match the new interface. If you've upgraded your CLI, then the generated NPM package will have new features and bug fixes, which for now probably rely on new features and bug fixes in stellar-sdk. Maybe it's ok, for now, to require them to upgrade stellar-sdk when they update the CLI?

Just because they have a newer CLI doesn't mean they will want to upgrade the bindings or the SDK in use though.

If you update your software you update every part of it :shrug: if you don't want the new bindings then go generate them with the old CLI.


🐛 BUG: wrangler dev is not auto-reloading a custom build when files change

What version of Wrangler are you using?
2.0.23
What operating system are you using?
Mac
Describe the Bug
I have a wrangler.toml file that looks like the following
name = "js"
account_id = "<redacted>"
workers_dev = true

main="./dist/main.js"

[build]
command = 'yarn build'

The yarn build just runs webpack.
When I run the worker using wrangler dev (tried in both local and not-local mode) then the build command is run the first time and the server starts up, but any changes to my local source files do not trigger a rebuild of the worker.
I have also tried configuring the [build] settings like this:
[build]
command = 'yarn build'
cwd = './'
watch_dir = './'

which also does not work. Is there something I'm configuring wrong, or is the functionality broken in some way?

This should definitely work. What is the layout of your source files? Would you be able to set up a small reproduction of the problem to share with us?

Closing as inactive/needs reproduction


feat: add webpack plugin

#522 Revisited with a webpack plugin instead
Usage
const ZiggyWebpackPlugin = require('./vendor/tightenco/ziggy/webpackPlugin');
mix.webpackConfig({
  plugins: [new ZiggyWebpackPlugin('php artisan ziggy:generate')],
});

This runs the command passed to it before the compilation.
If running mix watch, it will also watch for changes in config/ziggy.php and routes/ to retrigger this same command which in turn will trigger a rebuild if those files are modified

Thanks. I think this can be a lot simpler and I would rather let users set it up themselves instead of including it in Ziggy. I've added some documentation to make this easier for others to find.

Never mind it was already there and I completely forgot 🤦🏻

I already pointed out to several problems with your code that makes it recompile way too many times even when not needed and every time it compiles it does it 2 times as well, with the update happening only the second time, which is a big issue as it can take up to 1 minute for changes to be reflected in a dev env.
Aiso, sorry but if we're supposed to build everything ourselves then what's the point of ziggy except being a documentation?
The point of plugins is to make those integrations easier, because right now they're really not

What are the issues you've run into with those examples? Am I attaching to the wrong hooks?

what's the point of ziggy

To provide a route() helper function in JavaScript that mirrors Laravel's as closely as possible. That's it basically. I think we that pretty well, in large part because we have kept the scope of Ziggy pretty narrow and not added a ton of bells and whistles.
I have tried to build plugins/integrations with Webpack multiple times in other projects and it has always caused more problems than it solved and made me wish I hadn't bothered, so I'm especially sceptical of doing anything related to Webpack at all. But I also just don't think it's a big deal to run the artisan command manually once in a while, especially since on most projects I don't think route files are changing super frequently.
I'm not completely opposed to adding something like this, but because Webpack sucks to work with so much it has to be really, really simple, add as little code as possible, and be something that's going to be easy for me to maintain.

The problem is that by adding as a file dependency a file that is not actually a dependency of the bundle it creates a feedback loop, so the php file triggers a command and a rebuild of the whole bundle with the old files, then the new file updated by the command gets picked up and retriggers another build.
And this problem is made much worse because the generate command writes the output no matter what (something I addressed in this PR) so basically as soon as you're editing a php file 2 full compilations happen one after the other even though there was no change to the js output
This is something that can only be addressed by separate watchers than the main webpack watchers


How to simulate user input for testing purpose?

Hi all,
First, thanks for providing such a great library.
Actually, this is more a question than an issue. We are trying to write tests including the rich text editor that we built using DraftJS. Our rich text editor is part of a bigger form (written with React) that we need to test. One of the problem that we faced is we don't know how to simulate a text input into our editor. Ideally, we would like to use the React TestUtils.Simulate function.
Any advice on how to proceed? Which event to we need to simulate on which DOM node?
Thanks!

Well, I've finally found the answer to my question debugging Draft.
So here is the solution if anybody needs it. You need to target the dom node with the class name public-DraftEditor-content and trigger a beforeInput event.
With React TestUtils:
var draftEditorContent = TestUtils.findRenderedDOMComponentWithClass("public-DraftEditor-content");
TestUtils.Simulate.beforeInput(draftEditorContent, {data: "some text"});

For future readers; beforeInput no longer exists so this won't work anymore


Versioning and naming convention for extension packages

Some of the functionalities, while I'm happy to have in this repository, I think shouldn't be placed in core Saturn library but rather in separate NuGet packages. As for now there exist 2 additional projects - one for HttpSys hosting, and second one for integration with 3rd party OAuth providers.

What should be naming convention? (atm, OAuth is named Saturn.Extensions.Authorization, and HttpSys is named Saturn.HttpSys)
What should be namespace/modules naming convention?
What should be versioning story (independent? all packages released at same time with same version as core?
What should be release notes story? (again, independent? or just include it in main release notes?)

Opinions and discussion welcomed :-)

I only have an opinion on the versioning right now, which is that all the packages that come from the same source repo should probably be released as the same version. So if going from 0.7.3 to 0.7.4 only has changes in Saturn, there should be an 0.7.4 release of the Saturn.Extensions.Authorization package as well even though its 0.7.4 will be identical to 0.7.3.

OK, current plan:

use Saturn.Extensions.XXX for most packages, Saturn.XXX for bigger ones (currently AzureFunctions, not sure if there will be any others soon)
Use common version
Use single release notes

This is easiest one to manage, and understand. It can be revisited if we reach some huge number of extensions and contributors


Selected zone doesnt match with background image

https://www.floik.com/flos/jf9v/53l0/2e32408a.html?show-author=true

Fixed in 1.2.0


[FLINK-15584] Give nested data type of ROWs in ValidationException.

In
INSERT INTO baz_sink
SELECT
a,
ROW(b, c)
FROM foo_source
Schema mismatch mistakes will not get proper detail level, yielding the following:
Caused by: org.apache.flink.table.api.ValidationException: Field types of query result and registered TableSink [baz_sink] do not match.
Query result schema: [a: Integer, EXPR$2: Row]
TableSink schema: [a: Integer, payload: Row]
Leaving the user with an opaque 'Row' type to debug.

Please improve the PR naming and description so can be more easily and more thoroughly reviewed. See https://flink.apache.org/contributing/code-style-and-quality-pull-requests.html

Thanx @docete for the review.
Made changes as suggested and added description.

@ayushtkn Can you rebase your change to the latest master? The test failures are caused by an issue that has been addressed by now.

@ayushtkn Can you rebase your change to the latest master? The test failures are caused by an issue that has been addressed by now.
Sorry for the inconvenience. We appreciate your contribution!

Thanx @rmetzger for the review.
I have rebased and pushed.

Okay, let's wait for the CI system to pick this up

Thanx @rmetzger
Seems the CI result is success.
can you give a check once

I will modify commit title to [FLINK-15584][table-planner] Give nested data type of ROWs in ValidationException, FYI. @ayushtkn

Merged in: 3408eade79f59f7f9228c39ccc976ed5baab0581

Thank you @JingsongLi !


nlohmann_json: 3.9.1 -> 3.10.0

Patch has been merged in the mean time

Test issue supposedly fixed upstream

https://github.com/nlohmann/json/releases/tag/v3.10.0

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg build hydra-unstable nix nixStatic nixUnstable

Getting these failures, haven't checked yet if they are related:
nixos-install-tools python38Packages.qiskit python38Packages.qiskit-aqua python39Packages.qiskit python39Packages.qiskit-aqua


Which line would i need to change to make it work in every file extension?

Hey, I really like ur plugin! currently its only working in .tex files. I want to also use it in c++ with some other plugin to view to latex.
Which line would i need to change to make it work in every file-extension?

Fixed it.
Update the extension and you can test it.

Wow that was fast! Thanks a lot😊👍


Fix the Unicode collation for almost equal literals and the external vocabulary

Introduced a "TOTAL" collation order (first sort by IDENTICAL Level, then by the language tag, and then by the actual binary representation).  This always is and has to be used during index build to enforce, that bitwise different strings never compare equal and have a deterministic ordering.

It also allows us to use a different (lower) Sort Level when using the index, e.g. "which collation Level do we want to use for Filters".

Also included the Correct collation into the external vocabulary which was broken before in its ordering.

@joka921 can you look at the merge conflicts? I'll try to do some review this weekend

Ok, I fixed the conflicts so you can have a peek.


docs: improve list of rules, add data to rules metadata

Summary
This PR improves the page of lint rules. The list of rules is still divided by group, but they are now displayed inside a table and with an emoji that shows if a rule si recommended, if it has a safe fix and if it has an unsafe fix.
To show the entity of the fix, I created a new metadata that stores that information. This information makes applicability irrelevant, although that would require another refactor that we can push in another PR.
Also, I updated the diagnostics. to show Unsafe fix instead of Suggested fix.

Test Plan
Check the deployed website to make sure that the correct information is in sync with Applicability of the rule.
The current CI should still work.

Great suggestion!
I think we could use the same emoji that other tools:

✅ recommended rule
🔧 safe fixes
💡 unsafe fixes (suggestions)

Also, should we add the action category in the metada (quickfix, ...)?

The action category is only used in the LSP at the moment, and we always use quickfix, so I don't think we should move it

Great suggestion!
I think we could use the same emoji that other tools:

✅ recommended rule
🔧 safe fixes
💡 unsafe fixes (suggestions)

I thought about it, although I have some reservations about the light bulb. Contrary to Eslint, in Biome users can see unsafe fixes in the diagnostics, and apply them either via CLI or via LSP. Hence, the warning sign

@victor-teles thank you for the double check!
@Conaclos one more thing. As you know, in the documentation, we use the first paragraph as a short description of the rule. Now the paragraph can't be broke on multiple lines anymore because that will cause rendering issues in the table, that's why the PR changes some of them.


Update to allow currecy name change based on translation.

Last of the translation i could do is done.


LED driver for RGB leds + device tree support

Zephyr has a LED driver https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/led/led_gpio.c which is suitable for single LEDs. There is however (IMHO) no good way to handle RGB leds.
Describe the solution you'd like
It would be great to have native support for RGB leds. That is, having a common API for both RGB and single LEDs.
Something on this form:
// Turns on a single color LED or turns on  R, G and B channel
int led_gpio_on(const struct device *dev, uint32_t led_group);

// Turns off single color LED or turns off R, G and B channel
int led_gpio_off(const struct device *dev, uint32_t led_group);

// Vararg function. Takes a single uint8_t for single_leds or three uint8_t for RGB leds
int led_gpio_set_brightness(const struct device *dev, uint32_t led_group, ...)

// Will return error if supplied with single-led-group. color_define can be e.g. COLOR_RED, COLOR_WHITE...
int led_gpio_set_color(const struct device *dev, uint32_t led_group, uint8_t color_define)

This would also mean that the devicetree must have some mechanism to group three GPIOs to form an RGB LED group.

FYI @alexsven @erikrobstad. After even more searching, I discovered this https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/drivers/led.h which I need to investigate.

I have had a look at this one, as well as others, but it seems to me that in order to use them you need an external driver IC? In the use case we want to solve, the LED channels are connected directly to host GPIOs.

The LED DT API already allows to define multi-color (i.e. multi channel) LEDs. Here is an example:
leds {
        compatible = "gpio-leds";

        /* Multi channel GPIO LED */
        led_0 {
                label = "RGB LED";
                gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>,
                        <&gpio0 2 GPIO_ACTIVE_LOW>,
                        <&gpio0 3 GPIO_ACTIVE_HIGH>;
                color-mapping =
                        <LED_COLOR_ID_RED>,
                        <LED_COLOR_ID_GREEN>,
                        <LED_COLOR_ID_BLUE>;
        };
        /* Single channel GPIO LED */
        led_1 {
                label = "Green LED";
                gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
                color-mapping = <LED_COLOR_ID_GREEN>,
        };
};

On the led_gpio driver side, we simply need to implement support for the color-mapping and gpios array properties through the set_color method of the LED API. And probably we will need to disable the set_brightness method for a multi-color LED. And that's it.
Grouping LEDs is an interesting idea. Some LED controllers have this feature and it would be nice for the LED API to support it. But I don't think it is the right way to support RGB GPIO LEDs.

FYI @gWacey

Also I am also considering reopening https://github.com/zephyrproject-rtos/zephyr/pull/69227 and https://github.com/zephyrproject-rtos/zephyr/pull/74013.
Indeed they introduce the use of several items for the gpios and pwms properties (for the gpio-leds and pwm-leds DT bindings), while it is limited to 1 for Linux. But it is an elegant and cheap solution to bring support for GPIO/PWM RGB LEDs in Zephyr. The alternative of stacking drivers through pwm-leds-multicolor is not super appealing for an embedded OS...

Also I am also considering reopening https://github.com/zephyrproject-rtos/zephyr/pull/69227 and https://github.com/zephyrproject-rtos/zephyr/pull/74013.
Indeed they introduce the use of several items for the gpios and pwms properties (for the gpio-leds and pwm-leds DT bindings), while it is limited to 1 for Linux. But it is an elegant and cheap solution to bring support for GPIO/PWM RGB LEDs in Zephyr. The alternative of stacking drivers through pwm-leds-multicolor is not super appealing for an embedded OS...

@simonguinot will you be reopening the PRs as it is an elegant solution to the problem I am facing?

I don't know @gWacey.
Here is an attempt to describe the situation.
I wrote several Linux LED drivers in the past and at the time there was no support for multi-color LEDs. One LED was equal to one channel. And each color/channel of an RGB LED was handled independently from the others via a dedicated sysfs entry. It was actually not great at all.
So in 2020, when I started working on LEDs in Zephyr, I brought support for multi-color LEDs via the color-mapping DT property and ->set_color() API function. color-mapping introduces the notion that 1 LED can be composed of several color channels. And we grew from there. It is now used by 3 drivers: is31fl3194, lp50xx, ncp5623. The #69227 and #74013 PRs result directly from this.
But in the meantime, Linux took a different path. The color and function DT properties have been introduced and the ability to "compose" a multi-color LED with several monochrome LEDs was added.
In Linux, a LED controller with RGB or multi-color LEDs uses the following DT representation:
led-controller {
    compatible = "...";
    reg = <...>;

    multi-led@0 {
        color = <LED_COLOR_ID_RGB or LED_COLOR_ID_MULTI>;

        led@x {
            reg = <x>;
            color = <LED_COLOR_ID_RED>;
        };

        led@y {
            reg = <y>;
            color = <LED_COLOR_ID_GREEN>;
        };

        led@z {
            reg = <z>;
            color = <LED_COLOR_ID_BLUE>;
        };
    };
    multi-led@1 {
    ...
    };
    ...
};

While in Zephyr, we use:
led-controller {
    compatible = "...";
    reg = <...>;

    led@0 {
        index = <...>;
        color-mapping =
            <LED_COLOR_ID_RED>,
            <LED_COLOR_ID_GREEN>,
            <LED_COLOR_ID_BLUE>;
    };
    led@1 {
        ...
    };
    ...
};

So we are actually not aligned with Linux. For example, the DT bindings for the Texas Instruments LP50XX controllers ("ti,lp50xx") are not compatible.
For GPIO RGB LEDs, Linux introduced the leds-group-multicolor DT binding:
https://elixir.bootlin.com/linux/v6.12/source/Documentation/devicetree/bindings/leds/leds-class-multicolor.yaml. This allows to compose an RGB LED by stacking a leds-group-multicolor driver on the top of any other LED driver (led-gpio, led-pwm, ...). This allows to add support for RGB GPIO LED to existing boards by adding a new DT node and without modifying the existing DT LED nodes.
While leds-group-multicolor can be used to compose a PWM RGB LED, another DT binding has been introduced: leds-pwm-multicolor (https://elixir.bootlin.com/linux/v6.12/source/Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml). It uses the multi-led DT representation I described above and it allows to drive a PWM RGB LED directly, without stacking the leds-group-multicolor driver. So there are two drivers/bindings for PWM LEDs in Linux: led-pwm and leds-pwm-multicolor. A new board can use leds-pwm-multicolor to support PWM RGB LEDs. And an old board can go with led-pwm + leds-group-multicolor.
So to summarize, it's a mess :)
From where we are now, #69227 and #74013 are the right path. Stacking drivers is not really efficient for an embedded OS. But this takes us further away from Linux and it must be discussed.


Error when issuing kubectl cordon command

Receiving error as below,when trying cordon command as below on Cloud9 CLI
kubectl cordon carts-db-6c6c68b747-sf4xd
Error from server (NotFound): nodes "carts-db-6c6c68b747-sf4xd" not found
Though the same pod is showing up as running on pod list command
kubectl get pods --all-namespaces | grep  Running
sock-shop     carts-db-6c6c68b747-sf4xd                         1/1     Running   0          3h17m
...

@channaba you can only cordon a node. You can't cordon a pod.


Getting a 500 error when uploading a manifest.json file

The POST to http://manifold-api-prod.azurewebsites.net/manifests generates the following:
HTTP/1.1 500 Internal Server Error
Content-Length: 22
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Headers: X-Requested-With,content-type
Access-Control-Allow-Credentials: true
X-Content-Type-Options: nosniff
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=27023054ba46ddccf690210865394451278e3c1835be30e6c8f820bc6f6691e8;Path=/;Domain=manifold-api-prod.azurewebsites.net
Date: Thu, 01 Sep 2016 13:17:53 GMT

Internal Server Error

Thanks for creating this project!

can you tell us what site you are enerating from?

Sorry I don't recall the original site. I just tried it with my http://bundled.in/ site (which does not yet have it's own manifest), and it fails with the same error.
Thanks for looking into this!

Hey, can you email me directly on this  boyofgree at gmail.com or on twitter at boyofgreen?  API directly isn't a scenerio I want to support for everyone, but we should be able to get it to work.

Will do. I wasn't using the API directly, fwiw, just extracting what I saw from the console.
Message inbound. :wink:

Reopen this so we can make sure it's fixed after need release.    so @BigBlueHat the problem is actually with the .in sight.   We had this problem fixed a few version back where it can't generate an android app that has the .in in it, because "in" is a reserved word in the package name.   We've fixed in the CLI, but the website hasn't been updated to the latest CLI because of time timeout issue with the newest versions of cordova.   We are in the middle of moving to a web job system so this should all work in another week or two.  Sorry about the issue and thanks for filing an issue


Responsive design of editor options panel

Let's cater to Responsive design of editor options panel (If at all) later. So that this PR doesn't block other Tasks

Originally posted by @1-Harshit in https://github.com/1-Harshit/ed-eater/issues/26#issuecomment-1797932526

closed in #31


Add a profile to the root pom.xml that contains the basic code style rules that NetBeans will honour

thanks, mick!


Update Templates for VS 2017

Are there any plans in motion to have the extension for Project and Item templates updated to be compatible with the recently released VS 2017? Or is there some workaround already in place that I just haven't seen yet to get the extension to work?

bump

I do believe this project is dead I would recommend moving over to MahApps...that's what I had to do.

I think WPF will die so this project may not update in the end.

I highly doubt WPF will die. What makes you think it will?
On Tue, Jul 4, 2017 at 05:43 wacky<EMAIL_ADDRESS>wrote:

I think WPF will die so this project may not update in the end.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/firstfloorsoftware/mui/issues/161#issuecomment-312833880,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AK6u3d4NyGxFk1wNlP5nVjsyd6OIZXT4ks5sKgk4gaJpZM4Mm96q
.

WPF is not going to die, investment banks use this technology for trading platforms.

I'm wondering the same thing. I've taken a VS 2015 project and upgraded it with VS 2017. So far, it looks ok, but I haven't done anything significant such as take advantage of the user binging techniques. Everything is still what it would be, if it were opened with VS 2015. I'm wondering if trying to move forward with VS 2017 and yet depend upon this MUI project is a bad idea.

This project is dead, I'm moving to other framework

https://www.cnblogs.com/wgx0428/ 自己可以根据自己的vs版本升级。