[meta] OS X support in indigo

This is a meta issue to track all the issues around OS X support in indigo (see #4663 for hydro issues).
For now the following issues need to be fixed for desktop_full to build from source on OS X:

[x] [10.9 only] orocos_kdl needs to be re-released and the depending patches in robot_state_publisher and robot_model need to be merged & released (https://github.com/orocos/orocos_kinematics_dynamics/pull/4#issuecomment-44429121). Update: orocos_kdl was released to indigo and hydro, so we are waiting on the merge and release of https://github.com/ros/robot_model/pull/43 and https://github.com/ros/robot_state_publisher/pull/5. Update 2: all patches have been released
[x] rqt_robot_plugins needs to be re-released with recently merged patches (https://github.com/ros-visualization/rqt_robot_plugins/pull/65, https://github.com/ros-visualization/rqt_robot_plugins/pull/66)
[x] rodep installing gcc needs to be addressed: https://github.com/ros-infrastructure/rosdep/issues/328
[x] theora_image_transport sometimes fails to compile, restarting the compilation usually fixes it. Some missing dependencies are the problem: https://github.com/ros-perception/image_transport_plugins/pull/13
[ ] cmake and brewed python do not work together well. An experimental alternative LibPython cmake module can be installed by brew remove cmake; brew install nikolausdemmel/devel/cmake. See https://github.com/Homebrew/homebrew/issues/25118.
[x] using system python leads to issues when formulae with dependecies on python are installed, because by default the bottles are installed and bottle depend on brewed python (and therefore install them). See https://github.com/Homebrew/homebrew/issues/31229.
[x] qt_gui and dependent packages fail to run because of outdated PyQt on Homebrew. See https://github.com/ros-visualization/qt_gui_core/issues/47 and https://github.com/Homebrew/homebrew/pull/30881. Update: PyQt 4.11.1 formula has been released in homebrew.
[ ] rviz does not run with ogre 1.7 and crashes with 1.9: https://github.com/ros-visualization/rviz/issues/782

The following is a collection of workarounds on top of the install instructions needed to address the above issues (applies to desktop_full builds):

Currently no workarounds

These are install instructions put together by @mikepurvis:
https://gist.github.com/mikepurvis/9837958
Read carefully and understand what is going on rather than just blindly copy/pasting commands. These instructions deal with the cmake FindPythonLibs issue by specifying the lib/include path when compiling (rather than using the patched cmake formula) and installs the hydro version of rviz.

I'm not sure where the best place to report this is, or where to ask for help. On a completely new install of Yosemite (hard drive wipe) just now I had to do the following for Indigo:
I had to manually install pydot with the -H flag:

sudo -H pip install -U pydot

After rosdep install completed, I still had to run

pip install empy

brew install poco

Current Issues
I get this warning message when running catkin_isolated:

CMake Warning at cmake/test/nosetests.cmake:97 (message):
nosetests not found, Python tests can not be run (try installing package
'python-nose')
Call Stack (most recent call first):
cmake/all.cmake:146 (include)
CMakeLists.txt:8 (include)

But I cannot resolve that dependency:

pip install python-nose
Collecting python-nose
Could not find any downloads that satisfy the requirement python-nose
No distributions at all found for python-nose

@davetcoleman please don't use the quote mechanism to put in code snippets or console output. I've updated your comment.

I'm not sure where the best place to report this is, or where to ask for help.

I would have recommended starting on answers.ros.org, because some of these things may not be bugs.

I had to manually install pydot with the -H flag:
...

The sudo -H problem as been addressed and is in the latest version of rosdep, which is 0.11.1:
https://github.com/ros-infrastructure/rosdep/pull/369
For some reason I don't get that version when I install rosdep myself, though it is listed as the latest version on pypi:
https://pypi.python.org/pypi/rosdep
@tfoote is looking into it.

After rosdep install completed, I still had to run:
...

If rosdep ran successfully you should not have had to do all of that. That's the purpose of the rosdep install ... step from the instructions. I would need to know what exact steps you took to know why it didn't work for you. Simply stating something didn't happen isn't enough information to help. Please consider what you're asking before you post to ensure that you've included enough information for someone to help you.

But I cannot resolve that [python-nose] dependency:
...

@davetcoleman, really? It just has a different name in pip. One small investigation into the problem, e.g. pip search nose or rosdep resolve python-nose or Google'ing "install python-nose on os x", would have revealed the problem. And anyways most users wouldn't have run into the problem normally since rosdep should have installed it for them before they tried to build anything.

I also get this warning many times:
...

This is because Hoembrew installs a really new version of CMake. I haven't had time to make an issue about it nor have I had time to investigate it. However, as far as I can tell it doesn't affect your ability to build the packages on OS X.

Rviz does not build with error (similar to ros-visualization/rviz#782):
...

The original post is already tracking this I think:

rviz does not run with ogre 1.7 and crashes with 1.9: ros-visualization/rviz#782

For some reason I don't get that version when I install rosdep myself, though it is listed as the latest version on pypi:
https://pypi.python.org/pypi/rosdep
@tfoote is looking into it.

This has already been resolved, running sudo -H pip install -U rosdep should get you the latest version.

Also, for others who come later:

I had to manually install pydot with the -H flag:

Passing -H to sudo is not required to install pydot, it's just that the latest version of pip warns if you do not use -H because it cannot store logs correctly. pydot should have been installed regardless.

Sorry, my explanations were brief because I have a clean install of Yosemite (wiped hard drive) and so the background info is pretty simple. Everything is the latest. I ran rosdep and it did not report any errors. I was trying to help by providing some simple feedback - I could also just not report my fixes and keep them to myself.
Also, I did Google something to the effect of "install python-nose on os x" and I did run other methods for install nose. I can't remember why they didn't work and I'm not at the Mac at the moment.

I could also just not report my fixes and keep them to myself.

@davetcoleman I'm sorry if you feel I've offended you in some way, that was not my intention, but if you're serious about that comment then I don't think keeping to yourself helps anyone.
I'm not sure what you want me to say. Neither of your follow up comments give anything more to go on. All I can do is push you for more information, like:

What commands did you run?
Did you have all of your sources you wanted to build checked out before running rosdep?
Where did you run rosdep, was it in the same folder as the src folder which contained the packages' source code?
Can you go back and run rosdep again but with the -s option and post the result?
What did you try when installing python-nose on OS X? Why didn't work?

I'd like to help you and improve the workflow for others but without answers to questions like these I can't.
I know you're smart and capable, I just wish you would take the time required to formulate better feedback. Because the reality is that if you don't do it, then you're forcing me to make a decision to either ignore the feedback or risk a large amount of my own time trying to reproduce something you've reported based on vague feedback. And I, just like you and everyone else, have lots of things to do and not enough time to do them.
If you're displeased with me for asking you to do give better feedback, I won't apologize for that, because I know you're capable of it. An ounce of thoughtful feedback is worth a mountain of unsubstantiated feedback.

I'm afraid we've had some miscommunications - I didn't mean to hijack this thread or get into an argument and again I apologize. I should have prefaced my issues with "These are just some notes I jotted down why reading through a bunch of different Github issues, ROS answers, and many Google Searches."  I don't develop on Mac - I'm just trying to help a lab mate whose software is Mac-only that needs to communicate with mine. I don't understand pip, or python dependencies. I was hoping like others before me in this thread I could weight in on my current experience following the all the provided resources I could find.
When I made the silly remark "I could also just not report my fixes and keep them to myself." it was because I was a little offended when you corrected me 3 times in my original post. In my mind I was just trying to help, this isn't high priority to me, and I know this current Github issue is posted as "meta" and not the best place for tons of details. I'd be happy to open separate issues for the things I mentioned, I just couldn't figure out where to do so, as I explained in the first sentence of my issue. I understand that you were doing your best to address my issues, and your help so far has been thorough.
I haven't been back on my Mac yet so have no extra details to provide.

Just adding another data point here. I built indigo successfully on Yosemite using system Python and hydro rviz. I forked @mikepurvis installation notes to document my build process (tl;dr I wrote a shell script that installs brew dependencies against system Python and I had to patch rviz headers that get processed by the Qt MOC).

The latest robot_model (1.11.7) has an unresolved dependency on 'pcre-dev' (was pcrecpp).  I've added a mapping for that key into osx-homebrew and created a pull request for it.


Workbox-build, empty callbacks for backgroundSync runtimeCaching options

Hi,
I'm currently working on project based on Create React App v2.1.0 , that includes build-in workbox.
I'm generating a service worker using workbox-build. In runtimeCaching I have several caching options, including backgroundSync option, where I want to include some custom action after queueDidReplay

However, on my generated service worker there is no callback options.

Is this option is available? Or this is CRA issue?
Would be gratefull for any directions or hints.
Thanks.

We do make an attempt to transfer free-form function definitions inside of the runtimeCaching config into the final generated service worker code by using the stringify-object module under the hood, but only for entries in the options.plugins section: https://github.com/GoogleChrome/workbox/blob/b146d8d3c2db89fa51afc322049b9795894bb4f2/packages/workbox-build/src/lib/runtime-caching-converter.js#L32-L38
When using the shorthands for configuring the various plugins, like options.backgroundSync, we just use JSON.stringify(), which is what's causing what you're seeing: https://github.com/GoogleChrome/workbox/blob/b146d8d3c2db89fa51afc322049b9795894bb4f2/packages/workbox-build/src/lib/runtime-caching-converter.js#L75-L84
I think switching the JSON.stringify() there to use the same stringify-object wrapper we're using earlier would take care of the issue.

This is fixed in Workbox v4.


Create/Update Monitors

Is your feature request related to a problem? Please describe.
Currently, there is no way to create or update Monitors.
Describe the solution you'd like
I'd like the ability to do that.
Describe alternatives you've considered
It can be done through the Uptime Robot dashboard.
Additional context
I created an issue for this for a few reasons:

To see if there's a need.
To track others that may ever need it.
In hopes of preventing others from creating issues.

Some notes on why this doesn't currently exist.
The current API has a ton of options and parameters that are passed in when creating a monitor. Too many of them are required in some cases, but not in others.
It's possible that I could, down the road, add specific methods to create specific monitors, but that creates a whole different set of problems when it comes to test-ability.
I'm just not sure how to handle it and at this point I'm not sure how much value it provides.


Only 1 active worker from 800

Hello, running worker with this configuration
func main() {
	concurrency := runtime.NumCPU() * 200

	srv := asynq.NewServer(
		asynq.RedisClientOpt{Addr: redisHost + ":" + redisPort, Password: redisPassword, DB: 1},
		asynq.Config{
			Concurrency:    concurrency,
			Queues:         map[string]int{tasks.QueueName: 9},
			StrictPriority: true,
		},
	)

	// close publisher connection functionality
	defer tasks.Publisher.Channel.Close()

	// Use asynq.HandlerFunc adapter for a handler function
	if err := srv.Run(asynq.HandlerFunc(tasks.HandleMonitorDeliveryTask)); err != nil {
		log.Fatal(err)
	}
}

Problem is that even Concurency is set to 800 workers there is always only 1 worker processing queue. This is why the Pending queue is not processing correctly and whole system has delays. (screenshots below)
Code of function tasks.HandleMonitorDeliveryTask is working correctly and fast because when i load all the data, it processes Task with group of 5000 items and it load into RabbitMQ -> 1 million items in e.g. 1 minute.
But when Task has 1 item it slows down due to only 1 worker processing this queue even when there is 800 workers setup for server it only run 1.
Is there something what i missing in configuration? How to setup it?

bad forum


Jetson Nano is not using the GPU

face_recognition version: 1.2.2
Python version: 3.6
Operating System: NVidia SDK 4.6

Hello,
I have dlib 19.22 installed. But no matter what I do. My Jetson Nano only uses my CPU.
If I try it via a pythonscript or via "face_recognition ...." in the commandline. Only CPU
I have installed:
Cuda 10.2.300
OpenCV 4.5.3 with compiled CUDA
TensorRT <IP_ADDRESS>
cuDNN <IP_ADDRESS>
What can I do to use the GPU?

Same issue here. I was trying to bring up a machine using as much pre-installed stuff as possible
(seeing the mess I made before trying to upgrade and re-compile everything)
Jetpack 4.6 [LT4 32.6.1]
CUDA  10.2.300
Opencv 4.1.1  without CUDA
cnDNN  <IP_ADDRESS>
dlib.DLIB_USE_CUDA = True
dlib version = 19.22.0
dlib compiled = Nov 14 2021 16:36:45
face_recognition.version = 1.2.3      (or 1.3.0 depending on how you ask the question)
cv2.version = 4.1.1
Dlib has been compiled and it says
-- Enabling CUDA support for dlib.  DLIB WILL USE CUDA
Other observations.
in python using
FacePositions = face_recognition.face_locations(imageRGB  ,model="cnn" )
will incur a 15sec freeze the 1st time through, using a 640x360 image.
then whilst it is processing frames the GPU usage reported by jtop is 0%
Thanks
JC
Microcontroller_Notes_Jetson_5v0b_log_dlib.txt

A follow up from my post yesterday - I tried a cure within dlib as outlined in
https://forums.developer.nvidia.com/t/issues-with-dlib-library/72600/16
https://medium.com/@ageitgey/build-a-hardware-based-face-recognition-system-for-150-with-the-nvidia-jetson-nano-and-python-a25cb8c891fd
these relate to dlib 19.16 and 19.17 but it seems to still apply to 19.22
a one line change, a quick recompile and model="cnn" works now with GPU rocketting to 99%
JC

A second follow up.  I regressed dlib to 19.21 and it now works without any modifications.
The 1st call to face_recognition.face_locations has dropped from 22 to 25 seconds to 14 or 15 sec for model=cnn
JC

you can see the performance of your Jetson Nano with this instructions
https://www.seeedstudio.com/blog/2020/07/09/monitor-gpu-cpu-and-other-stats-on-jetson-nano-xavier-nx-tx1-tx2/

第二次跟进。我将 dlib 回归到 19.21，它现在可以在没有任何修改的情况下工作。第一次调用 face_recognition.face_locations 已从 22 秒到 25 秒下降到 14 或 15 秒 model=cnn JC

按照你说的方法,我的速度更加慢了!
The way you say, my speed is even slower!


expose pubsub SubscriberClient for lease management

https://cloud.google.com/pubsub/docs/lease-management
According to the docs, a ModifyAckDeadlineRequest can be sent to extend the default 600s max limit.
It's not possible to extend the deadline as the SubscriberClient is pub(crate) and subc is also private.
Ideally this should be attached to the ReceivedMessage itself, so it can be extended while also being able to ack/nack. Another solution would to implement a fn client(&self) -> &SubscriberClient on Subscription
Using subscription.receive is currently impossible to implement on the codebase.
The use case is distributed worker that deals with 1 message at a time, but scales horizontally, but sometimes it can take much longer than 10 minutes to complete (~20 min), and using the streaming subscribe leads to a lot of unnecessary retries

#215 has been working fine in production for us, I guess this is done 😃


Feature/compile with java 11

fixes #14

I get package com.sun.javadoc does not exist when I try and compile this branch

Are you sure? I have just checked, and this works flawlessly:
git clone --branch feature/compile_with_java_11 https://github.com/magwas/xml-doclet.git;\
    cd xml-doclet/; mvn install;

please share the build output so I can figure out what the problem is.

As there is no response from Markus, I intend to publish a package to OSSRH/maven central with the fix.
https://issues.sonatype.org/browse/OSSRH-51109

@magwas did you ever get this published to maven central? Sorry if I'm missing something, running into the same issue you fixed

No, we just check out and mvn install.

When changes will be made?

As there is no response from Markus, I intend to publish a package to OSSRH/maven central with the fix. https://issues.sonatype.org/browse/OSSRH-51109

Greetings.
I have done exactly that: https://github.com/manticore-projects/xml-doclet
<docletArtifact>
    <groupId>com.manticore-projects.tools</groupId>
    <artifactId>xml-doclet</artifactId>
    <version>1.1.0</version>
</docletArtifact>


Gitea - verify description and correct the required egress rules

Make sure that below egress firewall rules are what is needed for the Gitea and the description of each of them is described in detail.

Documentation
Firewall settings - be aware these rules seems to be shared with Nexus

Please create a PR to the defaultroute branch or let me know what to change.

@tamirkamara who can help me with this task?


Custom select validation tweaks

The padding of custom selects doesn't cover the background, if the text in the select box is to long, the text and background image will overlap.
This PR also removes unneeded calc() functions.
Before:

After:

@MartijnCuppens: can you move the variable to _variables.scss?

I've moved some values to the variables file as mdo suggested and simplified the if/else construction. Also fixed the linting issue and squashed everything into one commit.


Global University Analysis

ML-Crate Repository (Proposing new issue)
:red_circle: Project Title : Global University Analysis
:red_circle: Aim : Analyse different universities around the globe from the given dataset.
:red_circle: Dataset : https://www.kaggle.com/datasets/jkanthony/world-university-rankings-202223
:red_circle: Approach : Try to use 3-4 algorithms to implement the models and compare all the algorithms to find out the best fitted algorithm for the model by checking the accuracy scores. Also do not forget to do a exploratory data analysis before creating any model.

📍 Follow the Guidelines to Contribute in the Project :

You need to create a separate folder named as the Project Title.
Inside that folder, there will be four main components.

Images - To store the required images.
Dataset - To store the dataset or, information/source about the dataset.
Model - To store the machine learning model you've created using the dataset.
requirements.txt - This file will contain the required packages/libraries to run the project in other machines.

Inside the Model folder, the README.md file must be filled up properly, with proper visualizations and conclusions.

:red_circle::yellow_circle: Points to Note :

The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.
"Issue Title" and "PR Title should be the same. Include issue number along with it.
Follow Contributing Guidelines & Code of Conduct before start Contributing.
This issue is only for 'SWOC' and 'JWOC' contributors of 'ML-Crate' project.

:white_check_mark: To be Mentioned while taking the issue :

Full name :
GitHub Profile Link :
Participant ID (If not, then put NA) :
Approach for this Project :
What is your participant role? (Mention the Open Source Program name. Eg. HRSoC, GSSoC, GSOC etc.)

Happy Contributing 🚀
All the best. Enjoy your open source journey ahead. 😎

Full name : NIRVIK GHOSH
GitHub Profile Link : @Nirvik07
Participant ID (If not, then put NA) : NA
Approach for this Project : To analyse QS University Ranking.
What is your participant role? HRSoC 2022 Participant.

@abhisheks008 assign me this.

Issue assigned to you @Nirvik07


[SPARK-32494][SQL] Null Aware Anti Join Optimize Support Multi-Column

What changes were proposed in this pull request?
In this PR, proposed a trade-off that can also support multi column to perform hash lookup in buildSide, but required buildSide with extra duplicate data, the duplication would be 2^numKeys - 1, for example, if we are to support NAAJ with 3 column join key, the buildSide would be expanded into (2^3 - 1) times, 7X.
For example, if there is a UnsafeRow key (1,2,3)
In NullAware Mode, it should be expanded into 7 keys with extra C(3,1), C(3,2) combinations, within the combinations, we duplicated these record with null padding as following.
Original record
(1,2,3)
Extra record to be appended into HashedRelation
(null, 2, 3) (1, null, 3) (1, 2, null)
(null, null, 3) (null, 2, null) (1, null, null))
with the expanded data we can extract a common pattern for both single and multi column. allNull refer to a unsafeRow which has all null columns.

buildSide is empty input => return all rows
allNullColumnKey Exists In buildSide input => reject all rows
if streamedSideRow.allNull is true => drop the row
if streamedSideRow.allNull is false & findMatch in NullAwareHashedRelation => drop the row
if streamedSideRow.allNull is false & notFindMatch in NullAwareHashedRelation => return the row

Why are the changes needed?
Considered that NAAJ in real production usage, the numKeys should not be that big, normally 1~3 keys, I think it's still worth to do such trade-off.
Does this PR introduce any user-facing change?
No.
How was this patch tested?

SQLQueryTestSuite with NOT IN keyword SQL, add CONFIG_DIM with spark.sql.optimizeNullAwareAntiJoin on and off
added case in org.apache.spark.sql.JoinSuite.
added case in org.apache.spark.sql.SubquerySuite.
added case in org.apache.spark.sql.execution.joins.HashedRelationSuite to make sure the data expand logical.
config combination against e2e test (both single and multi column cases) with following

Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "false",
  "spark.sql.codegen.wholeStage" -> "false"
),
Map(
  "sspark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "false",
  "spark.sql.codegen.wholeStage" -> "true"
),
Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "true",
  "spark.sql.codegen.wholeStage" -> "false"
),
Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "true",
  "spark.sql.codegen.wholeStage" -> "true"
)

