wrong result with very simple input

Basic Information
tesseract v<IP_ADDRESS>21214
leptonica-1.78.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX2
Found AVX
Found FMA
Found SSE4.1
Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5
Found libcurl/7.77.0-DEV Schannel zlib/1.2.11 zstd/1.4.5 libidn2/2.0.4 nghttp2/1.31.0
Operating System
Windows 10
Other Operating System
No response
uname -a
No response
Compiler
No response
Virtualization / Containers
No response
CPU
AMD Ryzen 9 3900
Current Behavior
C:\Program Files\Tesseract-OCR>tesseract "d:\temp\1b35f628-0719-4e44-8b65-6091dce488c9.png" stdout -l eng
$-110

Result is wrong, despite very clean input image. Why ?
C:\Program Files\Tesseract-OCR>tesseract "d:\temp\1b35f628-0719-4e44-8b65-6091dce488c9.png" stdout -l deu
S-110

Result is correct only by changing lanuage model to German
Expected Behavior
eng.traineddata that comes with the standard installation should work correct on such a simple input and produce S-110
The sample I provided is just one basic example. I can produce more examples where very simple input is processed wrong with LSTM engine, but correct with Legacy models.
Suggested Fix
The standard language file for eng.traineddata needs to be checked why it is producing wrong results
normal and best traineddata files for english fail on the provided sample as well. Additional language data files are taken from https://github.com/tesseract-ocr/tessdata_best and /tessdata
The LSTM Engine, although much faster, shows a regression in this sample because the same file works fine with english language and non_LSTM (legacy) code
Other Information

sample png that produces $-110 when -l eng is used

The model script/Latin also gives the correct result. That's not an issue of tesseract, but of the specific model.

Thank you for the prompt response. Based on your response, Is it safe to assume that model script/Latin can safely be used to replace eng.traineddata. Are all special characters like brackets, dash, dot, comma, question mark etc included ?

I hope so. See https://github.com/tesseract-ocr/langdata_lstm/blob/main/script/Latin/Latin.unicharset and compare it to https://github.com/tesseract-ocr/langdata_lstm/blob/main/eng/eng.unicharset.

But I would not expect that script/Latin gives always better results than eng.

I feared that, because fixing the reported issue by replacing the model will introduce unknown mistakes elsewhere. Not an ideal solution. An update to a new/better eng.traineddata would be better.

tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l script/Latin
sS-502

tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l eng
$-502

tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l deu
S-502

really inconsistent and unexplainable results with script/Latin too

tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l script/Latin
sS-502
tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l eng
$-502
tesseract https://user-images.githubusercontent.com/35332003/212068999-2e0890b1-b024-4e93-a0bf-b1a424d8af6c.png stdout -l deu
S-502

really inconsistent and unexplainable results with script/Latin too

In this case you could use voting in post-correction. Run all 3 models and compare.

vote the length: ($-502, S-502) versus (sS-502)
put the letters of the different part into a bag {S:2, s:1, $:1} and again vote.

Or you have $ versus S. This can be solved by frequency. The letters 'ernsti' are the most frequent in European languages. Thus 'S' overrules '$'. Building your own character frequency table is simple, if you have a special type of corpus. It's just counting characters into a hash (or dict in Python, bag, multiset, an indexed array).
In historical OCR I could improve CER (Character Error Rate) by voting from 1% to 0.9%. With respecting frequencies (of words) I reached 0.36%.

While I understand and appreciate the suggestion to improve the result with post-processing, I do not think it is feasible in many real-world cases.
The sample I provided above is a minimized version out of extreme amount of text, from unknown source/origin at variable length with no pattern or known length. The only thing that is known with certainty is that it is latin letters.
Running all 3 models alone for voting purposes means loosing 3 times the speed. The Result would be long text blocks and complicated logic would need to determine which words/characters are matching across different model runs to do a frequency or length analysis.
Which character overrules what based on frequency is also a questionable approach and only good if the assumption is human readable text, because some data contains non-natural words, sequences of characters and special signs combined which are codes or tokens. $-502 may very well be a correct result based on the image, overruling that with post-processing code defeats the purpose of OCR and of the business process.
I think it is reasonable to expect from Tesseract's supplied traineddata model files that such clean input is recognized with correct accuracy in english and latin models.

That's all true.
But OCR is still limited. As all deep learning models it suffers from "never seen before". Second, it's Supervised Machine Learning and not adaptive.
And assuming Latin characters only is a bias. Even in the Englisch documentation of Perl there are Japanese, Chinese and Greek characters. Same in German newspapers or Wikipedia.
In the moment it's not possible to train a model as "one fits all". It would be very expensive.
But the standard models for (modern) English or German could be improved by e.g. including bullet-like symbols in the training data, as they are often used in modern texts.

By tweaking the command instead of getting the output on the command line we wrote the output on a separate text file and updating the tesseract library correct OCR detection was performed for required english language
The command used was -
tesseract "" "" -l eng


[v0.3.0] Failed Jobs: one for every completed test

Describe the bug
I enabled debug, and after almost one day, I noticed I had 17 failed jobs in the Jobs section (screenshot below). You can find the detailed log of the error for each failed job in the Logs section below. The error is the same for each failed job.
I checked the timing of those jobs and they were identical to the ones of the 17 results of completed tests. So I guess they didn't really fail, but I'm not sure about that.
To Reproduce
Enable debug and check the Failed Jobs list. You should find one for every completed test.
Expected behavior
A clear and concise description of what you expected to happen.
Environment (please complete the following information):

OS: [Docker on Ubuntu]
Architecture: [amd64]
Browser [Edge]
Version [v0.3.0]

Screenshots

Logs
From the View Failed Job window.
Exception:
TypeError: Cannot access offset of type string on string in /var/www/html/app/Models/Result.php:69
Stack trace:
#0 /var/www/html/app/Jobs/SendDataToInfluxDbV2.php(63): App\Models\Result->formatForInfluxDB2()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Jobs\SendDataToInfluxDbV2->handle()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\Container\BoundMethod::call()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\Bus\Dispatcher->dispatchNow()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(126): Illuminate\Pipeline\Pipeline->then()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\Queue\CallQueuedHandler->call()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(425): Illuminate\Queue\Jobs\Job->fire()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(375): Illuminate\Queue\Worker->process()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(173): Illuminate\Queue\Worker->runJob()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(150): Illuminate\Queue\Worker->daemon()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(134): Illuminate\Queue\Console\WorkCommand->runWorker()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\Container\BoundMethod::call()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Illuminate\Container\Container->call()
#27 /var/www/html/vendor/symfony/console/Command/Command.php(308): Illuminate\Console\Command->execute()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(148): Symfony\Component\Console\Command\Command->run()
#29 /var/www/html/vendor/symfony/console/Application.php(1014): Illuminate\Console\Command->run()
#30 /var/www/html/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand()
#31 /var/www/html/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(111): Symfony\Component\Console\Application->run()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\Console\Application->run()
#34 /var/www/html/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#35 {main}

Payload:
{
  "uuid": "72551a41-a804-4eea-b767-1e2f0754aa36",
  "displayName": "App\\Jobs\\SendDataToInfluxDbV2",
  "job": "Illuminate\\Queue\\CallQueuedHandler@call",
  "maxTries": null,
  "maxExceptions": null,
  "failOnTimeout": false,
  "backoff": null,
  "timeout": null,
  "retryUntil": null,
  "data": {
    "commandName": "App\\Jobs\\SendDataToInfluxDbV2",
    "command": "O:29:\"App\\Jobs\\SendDataToInfluxDbV2\":2:{s:6:\"result\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":5:{s:5:\"class\";s:17:\"App\\Models\\Result\";s:2:\"id\";i:359;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";s:15:\"collectionClass\";N;}s:8:\"settings\";O:29:\"App\\Settings\\InfluxDbSettings\":5:{s:10:\"v2_enabled\";b:1;s:6:\"v2_url\";s:30:\"http://influxdb2.axel.dom:8086\";s:6:\"v2_org\";s:11:\"domain.net\";s:9:\"v2_bucket\";s:17:\"speedtest-tracker\";s:8:\"v2_token\";s:88:\"yu0H-YQ11111111111_REDACTED_22222222222222222222222222233333333333333==\";}}"
  }
}

@alexdelprete or @future10se the branch attached to #144 should resolve the InfluxDb issue. Would either of you mind pulling and testing?
Also found that apparently packetLoss doesn't always get returned from the CLI so that field is now optional in the returned data.

Would either of you mind pulling and testing?

so for docker, I can use the branch name as the image tag to pull it? didn't know that, I'll try it.

You'll want to pull the branch, then build the image manually docker build . -t some-image-name and then start that container.
I don't have access to my home lab for a few more days so I can't really test the influxdb job. All I can test is that the formatter no longer fails.

I used VSCode to edit directly the file in the container, then restarted it.
The fix is working fine, no item in the Failed Jobs list, and I have data in Influx. :)

Cool, because I merged it on accident haha

Cool, because I merged it on accident haha

that's why I tested it right away...I had guests but I took 10m off to test because you merged it and I wanted to be sure. :)

Hi @alexjustesen, sorry for the late reply, timezones 😅
Yes, I can confirm on my end that InfluxDB integration is working again. Thank you!


Exchange issuance zero ex

Exchange Issuance of Set Tokens using 0x Exchange Aggregator.

Temporarily setting to draft while we are adjusting it to remove the intermediary WETH stage.

Additional context from @ckoopmann:
"There are some scripts that I used for development purposes, which could probably be removed. (A deploy script and the analysis of gas costs for the swaps). But I left it in for now to let the reviewers choose what should be removed."


tx-history transaction missing

It seems, inputs of transactions are missing on the tx-history endpoint.
As example:
# curl -s http://localhost:9094/api/core/v1/addresses/ed25519/d35244350d625ddacf5e8318392740a37041af44c6cf8fe94eb8fdd21a94b36a/tx-history | jq

{
  "data": {
    "addressType": 0,
    "address": "d35244350d625ddacf5e8318392740a37041af44c6cf8fe94eb8fdd21a94b36a",
    "maxResults": 1000,
    "count": 1,
    "history": [
      {
        "messageId": "4776e7aa52606f41541c0d277646bea51fb36a982ef33524b0bfbdb4cce3b2df",
        "transactionId": "8d3cb2d6448e6464f43bfe4be7554b8dd432503b3f6ece281cf719035c7a0ae0",
        "referencedByMilestoneIndex": 1012549,
        "milestoneTimestampReferenced":<PHONE_NUMBER>,
        "ledgerInclusionState": "included",
        "inputsCount": 1,
        "outputsCount": 2,
        "addressBalanceChange":<PHONE_NUMBER>24
      }
    ],
    "ledgerIndex": 7114232
  }
}

But actually there should be another transaction:

This also is reflected by the Explorer variant using the tx-history endpoint:

Fixed in #18


Improved rule handling to pass comprehensive tests

Improved Wildcard rule handling
Fix WilddardExecption  handling
Passes comprehensive tests
Made some classes immutable

Hi why you have remove my enum? generally is better to make more small pull request, for example one with the tests, a other change the DomainName model. So it is possible for the project owner to merge the parts are good and return others...

Apologies. The code required a few relatively big changes to make it compatible.
Part of that was scanning for wildcards. In hindsight I could have left the enum there. You can put it back (in place of the IsException). I just looked at other implementations and nobody else needed to know more than if rule was exception. If you have specific use for enum feel free to put it back.


Debugger fails on macOS: "could not launch process: stub exited while waiting for connection: exit status 0"

What version of Delve are you using (dlv version)?

Delve Debugger
Version: 1.0.0-rc.2
Build: a5b230b81d0d23bf3f0681235de6bb90d6a956d0

What version of Go are you using? (go version)?

go version go1.9.2 darwin/amd64

What operating system and processor architecture are you using?

macOS 10.13.1 (17B48)

What did you do?

I tried to debug a test from Visual Studio Code (VSC) and it fails with the error could not launch process: stub exited while waiting for connection: exit status 0.
VSC is executing delve with the following arguments:
/usr/local/bin/dlv test --headless=true --listen=<IP_ADDRESS>:2346 --log=true --wd=/Users/jpap/PROJECT --

In the system log, I see:
default	20:47:34.286794 -0800	debugserver	debugserver will use os_log for internal logging.
default	20:47:34.286827 -0800	debugserver	debugserver-@(#)PROGRAM:debugserver  PROJECT:debugserver-900.0.57
 for x86_64.
default	20:47:34.287087 -0800	debugserver	1 +0.000000 sec [12684/0307]: RNBRunLoopLaunchInferior DNBProcessLaunch() returned error: 'No such file or directory (./debug.test)'
default	20:47:34.287137 -0800	debugserver	error: failed to launch process /Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/debugserver: No such file or directory (./debug.test)
default	20:47:34.287164 -0800	debugserver	Exiting.

And in the terminal I see:
2017/11/14 20:47:34 server.go:73: Using API v1
2017/11/14 20:47:34 debugger.go:96: launching process with args: [./debug.test]
could not launch process: stub exited while waiting for connection: exit status 0

What is this missing debug.test binary all about?

I can run the debugger manually, as follows, where ${MY_PACKAGE} is the package name to test:
/usr/local/bin/dlv test --log=true ${MY_PACKAGE}

In this case, I get the (dlv) prompt and I can press c to run the tests OK.
When I add the -- argument, it fails in the same way as outlined in the previous comment:
/usr/local/bin/dlv test --log=true ${MY_PACKAGE}
2017/11/14 21:03:48 server.go:73: Using API v1
2017/11/14 21:03:48 debugger.go:96: launching process with args: [./debug.test syncatron/lib/serialize]
could not launch process: stub exited while waiting for connection: exit status 0

and I see similar console messages.
I'll next see if I can find where the -- arguments are coming from...

It looks like the -- argument is coming from Visual Studio Code. I'll remove it and see if that fixes this issue.

I think the issue here is on the VSC debug adapter. Closing...

I'm seeing this problem as well just running from the command line:
13:06 $ dlv debug --log
2018/02/26 13:22:42 server.go:73: Using API v1
2018/02/26 13:22:42 debugger.go:98: launching process with args: [XXXXX]
could not launch process: stub exited while waiting for connection: exit status 0

This worked for me.
dlv --backend native debug --log
And you can adjust your launch.json accordingly
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 2345,
            "host": "<IP_ADDRESS>",
            "program": "${fileDirname}",
            "env": {},
            "args": [],
            "showLog": true,
            "backend": "native"
        }
    ]
}

Don't do what @ivdelchev suggests, the native backend is broken in subtle ways.

Just do @ivdelchev suggests. It works for me. What will be broken in this way ? @aarzilli

@Quanjiang this does not help
I follow @ivdelchev 's solution, and I works.
Seems like backend native is not a safe way, but it is a workaround.

Thanks @ivdelchev !!!

I am getting following issue:
debugger.go:101: launching process with args: [/Users/newuser/go/src/github.com/smbhuin/myservice/debug]
could not launch process: stub exited while waiting for connection: exit status 0
Go Version: go version go1.10.1 darwin/amd64
Mac OS Version: 10.13.3
Visual Studio Code Version: 1.24.1
Delve Version: 1.0.0
If I run the debugger manually from command line it works file, but if I use any IDE then it throws similar  error.


Create 2023-09-20-magazine-005.md

Docs updates should not be submitted in this repository
Our doc site content is being automatically updated from Wing repository docs folder.
Please submit any changes to the docs as a PR here

@MarkMcCulloh can you please review this, it's a summary of the changelog. Want to make sure everything is correct. Also I have no idea what i'm doing wrong with the images, can you tell me what i'm doing wrong?

@MarkMcCulloh making sure you saw my comment above, thanks!

@eladb ready for your review!!


WIP: Pre-compiled wheel

I'm not sure how to deal with binary wheel bc of the dep on arrow see https://github.com/0x0L/pgeon/issues/8
For python we want pgeon to use pyarrow libs

The Linux wheel here was working correctly last time I checked. It was correctly built and linked against arrow on manylinux. I had a strange error on Mac, and since I don't have a Mac anymore, I couldn't test it locally.

MacOS & linux builds on the pip_only branch but it's still using pyarrow conda-forge
Windows fails because libpq include dir is missing in setuptools cflags

MacOS & linux builds on the pip_only branch but it's still using pyarrow conda-forge Windows fails because libpq include dir is missing in setuptools cflags