@cloud-fan @maropu @agrawaldevesh

Can one of the admins verify this patch?

ok to test

Can one of the admins verify this patch?

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31449/
Test PASSed.

Test build #126826 has started for PR 29304 at commit 4b113f2.

@viirya thanks for your reviewing, code updated.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31461/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31477/
Test PASSed.

Test build #126838 has started for PR 29304 at commit c495125.

Test build #126854 has started for PR 29304 at commit 0c6e259.

Test build #126826 has finished for PR 29304 at commit 4b113f2.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Test build #126838 has finished for PR 29304 at commit c495125.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Test build #126854 has finished for PR 29304 at commit 0c6e259.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/126838/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/126854/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/126826/
Test FAILed.

rebased code because merge conflicts.

Test build #126872 has started for PR 29304 at commit 130606c.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31495/
Test PASSed.

Test build #126872 has finished for PR 29304 at commit 130606c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/126872/
Test PASSed.

@maropu thanks for reviewing during weekend, code updated. ^_^

Test build #126925 has started for PR 29304 at commit 1153513.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31549/
Test PASSed.

Test build #126925 has finished for PR 29304 at commit 1153513.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/126925/
Test PASSed.

Correct me if I am wrong here but I don't see any special handling for null keys on the left (probe) side. The changes to HashedRelation only account for the right side handling.
ie, You seem to have implemented the step 2 in section 6.2 of the NAAJ paper but I don't see where step 3 is implemented ? That one seems more trickier since it needs to wild card matches.