I think the wheel built using pyarrow conda-forge won't work on vanilla systems.

Yeah probably :) My issue is that the wheel built using pyarrow pypi does not work either

pgeon-0.1.dev67+gc83c817.d20230219-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.zip
Can you test this in a vanilla linux environment (so just create a virtual env, and install the wheel)?
(just rename it removing the  .zip  extension)

That works. It's 80M of arrow libs for 1M of pgeon though

That works. It's 80M of arrow libs for 1M of pgeon though
Where do you arrow libs you include in that wheel come from ? Not the pypi dist I think I'm starting to suspect that the libarrow bundled within pyarrow pypi wheels for linux is missing some components, compared to the arrow-cpp distribution or the macos wheel

The ArrowPython  bits are coming from pyarrow, the rest comes from the CentOS 7 distribution (because manylinux image I'm using is RHEL7 based) of Arrow: https://arrow.apache.org/install/

I agree that the libarrow in the pyarrow should work instead.

There's also a collision between the _json compiled extensions coming from cpython and the one coming from _json.pyx in pyarrow... 🥹

Ok, I managed to make it work: https://github.com/0x0L/pgeon/actions/runs/4219008290/jobs/7323975452
I need to tweak the MACOS_DEPLOYMENT_TARGET to account for the fact that Homebrew is lazy, and builds only for the version of Macos is installed on, but I should be on the good track.

@0x0L i can close this?

I think so. Main is still missing a few things like proper macos target and windows build


Exception (endless loop) when used in tests under Xcode 7.0 GM

I get a exception with endless loop when AnimatedGIFImiageSerialization is imported in classes that are used in unit tests.
The loop happens with this method: + (UIImage *)animated_gif_imageNamed:(NSString *)name attribute((objc_method_family(new))) {

I found out the problem the code was being loaded twice, causing +load to be called twice.  You can set a breakpoint to confirm this is also your problem.  You might also see logs in the console about two implementations of a class being loaded, and the version chosen being undefined.  We're using CocoaPods, and I fixed the issue by setting the :exclusive flag to true:
target 'WikipediaUnitTests', :exclusive => true do
  pod 'OCMockito', '~> 1.4'
  pod 'OCHamcrest', '~> 4.1'
  pod 'Nocilla'
  pod 'FBSnapshotTestCase/Core', '~> 2.0.3'
end

This doesn't help unfortunately. This is my Podfile (shortened)
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '7.1'

workspace './MyApp'

inhibit_all_warnings!

def import_pods
    (...)
    pod 'AnimatedGIFImageSerialization'
   (...)
end

target :'MyApp' do
    import_pods
end

target 'MyAppTests' do
    import_pods
    pod 'OCMock', '~> 3.1'
    pod 'FBSnapshotTestCase', '< 2.0'
end

@plaetzchen what you're doing is functionally equivalent to having :exclusive set to false. Are you tests hosted within your app?  If you're not sure, check the "Genera" section of your test target's build settings to see if your main app target is selected in the "Host Application" option.
 I had similar issues with AFNetworking and tried a solution by explicitly linking some but not all frameworks to the test target. I will try that for AnimtedGIFImageSerilization

OK I fixed it by removing AnimatedGIFImageSerilization from import_pods and adding it only to my normal targets. Thank you for your support @bgerstle

Welcome, glad I was able to help


Universal link with embedded URL doesn't work

Hi guys, thank you for implementing the deep link feature. I tested it for our palm dapp and it worked well on iOS!
But when I tried it on my Android phone it didn't work as expected. The link that I was testing looked like this:
https://aw.app/openurl?url=http%3A%2F%2Fa3f6-64-231-104-180.ngrok.io
Here are the screenshots for Android (Samsung Galaxy A12):

-
-

I tried Chrome and the built-in Samsung browser.
AlphaWallet version: 3.51.0 (180)

With v3.5.2 RC1:

Visit https://s.hboon.repl.co in a web browser (not in AlphaWallet app)
Tap on any of the links "Universal link to open dapp", "Foo1" or "Foo2"

Expected:

Switch to AlphaWallet app and automatically open the embedded URL in the browser (tap https://aw.app/openurl?url=http%3A%2F%2Fapp.uniswap.org%3Ftest%3Dvalue1 should open http://app.uniswap.org?test=value1)

Observed:

3 Screenshots

-
-
-

@hboon works for me:
https://user-images.githubusercontent.com/12689544/156117608-a123c84d-c067-45ca-8bf7-a22e2cdd8d31.mp4
Testest with Samsung, Chrome, Brave and Duck Duck Go. Brave shown. Seems to work correctly.

@JamesSmartCell I couldn't catch it, how does it go from:

to:

is it automatic?
And does all 3 links "Universal link to open dapp", "Foo1" and "Foo2" work this way for you?

I had to push a fix through for when AW isn't already loaded (intents get processed before the 4 main screen fragments are initialised so you need a delayed load). But yes it works correctly for all cases. Can you try using the Samsung browser or Chrome? It actually worked in all 6 browsers I use (Samsung, Edge, Brave, Firefox, DuckDuckGo, Chrome), albeit with slightly different UI.
Here's a demo with Samsung browser, with AW paged out before each load:
https://user-images.githubusercontent.com/12689544/156216955-5a9cad42-92d8-48f0-9c94-0ea9feb1d5e3.mp4
I'll do another build as I think I fixed Tomek's crashing issue too.

@hboon This is all done through intents in the Manifest - you register an intent with Android OS that you want this app to be a possible recipient of any URL beginning with "aw.app". If the user visits a URL like that, the OS will pick up that an app may handle it better than a browser and you see the AW icon in the intent popup. I'm not sure that's your question.
I don't know how intents work across all devices; but try an emulator. What device are you testing on? This intent system works correctly on all my test phones:
Samsung S20 (11)
Xiaomi MiMix (10)
Pixel 1 (11)
Huawei (10)
Emulator (Various)

Yes, it works with Samsung browser on my S20.

This combo works for me: Huawei + Chrome + newest build, but not with Huawei + built-in browser + newest build.

I don't have access to my Huawei but magic links used to work on it; and this uses the same set of manifests. I can test when I'm finally allowed to return home.

I can reproduce it on my Huawei, let me figure it out.

I tested on my Huawei phone.

Default browser cannot open any links
Firefox doesn't open links by default, Click Open in app menu item opens the link
Edge browser open links automatically

I don't understand where does this error come from:

error: com.alphawallet.token.entity.SalesOrderMalformed: Invalid link format

Even I open it on Mac, it also shows the same error.
I can find the class in Android repo https://github.com/AlphaWallet/alpha-wallet-android/blob/master/lib/src/main/java/com/alphawallet/token/entity/SalesOrderMalformed.java
Do we really have the domain aw.app and it respond the error?

Do we really have the domain aw.app and it respond the error?

We do own the domain and use it for deeplinks.

Do we really have the domain aw.app and it respond the error?

We do own the domain and use it for deeplinks.

Exactly, it redirects to alphawallet.com.

This should be fixed by #2535 , for Android 12.

@seabornlee should close this since it's fixed?


Developer-Facing Simple Counters

Can be cheaply incremented (no locking, etc). Used
primarily for devs to see how many times some
codepath is hit. Not “prometheus-y” metrics (e.g.
byte counts, etc)
Described in Ethan’s doc.

@stevenctl, Is the doc you mentioned above public? If so would it be possible to link to the doc?

Can be cheaply incremented (no locking, etc). Used primarily for devs to see how many times some codepath is hit. Not “prometheus-y” metrics (e.g. byte counts, etc)
Described in Ethan’s doc.

@howardjohn @ejj @stevenctl can you pls share the doc?

Ah, the doc was sort of a brainstorming list of tasks, forgot to copy/paste some things before importing to github. Updated the description with text directly from said doc.

Thanks for the info @stevenctl. I will take a look at this extra detail and work on a proposal.


During wrap step, generate peercoin URI

Example of an URI:

peercoin:mjmgQXtg9ACBUq2YKL8tdmpJF6S1cWZ5Nr

Please explain like i am 5
what can you do with a string such as: peercoin:mjmgQXtg9ACBUq2YKL8tdmpJF6S1cWZ5Nr

If you have properly installed peercoin-qt on your system, with mime info set all that jazz you can click on URI and it will automatically bring up the peercoin-qt/send_tab with address and amount already inputed.

Full URI example:

peercoin:muuaf6eHen5dP2HMjttW7KNFJYjGzWaZYA?amount=10.000000&message=wrapmeister_aug_20_20%3A44

Google hit on something which looks like it does it: https://github.com/coins/bitcoin-uri-js

so when wrap responses with a peercoinaddress, encode it with somethin like https://github.com/bitcoinjs/bip21/blob/master/index.js and put that in the QR-code ?

Qr code and/or uri, like a click able link.

see commit 614edd8b70b3d6f2acaf43ce62ff3a0989e7c242

Awesome.


Update google-cloud-nio to 0.123.26

Updates com.google.cloud:google-cloud-nio from 0.123.14 to 0.123.26.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.google.cloud", artifactId = "google-cloud-nio" } ]

labels: library-update, early-semver-minor, semver-spec-patch, commit-count:1

Superseded by #880.


Styling

Here is what is included in the assignment documentation.

CSS Styling
Instead of using a CSS library like Bootstrap, consider one of the following suggestions:
Explore the concept of CSS-in-JS, which abstracts CSS to the component level, using JavaScript to describe styles in a declarative and maintainable way. Some popular libraries include styled-components and Emotion.
Try using a component library, such as Semantic UI, Chakra UI, or Ant Design.
Create all the CSS for your application just using CSS.
Ultimately, it doesn't matter which of these options you choose—it just needs to look professional and be mobile-friendly.

Bootstrap does have its own thing, react-bootstrap, which you can just install as a dependency, and the documentation is nice, and even includes light/dark mode.  And that makes it where you can fall back on the regular Bootstrap if something isn't working, since it still uses the same CSS library.
And we could even just pull in parts of Bootstrap, like Container, with Row and Col, for just doing the layout, and maybe something else is nicer for everything else.  Lots of options.
When I was trying to look up how to do styling with pseudo-selectors, like :hover, Emotion did come up, along with Radium, which is older.
It looked like a lot to learn just for one thing, so for now, the styling for hovering over candidates is handled with extra classes, which does do the job more simply.
But if it turns out that it's nice and lends itself to other things, then maybe that can look better too.

I can work on tidying the controls panel, so it's not just random buttons everywhere.

Ben and Patrick bunch of misc fixes and changes


luci-base: accept alternative logread location

minimal change to accept the usual logread location
plus the alternative location (/usr/sbin/logread)
used by syslog-ng (see openwrt/packages/issues/11535 for reference)

Signed-off-by: Dirk Brenken<EMAIL_ADDRESS>

Can you try to simply replace /sbin/logread with logread on the JS side (not in the ACL rule), this should auto-discover the executable in $PATH.

That's what I've tried first, but I always get an access denied.

Merged, thanks!


luci-app-basicstation: Add luci-app-basicstation

LuCi support for Basicstation
Depends on https://github.com/openwrt/packages/pull/19188
Signed-off-by: Marcus Schref<EMAIL_ADDRESS>

ping @aparcar

Please post some screenshots

Here are some screenshots of the luci app

I would rename this to something like luci-app-lorawan-basicstation
And also add LoRaWAN to the title seen in menuconfig:
LUCI_TITLE:=LuCI Support for basicstation
--> LUCI_TITLE:=LuCI Support for LoRaWAN basicstation
Otherwise the "basic station" may sound too much like a simplified setup tool for a router.  (there is already a PR for luci-mod-simple, etc.)


Re-add externs for the Pointer Lock API

Originally https://github.com/google/closure-compiler/commit/8ae20da89ef2de361e670a4116d409fbfd109707, merged in https://github.com/google/closure-compiler/pull/1085 and erroneously deleted in https://github.com/google/closure-compiler/commit/fc0125c7ef146576d0ee2b6d11ba47d33224e1e5

No interest in signing CLA, but this isn't my code.

Well that's a delightful MOE bug.

This is now present in the repo at https://github.com/google/closure-compiler/blob/master/externs/browser/w3c_pointerlock.js


Update README.md

Update Slack Invitation

@joewiden what's the expiration date of the new link? I can set up a reminder to do this next time.

@joewiden what's the expiration date of the new link? I can set up a reminder to do this next time.


Evil os.Exit

I found usages of os.Exit in cmd/s2i/main.go.
That's a bad idea because it interrupts the runtime without running any deferred calls, no cleanup is done...
Most offenders call os.Exit indirectly through checkErr.
I can fix that later, logging the problem here to don't forget since I'm busy with other stuff at the moment.
it's really a lot like this: http://turnoff.us/geek/dont-sigkill/

I'm intending to use RunE as Hugo uses: https://github.com/spf13/cobra#alternative-error-handling

To tone down the problem, there seems to be only a single defer statement to close a file that doesn't get executed in case of errors and checkErr calling os.Exit. Not the end of the world.
Still, looks like a beneficial cleanup to build on the ideas of the cobra usage in hugo.


error: Package `fullframe-' is unavailable

Does this help: https://github.com/purcell/emacs.d/issues/303

Thank you for your reply, but I use Mac OSX

Try M-x package-refresh-contents, then restart Emacs.
If the problem persists, you should provide some information about which Emacs version you're using, and whether you have been using the .emacs.d directory with different Emacs versions. It's very hard for me to help without more information.

When i got this problem, i run test-startup.sh. It's helped me.

I also encounter this problem, and my os version is Fedora 23(Workstation Edition), Linux 4.3.3-300.fc23.x86_64, emacs version is GNU Emacs 24.5.1.
Here is what I see using "emacs --debug-init":
Debugger entered--Lisp error: (gnutls-error # -110)
signal(gnutls-error (# -110))
gnutls-negotiate(:process # :type gnutls-x509pki :hostname "melpa.org")
open-gnutls-stream("melpa.org" #<buffer  url-http-temp> "melpa.org" 443)
network-stream-open-tls("melpa.org" #<buffer  url-http-temp> "melpa.org" 443 (:type tls :nowait t))
open-network-stream("melpa.org" #<buffer  url-http-temp> "melpa.org" 443 :type tls :nowait t)
byte-code("\306\211\n\307>\203$

These symptoms will indicate different problems for different people: this is the first package which the emacs.d config tries to load.  In the case of @TianYuwan, it looks like it's not possible to open an https connection to melpa.org. Most likely you need a network proxy, or you are behind a restrictive firewall.

@purcell I happen to travel to other city today and have tried once again. Luckily my desktop could connect to melpa.org and the issues disappear. But this time it pops up several windows asking for OpenSSH password, I ignore them and the initiation succeed at last.

well,  people live in china will encounter this problem because of GFW

Yep, but I'm not sure it would make sense to try to intercept this error and describe possible reasons for it.

I got this error today after I pulled new changes. But my problem is quite different.
I use Emacs behind a proxy. Normally things work fine if I change melpa url from https to http. Emacs will read $http_proxy anyway.
Now I have to explicitly set
(setq url-proxy-services
      '(("http" . "myproxy.com:80")))

before loading everything. It seems emacs won't read environment variable $http_proxy anymore.
And I also made a mistake writing "myproxy.com:80" as "http://myproxy.com:80" during my debugging. The url parser somehow wrongly parsed "http" as a host name.

"http://elpa.popkit.org/packages/" elpa mirror in china, maybe can help for you.
https://github.com/aborn/popkit-elpa

@ccruquan
thank you for the suggestion, I am trying it. 2 problems:
-I am unable to access your 用户指南  （http://elpa.popkit.org/#/getting-started). I tried with and without VPN. Because of that all I could try to follow was your github instruction:
(add-to-list 'package-archives
'("popkit" . "http://elpa.popkit.org/packages/"))
-Unfortunately I am really new to emacs, forgive my naive question but where am I supposed to add the following code?
thank you

@laurentHYZ

I am unable to access your 用户指南 （http://elpa.popkit.org/#/getting-started).

elpa.popkit.org hosting in China.  Maybe you can't access.

Unfortunately I am really new to emacs, forgive my naive question but where am I supposed to add the following code that I found on your github link?
(add-to-list 'package-archives
'("popkit" . "http://elpa.popkit.org/packages/"))

If you use @purcell 's configuration, you can find the code  in ~/.emacs.d/list/init-elpa.el.
Code :https://github.com/purcell/emacs.d/blob/master/lisp/init-elpa.el#L28.
p.s. I'm not the author of popkit.org :), author is @aborn
p.s. popkit change http to https
sorry for my poor English :)

I have the same issue, currently in Russia, Moscow. Not sure how to diagnose this, I'm new to emacs

it works if I use http instead of https here:
;;; Also use Melpa for most packages
(add-to-list 'package-archives `("melpa" . ,(if (< emacs-major-version 24)
                                                "http://melpa.org/packages/"
                                              "http://melpa.org/packages/")))

Another variant of this is running Emacs <IP_ADDRESS> from Alpine Linux 3.4.2  (repo "testing" for /etc/apk/repositories) in a Docker container and console-mode, where the package gnutls-utils is needed. The same error message displays about "fullframe-" when the binary gnutls-cli is not available.
In test-startup.sh there could be a
[ -z "$(which gnutls-cli)" ] && echo -e "Error: missing binary 'gnutls-cli'.\nTip: have you installed the package for it?\n 'gnutls-bin' (Debian/Ubuntu) -- 'gnutls-utils' (Alpine) -- 'gnutls' (Gentoo)?\n" && exit 1

With apk -v add gnutls-utils done on Alpine Linux the Melpa packages all download and compiling seems fine, however I get another error after all initial compiling finishes:
Error while checking syntax automatically: (void-function seq-find),
and subsequent starting emacs gives the error:
Recursive 'require' for feature 'seq',
but it is impossible to quit Emacs and it has to be suspended and killed.

So on Alpine Linux in a Docker terminal running emacs -nw, as mention in the spacemacs-thread removing the package elpa/seq-2.16 and then all compiled .elc files as well as commenting the load-prefer-newer as mentioned in #340  -- I still get the flycheck error reported for *scratch*, but everything else seem to be working fine.
I can quit emacs, restoring session also works fine.
go-mode.el seems somewhat buggy still, but otherwise good. 👍

@runelabs Hmm. gnutls-cli isn't absolutely needed, because openssl_connect will be used as a fallback if necessary, so I'd be wary of adding that specific check to test-startup.sh, but perhaps a variation of it could be useful.
In general there can be bytecode-related problems when either switching Emacs versions, or when upgrading packages which define macros used elsewhere, e.g. flycheck and seq: the old macro definitions will have generated code into the .elc of the packages which use them, and that generated code can be incompatible with the upgraded seq or flycheck. There's no automatic fix or verification method here: the safe option is generally to clear out the ~/.emacs.d/elpa directory and restart Emacs so the packages all get reinstalled.

I did a fresh clone of the repo & on start-up get the same error
Package `fullframe-' is unavailable

On running ./test-startup.sh, I find the following:
Importing package-keyring.gpg...
Importing package-keyring.gpg...done
Making url-show-status local to  *http melpa.org:443* while let-bound!
Failed to download ‘melpa’ archive.
Debugger entered--Lisp error: (error "Package ‘fullframe-’ is unavailable")
  signal(error ("Package ‘fullframe-’ is unavailable"))
  error("Package `%s-%s' is unavailable" fullframe "")
  package-compute-transaction(nil ((fullframe)))
  package-install(fullframe nil)
  (if (boundp (quote package-selected-packages)) (package-install package nil) (package-install package))
  (if (or (assoc package package-archive-contents) no-refresh) (if (boundp (quote package-selected-packages)) (package-install package nil) (package-install package)) (progn (package-refresh-contents) (require-package package min-version t)))
  (if (package-installed-p package min-version) t (if (or (assoc package package-archive-contents) no-refresh) (if (boundp (quote package-selected-packages)) (package-install package nil) (package-install package)) (progn (package-refresh-contents) (require-package package min-version t))))
  require-package(fullframe nil t)
  (progn (package-refresh-contents) (require-package package min-version t))
  (if (or (assoc package package-archive-contents) no-refresh) (if (boundp (quote package-selected-packages)) (package-install package nil) (package-install package)) (progn (package-refresh-contents) (require-package package min-version t)))
  (if (package-installed-p package min-version) t (if (or (assoc package package-archive-contents) no-refresh) (if (boundp (quote package-selected-packages)) (package-install package nil) (package-install package)) (progn (package-refresh-contents) (require-package package min-version t))))
  require-package(fullframe)
  eval-buffer(#<buffer  *load*-51365> nil "/Users/rags/.emacs.d/lisp/init-elpa.el" nil t)  ; Reading at buffer position 2994
  load-with-code-conversion("/Users/rags/.emacs.d/lisp/init-elpa.el" "/Users/rags/.emacs.d/lisp/init-elpa.el" nil t)
  #<subr require>(init-elpa nil nil)
  funcall(#<subr require> init-elpa nil nil)
  (with-no-warnings (funcall ad--addoit-function feature filename noerror))
  (setq ad-return-value (with-no-warnings (funcall ad--addoit-function feature filename noerror)))
  (prog1 (setq ad-return-value (with-no-warnings (funcall ad--addoit-function feature filename noerror))) (when (and (not already-loaded) (memq feature features)) (let ((time (sanityinc/time-subtract-millis (current-time) require-start-time))) (add-to-list (quote sanityinc/require-times) (cons feature time) t))))
  (let* ((already-loaded (memq feature features)) (require-start-time (and (not already-loaded) (current-time)))) (prog1 (setq ad-return-value (with-no-warnings (funcall ad--addoit-function feature filename noerror))) (when (and (not already-loaded) (memq feature features)) (let ((time (sanityinc/time-subtract-millis (current-time) require-start-time))) (add-to-list (quote sanityinc/require-times) (cons feature time) t)))))
  (let (ad-return-value) (let* ((already-loaded (memq feature features)) (require-start-time (and (not already-loaded) (current-time)))) (prog1 (setq ad-return-value (with-no-warnings (funcall ad--addoit-function feature filename noerror))) (when (and (not already-loaded) (memq feature features)) (let ((time (sanityinc/time-subtract-millis ... require-start-time))) (add-to-list (quote sanityinc/require-times) (cons feature time) t))))) ad-return-value)
  ad-Advice-require(#<subr require> init-elpa)
  apply(ad-Advice-require #<subr require> init-elpa)
  require(init-elpa)
  eval-buffer(#<buffer  *load*> nil "/Users/rags/.emacs.d/init.el" nil t)  ; Reading at buffer position 1569
  load-with-code-conversion("/Users/rags/.emacs.d/init.el" "/Users/rags/.emacs.d/init.el" nil nil)
  load("/Users/rags/.emacs.d/init.el" nil nil t)
  load-file("/Users/rags/.emacs.d/init.el")
  (let ((debug-on-error t) (url-show-status nil) (user-emacs-directory default-directory) (package-user-dir (expand-file-name (concat "elpa-" emacs-version))) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) (load-file user-init-file) (run-hooks (quote after-init-hook)))
  eval((let ((debug-on-error t) (url-show-status nil) (user-emacs-directory default-directory) (package-user-dir (expand-file-name (concat "elpa-" emacs-version))) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) (load-file user-init-file) (run-hooks (quote after-init-hook))))
  command-line-1(("--eval" "(let ((debug-on-error t)\n                              (url-show-status nil)\n                              (user-emacs-directory default-directory)\n                              (package-user-dir (expand-file-name (concat \"elpa-\" emacs-version)))\n                              (user-init-file (expand-file-name \"init.el\"))\n                              (load-path (delq default-directory load-path)))\n                           (load-file user-init-file)\n                           (run-hooks (quote after-init-hook)))"))
  command-line()
  normal-top-level()

Note: If it is of any help, my emacs version is <IP_ADDRESS>
Is it possibly due to not being able to access MELPA over https?

@purcell Hi Steve. I met the same problem of GnuTLS in windows10(x64) using Emacs 25.1.1 (x86_64-w64-mingw32) as here. And i found the original url you gave in the README.md about GnuTLS in windows works well in Emacs24, not in Emacs25. The problem i met is that, following the exact same order from http://xn--9dbdkw.se/diary/how_to_enable_GnuTLS_for_Emacs_24_on_Windows/index.en.html and when i enter [M-: (gnutls-available-p) RET], i got a 'nil' back. Here is the solution that gets me out http://emacs.stackexchange.com/questions/27202/how-do-i-install-gnutls-for-emacs-25-1-on-windows. May it help with others who meet the same problem.

I met the same problem, and this works.

it works if I use http instead of https here:
;;; Also use Melpa for most packages
(add-to-list 'package-archives `("melpa" . ,(if (< emacs-major-version 24)
                                               "http://melpa.org/packages/"
                                             "http://melpa.org/packages/")))
                                               ; ^

@Steven-AA @limTeTE I've made the config use HTTP by default now on Windows, if gnutls-available-p reports nil. This should help the default config to work automatically in  more situations. Thanks.


网站标题自定义

Expected behavior (预期行为)
网站标题只显示 作者名称， 不显示关键字，不显示description

Actual behavior (实际行为)
Steps to reproduce the behavior (重现步骤)
NexT Informations
Add the  ✔  sign before an item which is affected by this behavior.
NexT Version:

Master
Latest Release
Old version -

NexT Scheme:

All schemes
Muse
Mist
Pisces

Other Informations (Like Browser, System, Screenshots)

You can design your site title like this .
https://neveryu.github.io/guestbook/
In site config.

就是看了你的博客，在哪里进行设置啊？site config  where ？

我看了最近的issues, Neveryu几乎都有回复，只是列出自己的博客地址，并没有针对性的解决问题。这算不算恶意回复？

In themes\next\layout\index.swing.
You can find
{% block title %} {{ config.title }} {% endblock %}

This is default setting.
You can change it to
{ %block title % } {{ config.title }} - {{ theme.description }} { % endblock % }

or you can custom any style if you want.
Thanks for your cooperation.
@LionWY
If you has any other questions , you can write me a message on https://neveryu.github.io/guestbook/


Support perfect negotation

Summary
Establish a connection by using the Perfect Negotation pattern.
In other words: pion/webrtc should support rollbacks as described in

JSEP Section 5.7
WebRTC API Section <IP_ADDRESS>

Motivation
There seems currently no well documented way on how to establish a PeerConnection which avoids races/glaring?
Describe alternatives you've considered
I have tried to implement the procedure as described in the MDN article, however the pion API seems to be different in a few places.
E.g. the automatic rollback does not work.
Also a rollback via pc.SetLocalDescription(&webrtc.SessionDescription{Type:webrtc.SDPTypeRollback|) does not seem to be supported.

I think it would be ideal, if pion could ship with an example of perfect negotiation as it is also included in the spec.

I started working on an example here: https://github.com/stv0g/pion-perfect-negotation

A little update:
I have now worked around the limitations of pion/webrtc by re-creating the PeerConnection. This is implemented on the non-perfect branch of the above mentioned example.
This branch now also automatically handles reconnects of the WebSocket signaling channel as well as re-establishes the PeerConnection in case one of the peers is failing.
Feedback is highly welcome 😄

Stumbled across this, the pattern is kind of cool.

There seems currently no well documented way on how to establish a PeerConnection which avoids races/glaring?

I've definitely run across this before. The "canonical" solution I've been using is two peer connections, one for publishing and one for subscribing.
I think we can support rollbacks though, it's making its way into libwebrtc so it seems useful for pion to support too.

This would be great!

any updates?

No updates so far. However, contributions are very welcome :)


Landscape mode

Hey Pedro... really love this. One question... I don't know if it's just my app, but when in Slide mode, does the image display correctly in Landscape? On my iPhone 6 Plus, the modal screen becomes a bit wonky and doesn't display the image across the full screen. Possibly related... running ionic serve in the browser (Portrait mode) shows that around 680px width and the black modal box stops filling the screen. I see that the .modal class of ionic.css takes over to style the modal into the middle of the screen, simultaneously dropping the width to 60%. But what can be done for iPhone 6 Plus in landscape mode and other larger screens? Appreciate your time, man!

+1
Facing this problem too.

1

+1


Linker errors when attempting to build

I followed the instructions to install the required packages, but I am having issues when I reach the linker stage in msys (version 20230718)
LINK .obj/protoencode_ConfigProto.exe
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_check_op: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_leak_check: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_die_if_null: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_conditions: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_message: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_examine_stack: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_format: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_proto: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_nullguard: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_log_sink_set: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_sink: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_entry: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_marshalling: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_reflection: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_private_handle_accessor: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_commandlineflag: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_commandlineflag_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_config: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_program_name: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_initialize: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_globals: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_globals: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_hash: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_city: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_low_level_hash: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_raw_hash_set: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_hashtablez_sampler: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_statusor: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_status: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cord: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_info: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cord_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_functions: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_exponential_biased: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_handle: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_cord_state: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc32c: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_cpu_detect: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_bad_optional_access: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_str_format_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strerror: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_synchronization: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_graphcycles_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_stacktrace: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_symbolize: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_debugging_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_demangle_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_malloc_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_time: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_civil_time: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_time_zone: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_bad_variant_access: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strings: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strings_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_base: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_spinlock_wait: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_int128: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_throw_delegate: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_raw_logging_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_severity: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_check_op: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_leak_check: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_die_if_null: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_conditions: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_message: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_examine_stack: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_format: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_proto: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_nullguard: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_log_sink_set: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_sink: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_entry: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_marshalling: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_reflection: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_private_handle_accessor: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_commandlineflag: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_commandlineflag_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_config: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_flags_program_name: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_initialize: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_globals: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_internal_globals: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_hash: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_city: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_low_level_hash: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_raw_hash_set: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_hashtablez_sampler: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_statusor: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_status: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cord: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_info: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cord_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_functions: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_exponential_biased: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_cordz_handle: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_cord_state: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc32c: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_crc_cpu_detect: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_bad_optional_access: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_str_format_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strerror: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_synchronization: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_graphcycles_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_stacktrace: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_symbolize: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_debugging_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_demangle_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_malloc_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_time: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_civil_time: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_time_zone: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_bad_variant_access: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strings: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_strings_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_base: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_spinlock_wait: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_int128: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_throw_delegate: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_raw_logging_internal: No such file or directory
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -labsl_log_severity: No such file or directory
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:261: .obj/protoencode_ConfigProto.exe] Error 1

It's a mingw bug. See https://github.com/msys2/MINGW-packages/issues/17852.
To get around this, you'll need to install a version of the protobuf libraries which doesn't use libabseil:

pacman -U --noconfirm https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-protobuf-21.9-1-any.pkg.tar.zst

Thanks, that did the trick!

(belatedly) Good!


Cannot add addition fields to the users. Get an error undefined method.

Hello!
As the title says, I get an error undefined method when I try to add a column to the user.
Ruby - 2.3 Rails - 4.2.5 I'm using c9 as a cloud IDE.
What I do is to first: "rails g migration AddFieldsToUsers"
Then I add that into the DB:
class AddFieldsToUsers < ActiveRecord::Migration
def change
add_column :users, :username, :string
add_column :users, :current_goals, :text
add_column :users, :achieved_goals, :text
end
end
I run "rake db:migrate"
I create a registration_controller.rb
class RegistrationsController < Devise::RegistrationsController
private
def sign_up_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
def account_update_params
params.require(:user).permit(:current_goals, :first_name, :last_name, :email, :password, :password_confirmation, :current_password)
end
end
I add that into the routes: "devise_for :users, :controllers => { registrations: 'registrations' }"
I add the appropriate fields to the views, and when I open up the "users/edit" page, I get this error:
undefined method `current_goals' for #User:0x00000004e892f8
Did you mean?  current_password
I've tried this twice on two projects, and I got the same error.
Thank you for your time!

Can you please provide a sample application that reproduces the error?

Hello!
Thank you for your response, but I've already fixed the problem, by deleting the database and creating a new migration.


[enhancement] Support socks5/http proxy for cloud deployment

Context
I'm trying to figure out deploying the gateway and my app logic to the cloud using container runtimes, yet it has this annoying problem of not having /dev/net/tun devices by nature. I explored a bit and decided to go with tailscale to setup a private network to connect my services.
Next, when I tested the connectivity, I realized that ib_async does not support socks5/http proxy, which is a blocker in my deployment setup.
Proposed solutions
1/ am I on the right approach? I figured we need the proxy in order to work with the container runtime instead of dealing with VMs directly. This leads to several options aiosocks The whole motivation of me dealing with all these is to have a separate production environment for live trading and without the hustle of managing complex infrastructure involving k8s or bare metal VMs. I could focus on strategy development, and has CI/CD pipeline that continuously ships it and deploys the algorithm.
Would love to get some insights and advices from the experts :)

@rl3250 what's your rationale to integrate this on ib_async.
if you need it you can integrate it on your code base. why this should be part of ib_async?

I realized that ib_async does not support socks5/http proxy,

Yeah, it expects to connect to a TWS or gateway instance directly on an open TCP gateway port.
If you are already using tailscale, you have a VPN setup, so you should be able to connect to the remote IBKR gateway directly inside the VPN itself? You would just need to reconfigure the gateway settings to listen on a VPN network IP instead of localhost. No extra proxies or ssh tunnels should be needed.
Also worth remembering: the IBKR gateway program isn't written to be a "set it and forget it" background service. It often hangs or has mid-week crashes or requires manual restarts for various reason.
It's usually safer to run the gateway on the same localhost server as your actual API code itself so you have more access to restart things all in one place when problems happen.


[depends on 3263] Make error objects serializable for cms module

See master ticket: #3010

To the reviewer: for a smaller diff, please compare the branch to #3263, because this ticket depends on it.


Don't Merge! PR real time test for target branch full build

Docs Build status updates of commit f78001d:
:clock10: Full build: the average full build time is 5 min(s) 13 sec(s), this is based on the last 30 build(s) for this repository.

Docs Build status updates of commit f78001d:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs-ref-conceptual/testing.md
:warning:Warning
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)
Details

docs-ref-conceptual/testing.md

[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.
[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.
[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


python3Packages.pyxeoma: 1.4.1 -> 1.4.2

Motivation for this change
Update to latest upstream release 1.4.2
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@fabaff @SuperSandro2000 please look if the version is not already on staging-next (Python updates were merged there recently). Or use base16 hash format like python update script does. Otherwise this causes merge conflicts: https://github.com/NixOS/nixpkgs/pull/105153#issuecomment-791595321.

Can we programmatically check this in nixpkgs-reviews or with a GitHub Action?
Other than that I am not checking staging and staging-next because it takes to much time and most of the time the update don't be there. Also I am not enforcing hash formats because the daemons give back different formats and I don't know a setting to change that.


Pull request for readme change for more info for docker-compose users

There's a README update already pending in #41 that this will conflict with.


Implement Moving Title and Back Button

Hi,
Good Job @heidji.
Please, can you tell me how can i implement the "moving title", what is the structure in the #shrinkexpand Div.
I would like to implement it like the example gif (cat`s image) when you scroll up and the image shrinked with the text: "moving Title".
In the other hand, where may put ?
Please your help.
Sorry for my english.

Hey, thanks!
there's an example project which includes the moving title, check it out
Good luck!

Oh, i didn't see that!, LOL
Thanks my friend!


Add support for FZF_DEFAULT_OPTS_FILE

Make _fzf_wrapper support the FZF_DEFAULT_OPTS_FILE env var
Support for FZF_DEFAULT_OPTS_FILE was added to fzf in version 0.47.0

Hi, thank you for the PR! I will take a look sometime this weekend or next week. And just so you know, we'll need to update the readme too.
Out of curiosity so I can empathize with my users better, what makes you want to the FZF_DEFAULT_OPTS_FILE file over the env var? Is it for uniformity across shells?

Hmm I can't push to your repo.
Could you give me edit permissions on your fork
OR
Can you update this section of the readme with this:
### Change fzf options for all commands

fzf supports global default options via the [FZF_DEFAULT_OPTS or FZF_DEFAULT_OPTS_FILE](https://github.com/junegunn/fzf#environment-variables) environment variables.

`fzf.fish` sets [a sane `FZF_DEFAULT_OPTS` whenever it executes fzf](functions/_fzf_wrapper.fish) unless you export your own `FZF_DEFAULT_OPTS` or `FZF_DEFAULT_OPTS_FILE`.

?

Apologies for the slow responses! I've added you as a collaborator, as well as made the changes you requested myself.
As for why I wanted this, fzf recently added support for the options file and on my initial setup I was using that. I've since started using the env just because it seems better supported across plugins right now. Here's a link to the release that enabled the option file if you want some additional details: https://github.com/junegunn/fzf/releases/tag/0.47.0

No worries, open source work is slow. I'll get this merged sometime this weekend cause I'm busy as well.
Thanks for explaining! Yeah I think I'll move over to using FZF_DEFAULT_OPTS_FILE myself to reduce work maintaining the opts across each shell and ability to change opts without reloading shell.

it seems better supported across plugins right now
Sorry one more question, which plugins better support it right now?

Sorry one more question, which plugins better support it right now?
This is more of an assumption, the feature is new as of like 3 weeks ago.

Although fzf directly reads FZF_DEFAULT_OPTS _FILE. So I guess it would only impact plugins that do what fzf.fish does and read/write the  FZF_DEFAULT_OPTS variable.

Oh I see. I misread

I've since started using the env just because it seems better supported across plugins right now.

I thought you meant you started using the options file because plugins support it better but you meant you switched to the env variable because plugins better support it.
I agree it'll take time for plugins like this to adapt.

Sorry for the delay. I'm still working on why the tests are failing on Ubuntu. I use Mac so it's hard for me to debug

Hmm I do not know why I couldn't push to your branch's main even after you gave me edit access. Let me try to fix this...

Thanks for your contribution!


Installing Microsoft.Data.OData 5.2.0 breaks Azure Storage Library 2.0.3

The issue is that Storage <IP_ADDRESS> depends on OData 5.0.2.  After installing OData 5.2.0 from NuGet, this breaks Storage <IP_ADDRESS> because it can't find 5.0.2. (NuGet removes the old version).  This results in a runtime exception on the Table Storage method CreateIfNotExists().
Recreation steps:

Use latest everything -  VS 2012, latest Azure SDK, etc, running Windows 7.
Create a new cloud project.  Add a worker role.
Use NuGet and install Windows Azure Storage (latest).
Open WorkerRole.cs, select all, and paste code at the bottom of this issue.  Set a breakpoint as indicated in the Run() method.   Run the project.  Notice this works fine with no error.
Now go to NuGet and search for OData and install that (it's the 5.2.0 version).
Run project again.  Notice the error this time (condensed):

Microsoft.WindowsAzure.Storage.StorageException: Could not load file or assembly 'Microsoft.Data.OData, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Data.OData, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
..
at Microsoft.WindowsAzure.Storage.Table.CloudTable.CreateIfNotExists(TableRequestOptions requestOptions, OperationContext operationContext)
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
using System;
using System.Net;
namespace WorkerRole1
{
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
// Set breakpoint here:
string error = TestStorage();
}
    public static string TestStorage()
    {
        try
        {
            CloudTable table = GetTableRef("CloudConnectivityTest");
            CloudConnectivityTest l = new CloudConnectivityTest(new Random(DateTime.UtcNow.Millisecond).Next(100).ToString());
            TableOperation insertOperation = TableOperation.Insert(l);
            table.Execute(insertOperation);
            return string.Empty;
        }
        catch (Exception exc)
        {
            string errorMessage = exc.ToString();
            return errorMessage;
        }
    }
    private static CloudTable GetTableRef(string tableName)
    {
        CloudStorageAccount account = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
        CloudTableClient tableClient = account.CreateCloudTableClient();
        CloudTable table = tableClient.GetTableReference(tableName);
        table.CreateIfNotExists();
        return table;
    }

    public override bool OnStart()
    {
        // Set the maximum number of concurrent connections
        ServicePointManager.DefaultConnectionLimit = 12;

        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

        return base.OnStart();
    }
}
public class CloudConnectivityTest : TableEntity
{
    public CloudConnectivityTest()
    {

    }
    public CloudConnectivityTest(string randomNumberForRowKey)
    {
        this.PartitionKey = "LogEntry";
        this.RowKey = "LogEntry-" + randomNumberForRowKey;
        TestEmpty = "test";
    }

    public string TestEmpty { get; set; }
}

}

This happens to me occasionally. All you need to do is go into your app.config and remap all references to the newest version, like so:

   ... other sections go here ...

It's actually pretty easy to get past this. Just edit (or create) the "runtime" node and remap all references to the version of OData you actually have. I tried to paste an example, but it wouldn't display for some reason.


Sysmon Config: RuleName Field Value not showing the entire string

Hello Team,
I noticed that there might be a limit for the length of strings even when I set the following in the Sysmon config:
<FieldSizes>RuleName:1000</FieldSizes>

Sample Sysmon Config:
<!--
  Technique: Obfuscated Files or Information: Binary Padding
-->
<Sysmon schemaversion="4.81">
   <FieldSizes>RuleName:1000</FieldSizes>
  <EventFiltering>
    <RuleGroup name="" groupRelation="or">
      <ProcessCreate onmatch="include">
        <Rule name="TechniqueID=T1027.001,TechniqueName=Obfuscated Files or Information: Binary Padding" groupRelation="and">
            <Image condition="is">/bin/dd</Image>
            <CommandLine condition="contains all">dd;if=</CommandLine>
        </Rule>
      </ProcessCreate>
    </RuleGroup>
  </EventFiltering>
</Sysmon>

Triggering Rule
echo 'hello' > wardog.txt
dd if=/dev/zero bs=1 count=1 >> wardog.txt

Results:
wardog@UBUNTU5:~$ sudo tail -f /var/log/syslog | sudo /opt/sysmon/sysmonLogView -e 1
Event SYSMONEVENT_CREATE_PROCESS
        RuleName: TechniqueID=T1027.001,TechniqueName=Obfuscated Files or
        UtcTime: 2021-10-17 07:28:43.678
        ProcessGuid: {ed37ca6a-d0ab-616b-60cc-3fd656550000}
        ProcessId: 18386
        Image: /bin/dd
        FileVersion: -
        Description: -
        Product: -
        Company: -
        OriginalFileName: -
        CommandLine: dd if=/dev/zero bs=1 count=1
        CurrentDirectory: /home/wardog
        User: wardog
        LogonGuid: {ed37ca6a-b6fc-616b-e803-000000000000}
        LogonId: 1000
        TerminalSessionId: 1151
        IntegrityLevel: no level
        Hashes: -
        ParentProcessGuid: {00000000-0000-0000-0000-000000000000}
        ParentProcessId: 11020
        ParentImage: -
        ParentCommandLine: -
        ParentUser: -

Image:

Hi, this still seem to be an issue, made a fresh install of sysmon for linux on a new Debian 11 (bullseye) VM and Rule names got shortend.
Rule name="TechniqueID=T1059.004,TechniqueName=Command and Scripting Interpreter: Unix Shell
was shortend to:
TechniqueID=T1059.004,TechniqueName=Command and Scriptin
and
Rule name="TechniqueID=T1053.003,TechniqueName=Scheduled Task/Job: Cron"
was trunkated to
TechniqueID=T1053.003,Te

Marked as bug (possibly related to #75)

There was an issue with the rule names which I just fixed. If you want to give it a try and let me know that would be great. For now you will have to build since we haven't published a new package yet.

Closing for now. If the above fix does not resolve the issue please feel free to re-open.


requestSubscription always return error Invalid product Id?

Version of react-native-iap
5.1.1
Version of react-native
0.63.3
Platforms you faced the error (IOS or Android or both?)
IOS
Expected behavior
it should be subscribed to the particular subscription.
Actual behavior
I can see my device be able to pull all subscriptions from apple store connect but  when i trigger request Subscription by using the particular product id it always return error E_Developer_Error Invalid product id. Working fine on Android.
Tested environment (Emulator? Real Device?)
Both
I also tried with apple test user still same behavior my subscriptions  are in state Ready to Submit.

@hyochan @JJMoon @lwansbrough
I'm facing same issue

Stacked into this issue for a couple of days, quick help would be really appreciated.
@hyochan @JJMoon @lwansbrough @jvandenaardweg

I've just seen this. How is this closed? Looks like you've found the solution though.
Mostly, this is not a problem with the module.

I've just seen this. How is this closed? Looks like you've found the solution though.
Mostly, this is not a problem with the module.

@abdulwahabcs iOS 14?

Same here.
How can I solve this issue?


use ReplaySubject in Playgrounds

use ReplaySubject in Playgrounds
Some Observables+Connectable example

It's just spelled third instead of thirth :), but we can fix that in upcoming commits.
:+1:


Add missing parenthesis to test in README

Makes the code copy/paste ready

@homu r+

:pushpin: Commit 4b36150 has been approved by poteto

:zap: Test exempted - status


[BD-46] feat: Resolved annotation placement message

Description

in the example on the docs site the contents of Annotation should change depending on the arrowPlacement prop.

Github issue - https://github.com/openedx/paragon/issues/1667
Deploy Preview
Annotation component page
Merge Checklist

[x] If your update includes visual changes, have they been reviewed by a designer? Send them a link to the Netlify deploy preview, if applicable.
[x] Does your change adhere to the documented style conventions?
[x] Do any prop types have missing descriptions in the Props API tables in the documentation site (check deploy preview)?
[x] Were your changes tested using all available themes (see theme switcher in the header of the deploy preview, under the "Settings" icon)?
[x] Were your changes tested in the example app?
[x] Is there adequate test coverage for your changes?
[x] Consider whether this change needs to reviewed/QA'ed for accessibility (a11y). If so, please add wittjeff and adamstankiewicz as reviewers on this PR.

Post-merge Checklist

[x] Verify your changes were released to NPM at the expected version.
[x] If you'd like, share your contribution in #show-and-tell.
[x] 🎉 🙌 Celebrate! Thanks for your contribution.

Thanks for the pull request, @PKulkoRaccoonGang!  Please note that it may take us up to several weeks or months to complete a review and merge your PR.
Feel free to add as much of the following information to the ticket as you can:

supporting documentation
Open edX discussion forum threads
timeline information ("this must be merged by XX date", and why that is)
partner information ("this is a course on edx.org")
any other information that can help Product understand the context for the PR

All technical communication about the code itself will be done via the GitHub pull request interface. As a reminder, our process documentation is here.
Please let us know once your PR is ready for our review and all tests are green.

@PKulkoRaccoonGang 🎉 Your pull request was merged!  Please take a moment  to answer a two question survey so we can improve your experience in the future.

:tada: This PR is included in version 20.14.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Remove stray word in Transform docs.

Found this while working on something else.

Thanks!
bors r+


Terraform source raw image for the root image

Hello Sri,
You have in ansible new destination for the raw file "/var/lib/libvirt/images/fedora-coreos-{{ coreos_version }}-qemu.x86_64.raw". You didn't change it in the terraform/modules/fcos-base/main.tf , it is the old path { source = "/var/tmp/fedora-coreos-${var.fcos_version}-qemu.x86_64.raw" } . the right one should be as is in the ansible-playbook

name: Convert qcow2 to raw image file in /var/lib/libvirt/images
Best Regards
Bisser Danev

Thanks very much for the catch :)


Added version numbers

unconstrained install run into problems with conflicting versions

Hmmm probably minimal and maximal version. The conflict was between pandas and numpy and pandas and pytz.
I installed it in a virtual environment with conda. Maybe this was the problem?

I installed it in a virtual environment with conda. Maybe this was the problem?

Interesting. Did the same thing...

Then I am confused why you are not using an environment.yml instead of requirements. When setting up my virtual environments I follow the Good Research Code Handbook: https://goodresearch.dev/setup.html

Then I am confused why you are not using an environment.yml instead of requirements. When setting up my virtual environments I follow the Good Research Code Handbook: https://goodresearch.dev/setup.html

Yeah, on my working machine it is done very similarly. Yet, environment.yml and conda are in my opinion not always the best tool when working in containerized environements. Software running on my servers, like the hub on hub.camels-de.org, is actually spread across more than one container and not all of them use conda, or the same python versions. Thus, I personally use requirements.txt more often, because it is more flexible in this sense.
Fixing requirements to specific versions would make updates a day-lasting task if you manage more than one machine. Thus, I usually have only minimum versions where they are absolutely need, and keep versions unconstrained whenever possible. Only if I share, ie. reseach code, or deploy an application in production, I use a pip freeze to fix exact versions for all dependencies in order to be reproducible.
But you are welcome to commit a environment.yml into the repo, which I would just ignore where not suitable and can be used when working with conda.

Makes sense. Than I'll withdraw this pull request and make a new one with an environment.yml