in fact, the reason i am doing now to expand data in build side, it's mainly to just avoid handling null values in probe side.

let's say there is a record
(1, null, 3) in probe side, if there is a (1,2,3) in build side, it's counted as MATCH in comparison. basically if i want to avoid 0(M*N) which is loop look up in build side, i will have to expand (1,2,3) with all combination null padding new records like
Original key expand to 2^3 -1 = 7X keys, and we can use probe side record (1, null, 3) to just directly hash loop up with such data duplication. I don't know if I make it clean for you @agrawaldevesh , it is a bit hard for me to explain in english. ^_^
(1, 2,3 )
(null, 2, 3)
(1, null, 3)
(1, 2, null)
(null, null, 3)
(null, 2, null)
(1, null, null)

Correct me if I am wrong here but I don't see any special handling for null keys on the left (probe) side. The changes to HashedRelation only account for the right side handling.
ie, You seem to have implemented the step 2 in section 6.2 of the NAAJ paper but I don't see where step 3 is implemented ? That one seems more trickier since it needs to wild card matches.

in fact, the reason i am doing now to expand data in build side, it's mainly to just avoid handling null values in probe side.

let's say there is a record
(1, null, 3) in probe side, if there is a (1,2,3) in build side, it's counted as MATCH in comparison. basically if i want to avoid 0(M*N) which is loop look up in build side, i will have to expand (1,2,3) with all combination null padding new records like
Original key expand to 2^3 -1 = 7X keys, and we can use probe side record (1, null, 3) to just directly hash loop up with such data duplication. I don't know if I make it clean for you @agrawaldevesh , it is a bit hard for me to explain in english. ^_^
(1, 2,3 )
(null, 2, 3)
(1, null, 3)
(1, 2, null)
(null, null, 3)
(null, 2, null)
(1, null, null)

basically, if there is any null columns in probe side keys, it means ignoring the null keys values, and using the rest non-null column to try match in corresponding columns in buildSide. since in streamedSide rows, in can be all kinds of null position combination existing, i can not pre-build according to any single combination, so i have to expand to all kinds of combination with null padding .

@leanken ... let me chew on your response. I will get back to you.
In the meanwhile I am wondering if you can rerun the performance of the original TPCH q16 (single key not-in) with this multi-key PR and without it. I have a feeling we might have regressed the performance of the (much more common) single key case and it may make sense to retain that as a special case. Can you double check that please.

@leanken ... let me chew on your response. I will get back to you.
In the meanwhile I am wondering if you can rerun the performance of the original TPCH q16 (single key not-in) with this multi-key PR and without it. I have a feeling we might have regressed the performance of the (much more common) single key case and it may make sense to retain that as a special case. Can you double check that please.

Sure, I will do Q16 Test again. Though i have strong confident that it will not cause perf regression, because in single key not in case, it will not cause any data expansion.

@leanken ... let me chew on your response. I will get back to you.
In the meanwhile I am wondering if you can rerun the performance of the original TPCH q16 (single key not-in) with this multi-key PR and without it. I have a feeling we might have regressed the performance of the (much more common) single key case and it may make sense to retain that as a special case. Can you double check that please.

Sure, I will do Q16 Test again. Though i have strong confident that it will not cause perf regression, because in single key not in case, it will not cause any data expansion.

because 2^1 - 1 = 1

let's say there is a record
(1, null, 3) in probe side, if there is a (1,2,3) in build side, it's counted as MATCH in comparison. basically if i want to avoid 0(M*N) which is loop look up in build side, i will have to expand (1,2,3) with all combination null padding new records like
Original key expand to 2^3 -1 = 7X keys, and we can use probe side record (1, null, 3) to just directly hash loop up with such data duplication. I don't know if I make it clean for you @agrawaldevesh , it is a bit hard for me to explain in english. ^_^
(1, 2,3 )
(null, 2, 3)
(1, null, 3)
(1, 2, null)
(null, null, 3)
(null, 2, null)
(1, null, null)

Let's consider for both steps 2 and 3 of section 6.2 in the NAAJ separately:

Step 2: Say there is a right (build) side row (1, null, 3). It should be counted as a match against a row on the left side (1, 2, 3). What makes this tricky is that say say you have a build row (1, 5, 3), then (1, 5, 3) should NOT match the probe row (1, 2, 3). But if you explode (1, 5, 3) into a (1, null, 3) then it might incorrectly match (1, 2, 3). How do you handle both of these subcases ?

Step 3: Consider a build row (1, 5, null), it should match the left row (1, null, 3). In addition, it should not match the build row (1, 5, 7). How do you handle these subcases ?

let's say there is a record
(1, null, 3) in probe side, if there is a (1,2,3) in build side, it's counted as MATCH in comparison. basically if i want to avoid 0(M*N) which is loop look up in build side, i will have to expand (1,2,3) with all combination null padding new records like
Original key expand to 2^3 -1 = 7X keys, and we can use probe side record (1, null, 3) to just directly hash loop up with such data duplication. I don't know if I make it clean for you @agrawaldevesh , it is a bit hard for me to explain in english. ^_^
(1, 2,3 )
(null, 2, 3)
(1, null, 3)
(1, 2, null)
(null, null, 3)
(null, 2, null)
(1, null, null)

Let's consider for both steps 2 and 3 of section 6.2 in the NAAJ separately:

Step 2: Say there is a right (build) side row (1, null, 3). It should be counted as a match against a row on the left side (1, 2, 3). What makes this tricky is that say say you have a build row (1, 5, 3), then (1, 5, 3) should NOT match the probe row (1, 2, 3). But if you explode (1, 5, 3) into a (1, null, 3) then it might incorrectly match (1, 2, 3). How do you handle both of these subcases ?
Step 3: Consider a build row (1, 5, null), it should match the left row (1, null, 3). In addition, it should not match the build row (1, 5, 7). How do you handle these subcases ?

After we expand data in BuildSide
streamedSide (1 , 2, 3) and buildSide (1, null, 3) is not counted as a Match, we are looking for exactly same UnsafeRow, which has same hashCode, therefore we can use streamedUnsafeRow as key to look up in HashedRelation.

Step 2: Say there is a right (build) side row (1, null, 3). It should be counted as a match against a row on the left side (1, 2, 3). What makes this tricky is that say say you have a build row (1, 5, 3), then (1, 5, 3) should NOT match the probe row (1, 2, 3). But if you explode (1, 5, 3) into a (1, null, 3) then it might incorrectly match (1, 2, 3). How do you handle both of these subcases ?
Step 3: Consider a build row (1, 5, null), it should match the left row (1, null, 3). In addition, it should not match the build row (1, 5, 7). How do you handle these subcases ?

Above, when I mean "match" -- I mean that the left side would match the build row and WON'T be returned. Whereas with non match I mean that the left side would not match the build side and thus WILL be returned. We have different meanings for the words 'match' and 'not-match'. So please read my 'match' == 'NAAJ should not return the left row', and conversely for non-match.
I would really really really encourage you to:

Please reread the paper section 6.2 in its entirety many times and understand the above cases. I had to read it many times myself. It is very tricky as you pointed out.
Add them as test cases comparing them with the original BNLJ implementation, both the negative and positive cases.

This is really tricky and I don't think the current implementation you have of expanding the hash table with a simple lookup on the stream side would suffice. I will also try to play around with your PR locally and run them as tests to convince myself. I hope I am wrong ;-).

Step 2: Say there is a right (build) side row (1, null, 3). It should be counted as a match against a row on the left side (1, 2, 3). What makes this tricky is that say say you have a build row (1, 5, 3), then (1, 5, 3) should NOT match the probe row (1, 2, 3). But if you explode (1, 5, 3) into a (1, null, 3) then it might incorrectly match (1, 2, 3). How do you handle both of these subcases ?
Step 3: Consider a build row (1, 5, null), it should match the left row (1, null, 3). In addition, it should not match the build row (1, 5, 7). How do you handle these subcases ?

Above, when I mean "match" -- I mean that the left side would match the build row and WON'T be returned. Whereas with non match I mean that the left side would not match the build side and thus WILL be returned. We have different meanings for the words 'match' and 'not-match'. So please read my 'match' == 'NAAJ should not return the left row', and conversely for non-match.
I would really really really encourage you to:

Please reread the paper section 6.2 in its entirety many times and understand the above cases. I had to read it many times myself. It is very tricky as you pointed out.
Add them as test cases comparing them with the original BNLJ implementation, both the negative and positive cases.

This is really tricky and I don't think the current implementation you have of expanding the hash table with a simple lookup on the stream side would suffice. I will also try to play around with your PR locally and run them as tests to convince myself. I hope I am wrong ;-).

Yes, I do understand of the Paper 6.2. Basically the paper describe the algorithm in the perspective of StreamedSide. But the expansion state the perspective of BuildSide. Let's just do revert inferencing of the following case.
if buildSide exist a row (1,2,3), what data in StreamedSide will evaluated as TRUE OR UNKNOWN and dropped.
it should be
(null, 2, 3) (1, null, 3) (1, 2, null) (null, null, 3) (null, 2, null) (1, null, null) and of course (1,2,3)
right?
Only in above combination, streamedSide row will be dropped besides non-all-null case, right?
I suppose this solution is working because it's passing all the not in cases in SQLQueryTestSuite.

build a secondary access structure
In my case, I am building all possible secondary access structure beforehand. @agrawaldevesh

I just found out a negative case for it
it should return (1,2,3) in expansion solution, but it return nothing in BNLJ.
you are right about the correctness, let me rethink and come back to you later.
spark.sql(
        """
          |CREATE TEMPORARY VIEW m AS SELECT * FROM VALUES
          |  (1, 2, 3)
          |  AS m(a, b, c)
        """.stripMargin).collect()

      spark.sql(
        """
          |CREATE TEMPORARY VIEW s AS SELECT * FROM VALUES
          |  (1, null, 3)
          |  AS s(c, d, e)
        """.stripMargin).collect()

      spark.sql(
        """
          |select * from m where (a,b,c) not in (select * from s)
        """.stripMargin).collect().foreach(println)

@agrawaldevesh I am finally understand the complexity of multi column support, thanks to your remind again and again, feel sorry about my naive. Do you think it still worth to carry on to support multi column? sincerely ask for you suggestion.

@agrawaldevesh I am finally understand the complexity of multi column support, thanks to your remind again and again, feel sorry about my naive. Do you think it still worth to carry on to support multi column? sincerely ask for you suggestion.

as for how to support it, i think it might be

scan buildSide to gather information about which columns contains null
build HashedRelation with original input include anyNull Key
building a extra HashedRelation which is all combination null padding.

when probe doing on streamedSide

if streamedSide key is a all non-null value, using the gathered null information on right side, to try find match in original HashedRelation, for example (1,2,3) with buildSide c2, c3 with null value, try match using following keys
(1,2,3) (1,null,3)(1,2,null)(1,null,null)
if streamedSide key contains any column which is null value, for example (null, 2, 3), use the key to look up in extra hashedRelation because it contains all possible combinations.

Yes, I do understand of the Paper 6.2. Basically the paper describe the algorithm in the perspective of StreamedSide. But the expansion state the perspective of BuildSide. Let's just do revert inferencing of the following case.
if buildSide exist a row (1,2,3), what data in StreamedSide will evaluated as TRUE OR UNKNOWN and dropped.
it should be
(null, 2, 3) (1, null, 3) (1, 2, null) (null, null, 3) (null, 2, null) (1, null, null) and of course (1,2,3)
right?

First let me make sure I understand the current approach in this PR: We take a row and add possible null padded combinations of it to the hash table. And then there is almost no change to the streaming side: We look for an exact match in the hash table. The only other tiny change to the streaming side is the change from anyNull to allNull, which becomes pertinent with multiple keys. Is that right ?
So with this consider what happens when there is a build row of (1, null, 3). We expect the row (1, 2, 3) to NOT be returned (or 'matched' in my parlance). Lets see what would happen with this PR: We will expand (1, null, 3) into the following rows in the HT: (1, null, 3), (null, null, 3), (1, null, null), (null, null, null). (Btw, should (null, null, null) be even added here ?). Unfortunately the row (1, 2, 3) does not match and is RETURNED. Similarly the left side row (1, 3, null) should also match and not be RETURNED but this PR would return it.
(Please consider adding them as tests and you will see that the BNLJ implementation passes them but this PR would fail them.)
The PR currently will pass the negative tests I mentioned above: build row (1, 5, 3) will not match probe row (1, 2, 3) and nor will the build row (1, 5, null) match the probe row (1, 5, 7). That is, the PR will correctly NOT return the probe rows (1, 2, 3) nor (1, 5, 7).
As for why the PR may be passing SubquerySuite: I am not sure how strong the coverage for SubquerySuite's multi-key not-in is. The BNLJ approach didn't have a special algorithm for multiple keys and thus it may not have needed as much attention.
My guess is that we cannot just do simple HT probing on the stream side. We have to do something different. The original NAAJ paper calls for creating multiple HT's with different key combinations (depending on what's null or not).

@agrawaldevesh I am finally understand the complexity of multi column support, thanks to your remind again and again, feel sorry about my naive. Do you think it still worth to carry on to support multi column? sincerely ask for your suggestion.

Don't feel sorry. I admire you being bold and persevering with this !! This is how engineering proceeds, we learn when we hit brick walls. I have actually tried to (unsuccessfully !) implement this optimization before using a variety of these naive ways but shied away from implementing the multiple index approach because it seemed too much work.
You have come very far with this and I would totally encourage you to please think how to support this for the common cases of just 2 and 3 keys. I think creating new additional indices "on-demand" (as mentioned in step 3) when we encounter a particular row-type on the probe side is probably not going to work (it would lead to unpredictable memory behavior).
As for whether we should do this or not ... it totally depends on the approach. If its not too much work to support it for the special case of 2 keys (lets even forget three keys), we can consider it. Its a tradeoff: Customers can always rewrite their query from NOT-IN to NOT-EXISTS if they are not happy with the BNLJ performance.
How about this approach (mirroring the steps 1, 2, and 3 in the paper): Step 1 is for the exact match. For step 2, Instead of exploding the HT (ie inserting the null combinations there) -- just search for different null variants as mentioned in step 2 of the paper. ie do the different null-aware padding lookups instead of storing those lookups. Whereas if you encounter a left side row with a null key then we would be forced to do the BNLJ style "scanning" of the HT to search for all matching combinations (ie, if we decide to not build additional indices). This approach would still be more efficient than plain BNLJ since the NLJ penalty is only paid for left rows having a null key.
As a diversion, I wonder if it makes sense instead to support the single key case but for distributed scenario (shuffle hash join and like) if this multi-key stuff is really hard. I think the single-key distributed case would be more common.
Thanks for working on this !!

Test build #127068 has started for PR 29304 at commit 054581a.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/31690/
Test PASSed.

@agrawaldevesh already pushed the InvertedIndex version POC. and gather some test result on TPCH 1TB Q16
It is indeed causing performance regression for single column case, as for multi column case, the perf data is as expected.
I talk with @cloud-fan offline, he suggests that the regression is mainly caused by the HashMap is Inefficient compare to the Long2UnsafeRowMap and Byte2ByteMap, because they are more cpu cache friendly.
Since for the following reason, I think I might need to temporary seal the PR, and maybe looking back in some future time.

As we discuss yesterday, multi-column is not that frequency used in production, as I observed, maybe less than 0.1 %
I can't guarantee after supporting the multi-column, there will be no regression for single column, Since there are no such UnsafeRoaringBitmap now, and if i am going to implement one, it might be to much for the reviewer to review both with the correctness and performance
Single Column Support for ShuffleHashJoinExex should be more important.

But, we are still come up with a neat algorithm to fix the complicated issue, that should count for something. Let's just considered this PR as a Discussion and Memo, and maybe some day when it's ready to support multi-column, the conversation and test result in the PR might be helpful. @agrawaldevesh @viirya @maropu sorry for waste your time, and as @cloud-fan suggested, I will move to support single column ShuffleHashJoinExec.
hashedRelation impl
SingleColumn
E2E time: 33.6s
BHJ Stage time: 5.9m
InvertedIndex impl
SingleColumn
E2E time: 40.5s
BHJ Stage time: 16.3m
TwoColumn
E2E time: 59.2s
BHJ Stage time: 36.2m

Test build #127068 has finished for PR 29304 at commit 054581a.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class NullAwareUnsafeRowHashSet(
class InvertedIndexHashedRelation(

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/127068/
Test FAILed.

@leanken ... this was a GREAT GREAT attempt and I certainly learned a ton from it :-P. I am curious if you ran profiled it while running the Q16 and have a sense of where the low hanging fruits might be ?
We can also consider the hybrid approach we discussed where we double the memory and keep the original HashedRelation for step 1 and 2 of the paper but use the inverted indices only for the step 3. That might help with the inverted index caused regression for the single key case.
In any case, I am totally with @cloud-fan that supporting shuffled hash join single key is more important. (As I also noted in my previous comment):

As a diversion, I wonder if it makes sense instead to support the single key case but for distributed scenario (shuffle hash join and like) if this multi-key stuff is really hard. I think the single-key distributed case would be more common.


Use meta / manifest description

Changed description getter to give preference to the manifest
description and use the metaDescription when the first is not
available

LGTM


[Feature] Enable mic support on Safari

On Safari for Mac, xCloud does not officially support the microphone, however it works if the user agent is changed to Edge for Windows. Can you please add a switch to enable microphone support on Safari?

I checked. It's won't be possible until I find a way to bypass their browser detection method without having to change the User-Agent.

Я проверил. Это будет невозможно, пока я не найду способ обойти их метод обнаружения браузера без изменения User-Agent.

Hello. Please let's see. Is it possible to add a change of localization?

Thank you so much!

@ILikePlayingGames now available in the Dev version: https://github.com/redphx/better-xcloud/raw/main/better-xcloud.user.js
Try to change "User-Agent profile" to "Edge on Windows".

Thanks! It works

xCloud just rolled out a fix. You should now be able to mute/unmute your mic from the in-stream overlay menu ("..." at the top left while streaming) on MacOS+Safari without having to do User Agent spoofing.

@Diego-Perez-Botero wow, a dev from xCloud team. Thank you so much for the fix!

@Diego-Perez-Botero Thank you so much!

@Diego-Perez-Botero Sorry for the 2nd ping. Can you please update the documentation at https://support.xbox.com/en-US/help/games-apps/cloud-gaming/troubleshoot-cloud-gaming-apple to indicate that the microphone is now supported on iOS?

I appreciate the ping! I actually reached out to the people in charge of documentation earlier today and pointed them to that article and some other support pages that need updates. It should get fixed soon 😉

Thank you!


Hover on "Min side" in menu shows small line on each side of the button

Looks like there is a global border bottom property for a elements that triggers it.

This seems to be fixed.


Improve CLI

#3 introduced a CLI. This should be extended by useful functionality, such as

Load program from file
Get only final state
Prettyprint in HTML (#13)

Closing as too fuzzy.

Load program from file: hard without a module system - where would we get the Prelude from?
Get only final state: tiny change in the Haskell source
Prettyprint in HTML: Should be part of a browser frontend, way out of scope here


No matching version found for<EMAIL_ADDRESS>

I'm trying to install the latest version but i get this error in terminal No matching version found for<EMAIL_ADDRESS>this is probably from NPM because you haven't published yet this version on NPM, can you publish it.

https://github.com/APSL/react-native-keyboard-aware-scroll-view/issues/443#issuecomment-659357780


Are the Structure sites pre-sorted when they're downloaded from Materials Project?

May want to verify this and add as a unit test

May want to verify this and add as a unit test

put perhaps I would not rely on that and simply always call get_sorted_structure first?

@kjappelbaum that's a good point! I'll try to look for a good place to put this


[Observation]: Release yml is incorrect in github actions, looks like copied from Jetpack samples

Is there an existing issue for this?

[X] I have searched the existing issues

Is there a StackOverflow question about this issue?

[X] I have searched StackOverflow

What happened?
This is not a bug as of now but just some observation (review comment) on file in master branch
.github/workflows/Release.yml
Relevant logcat output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Thanks for noticing! This should be fixed with #130


fix: radiogroup issue #1632

Added orientation horizontal and vertical so a user can change the orientation of the radio buttons.

@RoastedBrotato Can you add a description to the PR please? Not sure what this does. Thank you.

@RoastedBrotato Can you add a description to the PR please? Not sure what this does. Thank you.

I have added the description like you requested. The main changes are in the radiobutton.tsx file, the rest of the changes were because there were conflicts in the public/registry file.


feat: pfe-progress-steps [new component] (#1436)

This PR is meant to serve as a space for reviewing the new pfe-progress-steps item.  Although we are setting it's base as master all changes will actually be merged into the issue-1405-product-trials-epic.
Related issues

(#1436) pfe-progress-steps

Preview

Link(s) to demo page(s) where this element can be viewed:

Link

Testing instructions
Go to the demo page

[ ] Dynamically adding stepper items

Open the console and paste in the following code

let item = document.createElement('pfe-progress-steps-item');
item.innerHTML = `<div slot="title">Bonus</div><a slot="link" href="#">View last step</a>`;
document.querySelector('pfe-progress-steps').appendChild(item);

Verify that the first pfe-progress-steps element has 4 steps.

[ ] Test CSS Variables

Open the console and paste in the follow code:

let styles = document.createElement("style");
styles.innerHTML = `
:root {
    --pfe-progress-steps-item__circle--color--active: #EE0000;
    --pfe-progress-steps-item__title--Color--active: #151515;
    --pfe-progress-steps__progress-bar--color--active: #6A6E73;
}
document.head.appendChild(styles);
`;

Verify that the color of the circle, title color, and progress bar fill color have changed.

[ ] Test vertical state

Open the console and paste in the follow code:

  document.querySelector('pfe-progress-steps').setAttribute("vertical", "");

Verify that the first progress steps are now vertical.

Browser requirements
Your component should work in all of the following environments:

[ ] Latest 2 versions of Edge
[ ] Latest 2 versions of Firefox (one on Mac OS, one of Windows OS)
[ ] Firefox 78 (or latest version for Red Hat Enterprise Linux distribution)
[ ] Latest 2 versions of Chrome (one on Mac OS, one of Windows OS)
[ ] Latest 2 versions of Safari
[ ] Android mobile device (such as the Galaxy S9)
[ ] Apple mobile device (such as the iPhone X)
[ ] Apple tablet device (such as the iPhone Pro)

Ready-for-merge Checklist

[x] Expected files: all files in this pull request are related to one request or issue (no stragglers or scope-creep).
[x] Tests have been updated to cover these changes.
[ ] Browser testing passed.
[x] Changelog updated.
[x] Documentation (README.md, WHY.md, etc.) updated or added.
[ ] Link to the demo recording:
[ ] Approved by designer.

Merging
Please squash when merging and ensure your commit message uses conventional commit formatting.
Be sure to share your updates with the<EMAIL_ADDRESS>mailing list!

Updated preview with redhat-theme overrides applied:

Paste these in the demo page to see live: http://pastebin.test.redhat.com/965598


addnode should default to nDefaultPort

addnode WAHTERVER add

should default to:
https://github.com/ldoge/LDOGE/blob/6aa4f09d7b7109688f70a5809ca31e87e62337f1/src/chainparams.cpp#L56
I THINK THIS IS DONE IN src/net.cpp:CNode * ConnectNode(2):
https://github.com/ldoge/LDOGE/blob/6aa4f09d7b7109688f70a5809ca31e87e62337f1/src/net.cpp#L347-L402

addnode WAHTERVER add

should default to:
https://github.com/ldoge/LDOGE/blob/6aa4f09d7b7109688f70a5809ca31e87e62337f1/src/chainparams.cpp#L56
I THINK THIS IS DONE IN src/net.cpp:CNode * ConnectNode(2):
https://github.com/ldoge/LDOGE/blob/6aa4f09d7b7109688f70a5809ca31e87e62337f1/src/net.cpp#L347-L402

that command is already available on ldoge

that command is already available on ldoge

corect


Function "UploadIntoStream()" does ignore Encoding Options. So german special Characters cant get displayed in BC 15 SAAS

Describe the bug
If i use the AL-function UploadintoStream() then the Encoding of the Instream gets ignored. This means i cant change the Encoding, so if I import a file with german special characters like ß,ä,ö... cant get displayed in any Buisness Central table. I have this problem in BC15 SAAS-System.
To Reproduce
Use the function UploadIntoStream() to upload an ANSI-File wich has german letters to a stream.
If you load the data from the stream to a table, then german special characters are shown as a "?".
Code Example:
tempblob.CreateInStream(FileInstream, TextEncoding::Windows);
UploadIntoStream('Please chose a .txt import file', ImportFolder, 'txt files (.txt)|.txt', ImportFile, FileInstream);
CSVBuffer.DeleteAll();
CSVBuffer.LoadDataFromStream(FileInstream, ';');
IF CSVBuffer.FindSet() then
repeat
if (CSVBuffer."Field No." = 2) then
ORVProtelCustomerImport.Init();
case CSVBuffer."Field No." of
2:
begin
ORVProtelCustomerImport."Customer No." := FORMAT(DeleteBadChars(CSVBuffer.Value), 20);
IF Cust.Get(ORVProtelCustomerImport."Customer No.") then
ORVProtelCustomerImport."Customer exists" := true
else
ORVProtelCustomerImport."Customer exists" := false;
end;
4:
ORVProtelCustomerImport.Name := Format(DeleteBadChars(CSVBuffer.Value), 100);
5:
ORVProtelCustomerImport."Name 2" := Format(DeleteBadChars(CSVBuffer.Value), 50);
...
After filling the Values, ORVProtelCustomerImport gets inserted.
Expected behavior
Special chars should be shown as the right char in Table ORVProtelCustomerImport  and not as a "?"
Screenshots

Data:
Protel Debitoren.txt
5. Versions:

AL Language:
4.0.191880

Business Central:
Version: Platform 15.0.37395.0 + Application 15.0.36560.0

Let's get the issue to a team who will fix and backport it, as this repository is only for issues related to the AL compiler in latest developer preview environment for Dynamics 365 Business Central. We suggest that you open a support case or file a bug in Collaborate, to ensure that all Business Central users benefit from your catch as soon as possible.
To open a support case, you can:

Open a support request to CSS through the PartnerSource portal
Contact your Service Account Manager (SAM) in your local subsidiary to understand what is included in your contract as of support incident and PAH (Partner Advisory Hours). Your SAM might also direct you "step by step" how to open a support request or how to get credentials, if this is the first time for you or your company

If you file the bug in Collaborate, remember to include steps to reproduce the issue, and the Business Central build number and country version you're using.


[0.10.1] 404 error after logging in

Describe the bug
We are seeing the attached screen after logging in with SSO.  The path being requested is /namespaces/undefined/workflows?time-range=24+hours.  Also, the namespaces dropdown is empty.
Screenshots

Desktop (please complete the following information):

OS: MacOS
Browser Firefox

Thanks @jmcnevin for the report, this will be fixed in v0.10.2.

This appears to still be happening in 0.10.2.

Can you give this another shot @jmcnevin on 0.10.3? If it's still an issue I'll dig into it. Thanks!

Yeah, still having problems in 0.10.3.  Now we're actually seeing a rapid redirect loop between the login page and the workflows list page.

Thanks, we identified the issue with the redirect and have a fix in a new release that will come out today or tomorrow morning.

Tried again with 0.11.0 this morning.  I still seem to be in a login loop that never gets me to the workflows list page.


Add Tokenomics

Summary by CodeRabbit

Documentation

Updated the TOKENOMICS.md file to include comprehensive information on the $ELIMU token economics, including details on past contributors, max token supply, annual minting limit, and monthly token allocation.
Added Mermaid charts to visually represent the max token supply per year and the monthly token allocation.

close #1


How to use payfort checkout template in website plugin

I am using payfort(fort) plugin in my website. i have one active template in my payfort account.
Can you please guide me how to use that template it in my website.
Please see the attached screenshots.

Hi Asif
I can see there is an open ticket with integration team regarding this point .
We will provide you all the required help on that ticket .
Thank you
Ali

Thanks a lot Ali.

On Dec 21, 2017, at 1:34 PM, PayFortIntegration<EMAIL_ADDRESS>wrote:
Hi Asif
I can see there is an open ticket with integration team regarding this point .
We will provide you all the required help on that ticket .
Thank you
Ali
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/payfort/woocommerce-payfort/issues/9#issuecomment-353303553, or mute the thread https://github.com/notifications/unsubscribe-auth/ASwT7mBni0GsziHWahfc7b1ol3a1_AYYks5tCiYrgaJpZM4RJh73.

I need Help about above topic...

Hi Hala
Thanks for your comment , we already spoke with your developer about this issue , its related to your CMS and the conflict with another plugin you use .
so we applied this solution
https://wpml.org/forums/topic/how-to-get-wpml-to-use-mo-files/
and it worked as per our checks we did after this fix . You need to find out with your developer why the issue happened again as it not related to our plugin .
in this page https://www.wonderbusdubai.net/wp-admin/admin.php?page=sitepress-multilingual-cms%2Fmenutheme-localization.php
The change
Localization options -> How to translate strings in themes and plugins?
from  Translate themes and plugins using WPML's String Translation only (don't load .mo files)
to Translate themes and plugins using WPML's String Translation and always load .mo files as backup
Thanks


Update babylon.scene.ts

Fix for FF bug;
http://www.html5gamedevs.com/topic/32912-mousedown-action-sticks-on-canvas-after-mouseout/

Hi,
Is it only for the *up event? Are the rest of the events working fine?
I assume that the event is not detected in Firefox. Did you make sure it's not CSS related?

Hi @RaananW
Other events seem fine,
so yes, it appears the pointerup event isn't detected after the pointer leaves the canvas in FF, even off-page, url bar, etc, so i don't believe it's CSS related.


Document STREAMX and its corresponding fbsql \file meta-command

This commit also changes STREAM to INLINE since that's what we're moving toward.

@travisturner Looks good, but I think we need to update the BULK INSERT docs (https://docs.featurebase.com/docs/sql-guide/statements/statement-insert-bulk/) as well?

I'm confused @gthrone25. Doesn't this PR update those as well? Did I miss something?

1 How does STREAMX work in conjecture with BATCHSIZE?

The BATCHSIZE specified in the SQL is honored on the server. As the stream of records is received by the server, it batches them according to that value. There's no batching on the client.

Can you use \file in a .sql file like before as a command option? i.e. FROM \file 'insert_test.csv' WITH format 'CSV' input 'STREAMX'.

No, I removed that because it was really hacky and didn't scale.

Thanks @gthrone25
Am I supposed to merge this? Or do you have a process for that?

Anyone can. The general process is located here as an FYI: https://github.com/FeatureBaseDB/featurebase-docs/tree/main/help-on-help/publishing-workflow


[PDI-19396] - Error in Null Handling: Filter Rows, Anything using di.core.Condition

@smmribeiro
@andreramos89
@renato-s

:white_check_mark: Build finished in 12m 26s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:exclamation: No tests found!
:information_source:  This is an automatic message

:white_check_mark: Build finished in 11m 45s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:exclamation: No tests found!
:information_source:  This is an automatic message


added clearly defined prereqs before getting started

Fixes #52
@jaakla and @hboiten , please review and let me know if more details are needed.

@yasharora73


[lc_ctrl] Add life cycle state diversification output

This addresses part of #4443.
We can further consolidate the state groups if necessary...
Signed-off-by: Michael Schaffner<EMAIL_ADDRESS>

i take by what i said. I think it's actually to treat these as semi-static.
They're not going to be used any time soon upon life cycle init. Since the transaction is initiated by software way later when the signal is already stable, it should be okay to not include any special cdc here.
Although we should make a note of it in the keymgr / lc specs.

Thanks for the reviews! We can amend later if we decide to consolidate the state groups further...


Make it compatible with typescript-eslint

Make eslint-config-google rules compatible with the TSLint replacement: typescript-eslint.
This will be valuable for TypeScript projects that follow the Google JavaScript Style Guide, such as Angular.

+1

If you extend both the recommend config and the eslint recommended config, it seems to work for me:
  "extends": [
    "google",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],

I think doing this is a great interim strategy:
  "extends": [
    "google",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],

But, it's quite un-satisfying, if you are a real TypeScript Junkie/fanboy/lover person. Maybe folks would be better off trying to use Angular core's config somehow, or using another eslint config altogether.


Help me to set up P2PTV

I am setting to implement P2PTV on my server but i encounter some problems with chrome and mozilla firefox. Both doesn't show the video stream.
On server side

i launch P2PTV

/usr/local/node_modules/p2ptv# DEBUG=p2ptv,gateway,peer,push-pull-window,encoder,webm-byte-stream node example/example.js
  p2ptv options: signaling=8188, upstream=9001, bitrate=2500, durations=false +0ms
  gateway options: id=oH7TKMoMlWJn, port=9001, bitrate=2500, durations=false +4ms
  encoder settings: maxChunkSize=16384, minInitSegHeader=9 +2ms
  webm-byte-stream options: bufferSize=10485760, durations=false +0ms
  push-pull-window Pushes 156.25 messages per second +1ms
  gateway Listening for FFmpeg data on 9001... +1ms
  p2ptv Listening for clients on 8188... +11ms

i launch ffmpeg

ffmpeg -i montageconf2.mp4 -c:a libvorbis -c:v libvpx -g 125 -crf 20 -lag-in-frames 15 -profile:v 2 -qmax 50 -qmin 1 -cpu-used 0 -slices 4 -b:v 2M -cluster_size_limit 999999999 -cluster_time_limit 999999999 -deadline realtime -f webm tcp://localhost:9001
ffmpeg version N-74696-g1e50f95 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 59.100 / 56. 59.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 39.100 /  5. 39.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'montageconf2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    creation_time   : 2015-08-21 23:40:21
  Duration: 01:05:08.45, start: 0.000000, bitrate: 857 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 596 kb/s, 23.98 fps, 23.98 tbr, 23976 tbn, 47952 tbc (default)
    Metadata:
      creation_time   : 2015-08-21 23:40:21
      handler_name    : Module de gestion vid
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 255 kb/s (default)
    Metadata:
      creation_time   : 2015-08-21 23:40:21
      handler_name    : Module de gestion sonore
[libvpx @ 0x2c10500] v1.4.0-1197-g6201a25
Output #0, webm, to 'tcp://localhost:9001':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    encoder         : Lavf56.40.101
    Stream #0:0(eng): Video: vp8 (libvpx), yuv420p, 1280x720, q=1-50, 2000 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default)
    Metadata:
      creation_time   : 2015-08-21 23:40:21
      handler_name    : Module de gestion vid
      encoder         : Lavc56.59.100 libvpx
    Stream #0:1(eng): Audio: vorbis (libvorbis), 48000 Hz, stereo, fltp (default)
    Metadata:
      creation_time   : 2015-08-21 23:40:21
      handler_name    : Module de gestion sonore
      encoder         : Lavc56.59.100 libvorbis
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> vp8 (libvpx))
  Stream #0:1 -> #0:1 (aac (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
frame=   32 fps=0.0 q=0.0 size=       4kB time=00:00:01.33 bitrate=  26.7kbits/sframe=   64 fps= 63 q=0.0 size=       4kB time=00:00:02.66 bitrate=  13.4kbits/sframe=   90 fps= 59 q=0.0 size=       4kB time=00:00:03.75 bitrate=   9.5kbits/sframe=  119 fps= 59 q=0.0 size=       4kB time=00:00:04.96 bitrate=   7.2kbits/sframe=  143 fps= 56 q=0.0 size=    1153kB time=00:00:05.96 bitrate=1583.3kbits/sframe=  172 fps= 57 q=0.0 size=    1153kB time=00:00:07.17 bitrate=1316.3kbits/sframe=  175 fps= 56 q=0.0 Lsize=    1659kB time=00:00:07.29 bitrate=1862.5kbits/s

The ffmpeg encoding is catched by P2PTV

  gateway Listening for FFmpeg data on 9001... +1ms
  p2ptv Listening for clients on 8188... +11ms
  gateway FFmpeg connected +10m
  webm-byte-stream write: 4454 bytes +101ms
  webm-byte-stream 	single write +0ms
  webm-byte-stream _read: start=0, end=55 +2ms
  webm-byte-stream 	bytes=55, readHead=0, maxRead=10485760 +7ms
  webm-byte-stream 	single read +0ms
  webm-byte-stream _read: start=278, end=359 +1ms
  webm-byte-stream 	bytes=81, readHead=278, maxRead=10485482 +0ms
  webm-byte-stream 	single read +0ms
  webm-byte-stream _read: start=359, end=4454 +0ms
  webm-byte-stream 	bytes=4095, readHead=359, maxRead=10485401 +0ms
  webm-byte-stream 	single read +0ms
  push-pull-window Pushing initialization segment: 4231 bytes +1ms
  encoder Creating empty initialzation segment message: timecode=1441010257327, payloadSize=4231 +0ms
  webm-byte-stream write: 16384 bytes +2s
  webm-byte-stream 	single write +0ms
  webm-byte-stream write: 16384 bytes +1ms

Client side (chrome)

The p2ptv-player seems to be correctly initialised

<video id="p2ptv-player" controls="" src="blob:http%3A//stream-lat.org%3A8181/1eb4c22b-e2c9-4fae-8eb0-a507efcc5429" width="854" height="480"></video>

P2PTV detect the client

  p2ptv Client has valid browser: chrome +19ms
  peer New peer: id=wXLfUiz8nJD1, browser=chrome, address=<IP_ADDRESS>:38453 +0ms
  p2ptv Client initialized: <IP_ADDRESS>:38453 >>> wXLfUiz8nJD1 +1ms
  p2ptv Connecting wXLfUiz8nJD1 to gateway... +38ms
  p2ptv Received answer from wXLfUiz8nJD1: {"type":"answer","id":"oH7TKMoMlWJn","sdp":"v=0\r\no=-<PHONE_NUMBER>325994041 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\nb=AS:30\r\na=ice-ufrag:pZK5IzJuIxdahHqH\r\na=ice-pwd:eQo6JtV4BMjSH5VaQl4jn0el\r\na=fingerprint:sha-256 00:18:24:99:3E:13:37:AC:37:75:18:C3:2F:82:D4:44:79:F0:A4:69:C2:55:B9:3D:05:24:B6:96:14:BA:1A:DC\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"} +25ms
  gateway Successfully set remote description for wXLfUiz8nJD1 +4ms
  p2ptv Received ICE candidate from wXLfUiz8nJD1: {"type":"ice","id":"oH7TKMoMlWJn","sdp":{"candidate":"candidate:2199032595 1 udp<PHONE_NUMBER> <IP_ADDRESS> 50339 typ host generation 0","sdpMid":"data","sdpMLineIndex":0}} +0ms
  gateway Successfully added ICE candidate for wXLfUiz8nJD1 +1ms
  p2ptv Received ICE candidate from wXLfUiz8nJD1: {"type":"ice","id":"oH7TKMoMlWJn","sdp":{"candidate":"candidate:1963125447 1 udp<PHONE_NUMBER> <IP_ADDRESS> 50339 typ srflx raddr <IP_ADDRESS> rport 50339 generation 0","sdpMid":"data","sdpMLineIndex":0}} +37ms
  gateway Successfully added ICE candidate for wXLfUiz8nJD1 +1ms
  p2ptv Received ICE candidate from wXLfUiz8nJD1: {"type":"ice","id":"oH7TKMoMlWJn","sdp":{"candidate":"candidate:3448860643 1 tcp<PHONE_NUMBER> <IP_ADDRESS> 0 typ host tcptype active generation 0","sdpMid":"data","sdpMLineIndex":0}} +56ms
  gateway Successfully added ICE candidate for wXLfUiz8nJD1 +0ms

On pressing "play" nothing happen.
Client Side Firefox

The p2ptv-player seems to be correctly initialised

<video width="854" height="480" controls="" id="p2ptv-player" src="mediasource:http://stream-lat.org:8181/8cf29a9c-4fd2-4d6d-96af-1d21516f9ca5"></video>

P2PTV detect the client

  peer New peer: id=vczkpyk25m5U, browser=firefox, address=<IP_ADDRESS>:38586 +0ms
  p2ptv Client initialized: <IP_ADDRESS>:38586 >>> vczkpyk25m5U +1ms
  p2ptv Connecting vczkpyk25m5U to gateway... +18ms
  p2ptv Received answer from vczkpyk25m5U: {"type":"answer","id":"oH7TKMoMlWJn","sdp":"v=0\r\no=mozilla...THIS_IS_SDPARTA-38.2.0<PHONE_NUMBER>549003996 0 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 3C:CC:62:32:E1:DB:44:42:D9:F1:E7:43:DA:E0:69:10:86:EB:7E:E2:F9:0F:94:53:39:E7:4B:F2:42:86:BA:D6\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=sendrecv\r\na=ice-pwd:7a7a1448be92c2af98d19e7dc0b5752d\r\na=ice-ufrag:568edd72\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 256\r\na=setup:active\r\n"} +120ms
  gateway Successfully set remote description for vczkpyk25m5U +5ms
  p2ptv Received ICE candidate from vczkpyk25m5U: {"type":"ice","id":"oH7TKMoMlWJn","sdp":{"candidate":"candidate:0 1 UDP<PHONE_NUMBER> <IP_ADDRESS> 42755 typ host","sdpMid":"","sdpMLineIndex":0}} +103ms
  gateway Successfully added ICE candidate for vczkpyk25m5U +1ms
  p2ptv Received ICE candidate from vczkpyk25m5U: {"type":"ice","id":"oH7TKMoMlWJn","sdp":{"candidate":"candidate:1 1 UDP<PHONE_NUMBER> <IP_ADDRESS> 42755 typ srflx raddr <IP_ADDRESS> rport 42755","sdpMid":"","sdpMLineIndex":0}} +15ms
  gateway Successfully added ICE candidate for vczkpyk25m5U +1ms

Firefox console show

0.391: User agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.2.0
adapter.js (ligne 18)
0.398: This appears to be Firefox
adapter.js (ligne 18)
0.400: has prefix: moz
adapter.js (ligne 18)
0.448: p2ptv v0.0.0
adapter.js (ligne 18)
sourceopen
video.js (ligne 40)
0.535: connected to server
adapter.js (ligne 18)
0.584: received message from vczkpyk25m5U: {"type":"handle","id":"vczkpyk25m5U"}
adapter.js (ligne 18)
0.591: received id: vczkpyk25m5U
adapter.js (ligne 18)
0.594: received message from oH7TKMoMlWJn: {"id":"oH7TKMoMlWJn","relation":"parent","type":"offer","sdp":"v=0\r\no=-<PHONE_NUMBER>357892123 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:E/QdVlf0FJZPjDUM\r\na=ice-pwd:qWc7Pp5NmuOXckl1oxny3VFp\r\na=ice-options:google-ice\r\na=fingerprint:sha-1 98:8E:88:4F:B4:2A:77:71:1F:3B:6F:22:75:02:6A:5E:EE:CD:B2:3D\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"}
adapter.js (ligne 18)
0.597: received offer sdp from oH7TKMoMlWJn: {"id":"oH7TKMoMlWJn","relation":"parent","type":"offer","sdp":"v=0\r\no=-<PHONE_NUMBER>357892123 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:E/QdVlf0FJZPjDUM\r\na=ice-pwd:qWc7Pp5NmuOXckl1oxny3VFp\r\na=ice-options:google-ice\r\na=fingerprint:sha-1 98:8E:88:4F:B4:2A:77:71:1F:3B:6F:22:75:02:6A:5E:EE:CD:B2:3D\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"}
adapter.js (ligne 18)
0.600: answer peer oH7TKMoMlWJn: parent
adapter.js (ligne 18)
0.665: listening for ICE candidates
adapter.js (ligne 18)
0.669: set remote offer description for: oH7TKMoMlWJn
adapter.js (ligne 18)
0.673: created answer for: oH7TKMoMlWJn
adapter.js (ligne 18)
0.676: set local description answer for: oH7TKMoMlWJn
adapter.js (ligne 18)
0.681: received message from oH7TKMoMlWJn: {"id":"oH7TKMoMlWJn","type":"ice","sdp":{"candidate":"candidate:2635500659 1 udp<PHONE_NUMBER> <IP_ADDRESS> 44298 typ host generation 0","sdpMid":"data","sdpMLineIndex":0}}
adapter.js (ligne 18)
0.684: received ice candidate from: oH7TKMoMlWJn
adapter.js (ligne 18)
0.722: received message from oH7TKMoMlWJn: {"id":"oH7TKMoMlWJn","type":"ice","sdp":{"candidate":"candidate:3549786243 1 tcp<PHONE_NUMBER> <IP_ADDRESS> 42220 typ host tcptype passive generation 0","sdpMid":"data","sdpMLineIndex":0}}
adapter.js (ligne 18)
0.727: received ice candidate from: oH7TKMoMlWJn
adapter.js (ligne 18)
0.776: sending ICE candidate to: oH7TKMoMlWJn
adapter.js (ligne 18)
0.796: sending ICE candidate to: oH7TKMoMlWJn
adapter.js (ligne 18)
ICE failed, see about:webrtc for more details

And the webRTC logs

Local SDP

v=0
o=mozilla...THIS_IS_SDPARTA-38.2.0<PHONE_NUMBER>549003996 0 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=sendrecv
a=fingerprint:sha-256 3C:CC:62:32:E1:DB:44:42:D9:F1:E7:43:DA:E0:69:10:86:EB:7E:E2:F9:0F:94:53:39:E7:4B:F2:42:86:BA:D6
a=ice-options:trickle
a=msid-semantic:WMS *
m=application 42755 DTLS/SCTP 5000
c=IN IP4 <IP_ADDRESS>
a=candidate:0 1 UDP<PHONE_NUMBER> <IP_ADDRESS> 42755 typ host
a=candidate:1 1 UDP<PHONE_NUMBER> <IP_ADDRESS> 42755 typ srflx raddr <IP_ADDRESS> rport 42755
a=sendrecv
a=end-of-candidates
a=ice-pwd:7a7a1448be92c2af98d19e7dc0b5752d
a=ice-ufrag:568edd72
a=mid:data
a=sctpmap:5000 webrtc-datachannel 256
a=setup:active

Remote SDP

v=0
o=-<PHONE_NUMBER>357892123 2 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=sendrecv
a=msid-semantic:WMS
m=application 9 DTLS/SCTP 5000
c=IN IP4 <IP_ADDRESS>
a=sendrecv
a=fingerprint:sha-1 98:8E:88:4F:B4:2A:77:71:1F:3B:6F:22:75:02:6A:5E:EE:CD:B2:3D
a=ice-options:google-ice
a=ice-pwd:qWc7Pp5NmuOXckl1oxny3VFp
a=ice-ufrag:E/QdVlf0FJZPjDUM
a=mid:data
a=sctpmap:5000 webrtc-datachannel 1024
a=setup:actpass

host(IP4:<IP_ADDRESS>:33315/UDP)
ICE(PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/)): peer (PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/):default) pairing local trickle ICE candidate srflx(IP4:<IP_ADDRESS>:33315/UDP|stun.l.google.com:19302)
ICE(PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/)): peer (PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/):default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/):default)/STREAM(1440966434267733 (id=1010 url=http://stream-lat.org:8181/) level=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1440966434267733 (id=1010 url=http://stream-lat.org:8181/):default): all checks completed success=0 fail=1
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): No STUN servers specified
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): No TURN servers specified
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) no streams with non-empty check lists
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) no streams with pre-answer requests
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) no checks to start
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) pairing local trickle ICE candidate host(IP4:<IP_ADDRESS>:46604/UDP)
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) pairing local trickle ICE candidate srflx(IP4:<IP_ADDRESS>:46604/UDP|stun.l.google.com:19302)
ICE(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/)): peer (PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default)/STREAM(1440967728164198 (id=1015 url=http://stream-lat.org:8181/) level=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1440967728164198 (id=1015 url=http://stream-lat.org:8181/):default): all checks completed success=0 fail=1

Can you help me to setting up P2PTV correctly ?

I suspect that your data channel isn't opening, but I can't tell from what you posted. Do you mind trying again with less verbose logging and posting the output along with the output from your Chrome console?
DEBUG=p2ptv,gateway,push-pull-window node example/example.js

You should be seeing some ASCII graphics when your data channel is opened.
  gateway Successfully added ICE candidate for GaPHWdUDkHig +3ms
  gateway p2ptvchannel opened with GaPHWdUDkHig +86ms
  gateway Received message from GaPHWdUDkHig:
       ___        _
      |__ \      | |
  _ __   ) |_ __ | |___   __
 |  _ \ / /|  _ \| __\ \ / /
 | |_) / /_| |_) | |_ \ V /
 | .__/____| .__/ \__| \_/
 | |       | |
 |_|       |_|           +8ms
  gateway FFmpeg connected +11s
  push-pull-window Pushing initialization segment: 4231 bytes +56ms
  push-pull-window Pushing media segment: timecode=1441044363574, duration=unknown, chunks=71 +5s
  push-pull-window Pushing media segment: timecode=1441044368742, duration=unknown, chunks=85 +5s
  push-pull-window Pushing media segment: timecode=1441044373720, duration=unknown, chunks=82 +5s

Let me know what your output is. It should autoplay after receiving the first media segmented. I recommend getting the example to work before transcoding your own file. Be warned that I could only get RTMP streams to transcode in realtime and transcoding from a file always had 1-2 second gaps between media segments.

Hi,
I can't see The ASCII :-(

serve side

p2ptv

/usr/local/node_modules/p2ptv# DEBUG=p2ptv,gateway,push-pull-window node example/example.js
  p2ptv options: signaling=8188, upstream=9001, bitrate=2500, durations=false +0ms
  gateway options: id=kMuX4wz3TpDj, port=9001, bitrate=2500, durations=false +2ms
  push-pull-window Pushes 156.25 messages per second +3ms
  gateway Listening for FFmpeg data on 9001... +1ms
  p2ptv Listening for clients on 8188... +1ms
  gateway FFmpeg connected +5s
  push-pull-window Pushing initialization segment: 4241 bytes +30ms
  push-pull-window Pushing media segment: timecode=1441051606086, duration=unknown, chunks=85 +3s
  push-pull-window Pushing media segment: timecode=1441051608497, duration=unknown, chunks=65 +2s
  push-pull-window Pushing media segment: timecode=1441051611150, duration=unknown, chunks=68 +3s
  push-pull-window Pushing media segment: timecode=1441051614326, duration=unknown, chunks=77 +3s

serve side

ffmpeg

/usr/local/node_modules/p2ptv# ffmpeg -i media/fractal.mp4 -c:a libvorbis -c:v libvpx -g 125 -crf 20 -lag-in-frames 15 -profile:v 2 -qmax 50 -qmin 1 -cpu-used 0 -slices 4 -b:v 2M -cluster_size_limit 999999999 -cluster_time_limit 999999999 -deadline realtime -f webm tcp://localhost:9001
ffmpeg version N-74696-g1e50f95 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 59.100 / 56. 59.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 39.100 /  5. 39.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'media/fractal.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    creation_time   : 2014-05-22 22:37:19
  Duration: 00:01:51.61, start: 0.000000, bitrate: 2645 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2480 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2014-05-22 22:37:19
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
    Metadata:
      creation_time   : 2014-05-22 22:37:19
      handler_name    : L-SMASH Audio Handler
[libvpx @ 0x30f84c0] v1.4.0-1197-g6201a25
Output #0, webm, to 'tcp://localhost:9001':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    encoder         : Lavf56.40.101
    Stream #0:0(und): Video: vp8 (libvpx), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=1-50, 2000 kb/s, 29.97 fps, 1k tbn, 29.97 tbc (default)
    Metadata:
      creation_time   : 2014-05-22 22:37:19
      handler_name    : L-SMASH Video Handler
      encoder         : Lavc56.59.100 libvpx
    Stream #0:1(und): Audio: vorbis (libvorbis), 48000 Hz, stereo, fltp (default)
    Metadata:
      creation_time   : 2014-05-22 22:37:19
      handler_name    : L-SMASH Audio Handler
      encoder         : Lavc56.59.100 libvorbis
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> vp8 (libvpx))
  Stream #0:1 -> #0:1 (aac (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
frame=   38 fps=0.0 q=0.0 size=       4kB time=00:00:01.26 bitrate=  28.2kbits/sframe=   61 fps= 60 q=0.0 size=       4kB time=00:00:02.03 bitrate=  17.5kbits/sframe=   75 fps= 50 q=0.0 size=       4kB time=00:00:02.50 bitrate=  14.3kbits/sframe=   93 fps= 46 q=0.0 size=       4kB time=00:00:03.10 bitrate=  11.5kbits/sframe=  122 fps= 48 q=0.0 size=       4kB time=00:00:04.07 bitrate=   8.8kbits/sframe=  150 fps= 49 q=0.0 size=    1350kB time=00:00:05.00 bitrate=2208.8kbits/sframe=  177 fps= 50 q=0.0 size=    1350kB time=00:00:05.90 bitrate=1871.9kbits/sframe=  204 fps= 50 q=0.0 size=    1350kB time=00:00:06.80 bitrate=1624.1kbits/sframe=  229 fps= 50 q=0.0 size=    1350kB time=00:00:07.64 bitrate=1446.8kbits/sframe=  254 fps= 50 q=0.0 size=    1350kB time=00:00:08.47 bitrate=1304.5kbits/sframe=  277 fps= 49 q=0.0 size=    2388kB time=00:00:09.24 bitrate=2116.9kbits/sframe=  300 fps= 49 q=0.0 size=    2388kB time=00:00:10.01 bitrate=1954.7kbits/sframe=  324 fps= 49 q=0.0 size=    2388kB time=00:00:10.81 bitrate=1809.9kbits/sframe=  347 fps= 49 q=0.0 size=    2388kB time=00:00:11.57 bitrate=1690.0kbits/sframe=  369 fps= 48 q=0.0 size=    2388kB time=00:00:12.31 bitrate=1589.2kbits/sframe=  391 fps= 48 q=0.0 size=    3471kB time=00:00:13.04
[...]
bitrate=2414.8kbits/sframe= 3298 fps= 41 q=0.0 size=   31933kB time=00:01:50.04 bitrate=2377.2kbits/sframe= 3345 fps= 41 q=0.0 Lsize=   32074kB time=00:01:51.61 bitrate=2354.1kbits/s
video:30752kB audio:1244kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.242972%

Outpout from the chrome console

0.170: User agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36
adapter.js:18 0.181: This appears to be Chrome
adapter.js:18 0.181: has prefix: webkit
adapter.js:18 0.190: p2ptv v0.0.0
video.js:40 sourceopen
adapter.js:18 0.255: connected to server
adapter.js:18 0.311: received message from qFElsbPHNxh8: {"type":"handle","id":"qFElsbPHNxh8"}
adapter.js:18 0.312: received id: qFElsbPHNxh8
adapter.js:18 0.314: received message from kMuX4wz3TpDj: {"id":"kMuX4wz3TpDj","relation":"parent","type":"offer","sdp":"v=0\r\no=-<PHONE_NUMBER>310620737 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:aw8vX+4j7xv98J6U\r\na=ice-pwd:RWvKJlfZk88KnXXz6F8X0bTs\r\na=ice-options:google-ice\r\na=fingerprint:sha-1 25:82:64:7B:77:92:85:5E:31:66:8C:17:0C:25:9B:C0:03:9F:5B:A6\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"}
adapter.js:18 0.315: received offer sdp from kMuX4wz3TpDj: {"id":"kMuX4wz3TpDj","relation":"parent","type":"offer","sdp":"v=0\r\no=-<PHONE_NUMBER>310620737 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:aw8vX+4j7xv98J6U\r\na=ice-pwd:RWvKJlfZk88KnXXz6F8X0bTs\r\na=ice-options:google-ice\r\na=fingerprint:sha-1 25:82:64:7B:77:92:85:5E:31:66:8C:17:0C:25:9B:C0:03:9F:5B:A6\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"}
adapter.js:18 0.315: answer peer kMuX4wz3TpDj: parent
adapter.js:18 0.316: listening for ICE candidates
adapter.js:18 0.317: received message from kMuX4wz3TpDj: {"id":"kMuX4wz3TpDj","type":"ice","sdp":{"candidate":"candidate:2635500659 1 udp<PHONE_NUMBER> <IP_ADDRESS> 51922 typ host generation 0","sdpMid":"data","sdpMLineIndex":0}}
adapter.js:18 0.317: received ice candidate from: kMuX4wz3TpDj
adapter.js:18 0.318: set remote offer description for: kMuX4wz3TpDj
adapter.js:18 0.319: created answer for: kMuX4wz3TpDj
adapter.js:18 0.320: set local description answer for: kMuX4wz3TpDj
adapter.js:18 0.321: sending ICE candidate to: kMuX4wz3TpDj
adapter.js:18 0.417: received message from kMuX4wz3TpDj: {"id":"kMuX4wz3TpDj","type":"ice","sdp":{"candidate":"candidate:3549786243 1 tcp<PHONE_NUMBER> <IP_ADDRESS> 54914 typ host tcptype passive generation 0","sdpMid":"data","sdpMLineIndex":0}}
adapter.js:18 0.418: received ice candidate from: kMuX4wz3TpDj
adapter.js:18 0.421: sending ICE candidate to: kMuX4wz3TpDj
adapter.js:18 0.422: sending ICE candidate to: kMuX4wz3TpDj

Thank your for your time.

Damn, could be any number of things. There ins

Let me try it from a VPS to see if there's something wrong. I've only really tested this locally inside a virtual machine.

If you need some informations about my server configuration do not hesitate to ask me. Also, misconfiguration could be on my side. I'm not an expert but the p2p streaming concept is very interesting and i'd love to initiate it for my website.
thanks for you time

That would be helpful. I probably won't get to testing this in a VPS until the weekend.

Don't worry, I haven't forgotten about you. There was a little hiccup because I didn't want to do the transcoding on the VPS. Should have this tested for you within 24hr. In the mean time, do you mind telling me your server setup if you're still having troubles?

Hi. No problem :-) No further tests since the last time on my server. What kinds of details should help you ? I used Jessie and nodejs v0.12.7

I encountered the same thing with with the VPS. Here I was hoping that you just messed up your stack configuration, haha. I'll spend some time on it.

Hi. In a way , I am reassured ;-)
Thanks for your time.

I suspect that this is a firewall issue that could be solved by setting up a TURN server, but relaying traffic kinda defeats the purpose of this project. So what's probably going to happen is the wtrc dependency will be removed and we'll initially push the livestream into the network using the existing websocket connection, then form peer connections between clients to handle the majority of the video delivery.

Ok. Can i do something to help you despite of the fact i'm not a dev ?

Not really. I'd recommend you help yourself by finding a project that's being actively maintained though. This is still pretty far away from being a usable service and the only developer has lost interest in the project almost 2 months ago.

Should be working now. I'll probably push a new version to npm tomorrow. Care to test it out?

Ok ! Welcome back ;-) willing to test whenever you want.

Haha, thanks. I'll give this project some more attention from now on.
I'm going to close this issue, but feel free to post in the TODO issue with any requests for features or bug fix requests. Or open another issue if you're still having problems. I'll edit the link into this post when I post the issue.

TOP ! Very big thanks. Have you pushed the new version to NPM ?

Not yet. I'll publish a new version in a few hours.

Decided to rebuild the client side API and remove "user should be able to join the livestream at any time" from the TODO list before pushing a new version to NPM.

Figured I'd push a minor version if you want to play around with it in it's current "working" condition. ;)


Integrate pagination to episodes page

I'd like to get pagination working, so that /episodes is easier to navigate when we put out more episodes. Maybe somerthing like 20 episodes per page.
This page and this page may come in useful.

An alternative approach could be to add a 'load more' button and only load the first few episodes, like on this website.


pr-branch-auto-delete - exclude gitflow branches

Description
Until now we’ve been suggesting to enable branch protection so that this feature doesn’t kick in. This advice is still very much valid, but I think we can at least skip auto-deletion when it detects certain branch names:

develop
production
prod
main (could still be set as secondary to develop or prod)
master
release/*

What other names should we exclude?
Example URLs
https://github.com/refined-github/sandbox/pull/12

@Blackman99 any name suggestions? The feature will stay as a default, so don’t suggest changing that.

From my personal experience, these names might be common:

v*
dev
development
pre
next
stage

production*
staging*
master*


miatoll-LineageOS-lineage-20.0-WAR-DEPT

Re Running the task is not allowed!!
Re-PR if you want to queue another tasks!


AppBuilder#add_asset_loader_from_instance does not add handler in extension_to_handler_index properly

For a minimal repro, change the contents of the setup fn in examples/asset/custom_asset_loading.rs  to the following:
let data1_handle: Handle<MyCustomData> = asset_server.load("assets/data/test_data.data1").unwrap();

The load call will return an MissingAssetHandler error even though the load_sync call in the example worked fine.
I did some research into this, apparently the asset_server's extension_to_handler_index does not get an entry for the data1 extension. This is because TLoader::from_resources(self.resources()) on line 167 of assets.rs will construct a default instance of your loader (with empty extensions) instead of using the supplied one.
I am unsure of the proper fix for this, since you need to add an instance to both the handler index and the loader index. Strangely, adding  .add_resource::<DataFileLoader>(DataFileLoader::from_extensions(vec!["data1"])) in my app builder does not help like I expected it to.
As a workaround you can return a static list of extensions in the AssetLoader fn extensions implementation for your custom asset loader so it will make a valid default implementation. An example can be found in  https://github.com/bevyengine/bevy/blob/master/crates/bevy_gltf/src/loader.rs . Then use .add_asset_loader::<YourAsset, YourCustomLoader>() instead of add_asset_loader_from_instance.

Asset loading seems to have evolved and fixed this. At least the code mentioned here doesn't exist anymore and the scenario works


Not using the align-* options of ocamlformat

Hi, as the continuous effort of maintaining ocamlformat and simplifying the code and its options, the align-* options (--align-cases, --align-constructors-decl, --align-variants-decl) often come up as options we would like to remove from ocamlformat.
Apart from the (ocamlformat) code simplification, and moving slowly but surely towards an uniform configuration that would suit more projects, we can also raise the argument that using such option may add some noise in the reformatting each time one aligned item is added or removed (since they are all reindented when the longest item changes) and that's not something we want to promote in ocamlformat.
Since owl is one of the very few projects using these options, what do you think of the possibility of having them removed from ocamlformat in the future?
cc @emillon @julow

Friendly ping about this, these are options we would like to deprecate then remove for the next release. We strongly feel that this kind of feature should live outside of ocamlformat (a postprocessing tool could be written to realign the lines of choice)

@gpetiot Thanks for the advice! Please feel free to make or amend the current PR, and we will merge it once v0.20.0 is released.


Discussion: make GeoDataFrames the main entry point for vector data

From https://discourse.julialang.org/t/screening-interest-in-a-unified-vector-raster-package-akin-to-r-terra/121613, it might make sense to make GeoDataFrames a single point of entry for vector datasets.
Would there be interest in creating a "backend system" for GeoDataFrames, so that we can use native Julia readers wherever possible, and fall back to ArchGDAL when needed?   This would probably help performance quite a bit as well.
The other proposal was that GeoDataFrames could re-export Extents.jl and GeoFormatTypes.jl, so that users don't need to know about those!

That's certainly possible, and I think that still works without wrapping either the geometry, or Dataframes, but is that still the right way ahead? I like spatial to be not special, but that makes it also harder.
With regards to exporting, what happens if we re-export here and someone does using Extents?

Agreed that spatial should not be special.  IMO we can sneak in quite a bit of stuff through metadata and GeoAcceleratedArrays.
On the using extents part of it - it's fine, there are no name clashes by definition since it's the same function.  (I mean literally @reexport using Extents).

First attempt at #92


Continuous integration

Go to Travis-CI and Sign in with Github: https://travis-ci.org/
On Travis CI in your repositories, activate libcaer
Accept this pull request
After every push, build will be run on Linux and macOS with gcc and clang
profit

also, the compiled docs are removed form /docs and compiled and uploaded to github pages automatically when a new tag (version) is pushed. this removes a lot of noise in the commit logs.

Simply because macOS does have more recent clang by default (basically it saved my copy-pasting the

      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.6
          packages:
            - clang-3.6
            - libusb-1.0-0-dev
            - doxygen
      env:
- MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"

part one more time).
2. Because usually for projects, docs are only released for versions. Otherwise is might happen that people read the docs which have '2.2.0' written in the header, but the docs are actually for 2.2.0+some commits. This can however be changed easily, by changing this line back to branch: master.
3. As explained here, first create an access token in your (or the organizations) Github settings. Then, paste the token in the Travis CI project settings (more options -> settings).