absl: Potential Mutex deadlock - when using signal handler

What version of gRPC and what language are you using?
1.33.2 / C++
What operating system (Linux, Windows,...) and version?
Ubuntu 18.04
What runtime / compiler are you using (e.g. python version or version of gcc)
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
What did you do?
Tried to implement shutdown of a grpc::Server with a signal handler when pressing ctrl+c (SIGINT).
See repro case below.
#include <csignal>

static std::unique_ptr<grpc::Server> _server;

void shutdown(int)
{
    _server->Shutdown();
}

int main()
{
    signal(SIGINT, &shutdown);

    grpc::ServerBuilder builder;
    builder.AddListeningPort("<IP_ADDRESS>:5001", grpc::InsecureServerCredentials());
    testing::EchoTestService::Service service;
    builder.RegisterService(&service);
    _server = builder.BuildAndStart();
    _server->Wait();
    return 0;
}

What did you expect to see?
Normal shutdown and exit.
What did you see instead?

Works as expected on grpc 1.28.1 which was the previous version used before upgrading to 1.33.2.

I have the same issue.

gcc (Debian 10.2.0-16) 10.2.0
grpc 1.33.1/C++

This is reproducible on the HEAD and it appears that this happens because the custom shutdown callback which is going to call server's shutdown on the its wait-thread which already holds the its mutex. Server's shutdown also tries to get the same mutex and that's why abseil complaint. (This isn't reproducible on Mac, though)
@vjpai Do you think this needs a fix? and is there a way to handle shutdown using signal properly?

This is interesting. AFAIK the actual CV waiting process should be releasing the mutex (since that would block out any further progress in any case) but in general signal handlers can be processed at any thread and if we happen to be in the moment between entering the CV::wait and the time that the mu is released, we could still see this deadlock. Maybe we need to investigate mutex-free shutdown or waiting.

This is interesting. AFAIK the actual CV waiting process should be releasing the mutex (since that would block out any further progress in any case) but in general signal handlers can be processed at any thread and if we happen to be in the moment between entering the CV::wait and the time that the mu is released, we could still see this deadlock. Maybe we need to investigate mutex-free shutdown or waiting.

A workaround is to have the signal handling function do the actual work in a new detached thread.

A workaround is to have the signal handling function do the actual work in a new detached thread.

Note that in general, even for libc, you can't use arbitrary library functions inside signal handlers. For example, Linux only supports the use of certain standard functions: http://manpages.ubuntu.com/manpages/bionic/man7/signal-safety.7.html . You should just assume that all gRPC functions are not async-signal-safe. If we find something that is async-signal-safe, we can document that at some point. Otherwise, if you want to do real work via signals, the safe way to do so is to start a "signal handler thread" at the beginning of main that you join just before exit and the actual signal handler does nothing except enqueue work to that thread. Since this is by no means a gRPC-specific issue, I'd recommend closing. @veblush  I'll let you decide on closure.

Note that in general, even for libc, you can't use arbitrary library functions inside signal handlers. For example, Linux only supports the use of certain standard functions: http://manpages.ubuntu.com/manpages/bionic/man7/signal-safety.7.html . You should just assume that all gRPC functions are not async-signal-safe. If we find something that is async-signal-safe, we can document that at some point. Otherwise, if you want to do real work via signals, the safe way to do so is to start a "signal handler thread" at the beginning of main that you join just before exit and the actual signal handler does nothing except enqueue work to that thread. Since this is by no means a gRPC-specific issue, I'd recommend closing. @veblush  I'll let you decide on closure.

Closing this since calling gRPC functions in the signal handler is discouraged.

For the record, here is what I do, and it works with recent grpc (1.43.0).
bool shutdown_required = false;
void handle_signal(int sig)
{
    std::cout << "Got signal: " << strsignal(sig) << std::endl;
    shutdown_required = true;
}
void thread_check_shutdown(void)
{
    while (!shutdown_required) sleep(1);
    server->Shutdown();
}

int main(int, char *[])
{
    signal(SIGINT, handle_signal); // Interrupt from keyboard ^C
    signal(SIGQUIT, handle_signal); // Dump core
    signal(SIGTERM, handle_signal); // 'termination signal'... ??
    std::thread t(thread_check_shutdown);
    RunServer();
    t.join();
    return 0;
}

For the record, here is what I do, and it works with recent grpc (1.43.0).
bool shutdown_required = false;
void handle_signal(int sig)
{
    std::cout << "Got signal: " << strsignal(sig) << std::endl;
    shutdown_required = true;
}
void thread_check_shutdown(void)
{
    while (!shutdown_required) sleep(1);
    server->Shutdown();
}

int main(int, char *[])
{
    signal(SIGINT, handle_signal); // Interrupt from keyboard ^C
    signal(SIGQUIT, handle_signal); // Dump core
    signal(SIGTERM, handle_signal); // 'termination signal'... ??
    std::thread t(thread_check_shutdown);
    RunServer();
    t.join();
    return 0;
}

Your handler for SIGINT should just set some global variable, let's call it sigint_received . When you enter main, spawn a thread that does nothing but check the value of sigint_received (maybe sleep for 1 second between checks) and do your shutdown processing once it becomes true. You can also check for any other exit conditions that you want in that thread. And then remember to join that thread before exit'ing main. Or if possible, just do all that work in main itself, if main doesn't do any blocking operations. Those are all operations that are async-safe from within the signal handler, and then you synchronize it against the main thread with that check and the join.

Running a sort of infinite while loop seems like a very inefficient. The task can be easily achieved by conditional variables. Here is my more efficient approach...
bool shutdown_required = false;
std::mutex mutex;
std::condition_variable cv;

void handleSignal(int sig)
{
    std::cout << "Got signal: " << strsignal(sig) << std::endl;
    shutdown_required = true;
    cv.notify_one();
}
void shutdownCheckingThread(void)
{
    std::unique_lock<std::mutex> lock(mutex);
    cv.wait(lock, []()
            { return shutdown_required; });
    server->Shutdown();
}

int main(int, char *[])
{
    signal(SIGINT, handleSignal); // Interrupt from keyboard ^C
    signal(SIGQUIT, handleSignal); // Dump core
    signal(SIGTERM, handleSignal); // 'termination signal'... ??
    std::thread t(shutdownCheckingThread);
    RunServer();
    t.join();
    return 0;
}

@vjpai @orzel Running a sort of infinite while loop seems very inefficient. The task can be easily achieved by conditional variables. Here is my more efficient approach...

Hi @MohammadArik, thanks for your input.
I'm not familiar with those conditional variables. But according to cppreference, you should also acquire a mutex in handle_signal before modifying the variable. Which makes sense, your mutex was used in only one place, quite useless, isn't it ?
So i have this now, and it kinda seems to work (just did a few quick tests):
void handle_signal(int sig)
{
    std::cout << "Got signal: " << strsignal(sig) << std::endl;
    const std::lock_guard lock(mutex);
    shutdown_required = true;
    cv.notify_one();
}

(and you can remove the <std::mutex> in shutdownCheckingThread.)

@vjpai @orzel Running a sort of infinite while loop seems very inefficient. The task can be easily achieved by conditional variables. Here is my more efficient approach...

Hi @MohammadArik, thanks for your input.
I'm not familiar with those conditional variables. But according to cppreference, you should also acquire a mutex in handle_signal before modifying the variable. Which makes sense, your mutex was used in only one place, quite useless, isn't it ?
So i have this now, and it kinda seems to work (just did a few quick tests):
void handle_signal(int sig)
{
    std::cout << "Got signal: " << strsignal(sig) << std::endl;
    const std::lock_guard lock(mutex);
    shutdown_required = true;
    cv.notify_one();
}

(and you can remove the <std::mutex> in shutdownCheckingThread.)

It's actually not necessary as the could have be done without mutex. There is no scope of data-race. Using the mutex just to use condition_variable as the wait method requires a unique_lock. So not required...

It's actually not necessary as it could have be done without mutex. There is no scope of data-race. Using the mutex just to use condition_variable as the wait method requires a unique_lock. So not required...

Oh, you think ? That's because shutdown_required can only be modified in one place, and only once, anyway ?

It's actually not necessary as it could have be done without mutex. There is no scope of data-race. Using the mutex just to use condition_variable as the wait method requires a unique_lock. So not required...

Oh, you think ? That's because shutdown_required can only be modified in one place, and only once, anyway ?

I haven't responded to this thread despite being tagged since I'm not in gRPC anymore, but I feel strongly about data races so I wanted to put this out there.  The suggestion about dropping the mutex is not correct because the resulting code snippet has a race on it between the write of shutdown_required in your handle_signal code, and the read in the CV predicate (even though that has a lock). In general, any read and write of a non-atomic variable that could happen in different threads must be protected under the same lock. But also recall that mutex is not async-signal safe in general.

And, to clarify that I'm not just in the doom and gloom business, you can solve some of this using atomic. In most systems, atomic<bool> is mutex-free (I've never seen any to the contrary) and you can static_assert that in your code so that any system to the contrary will fail to build. Or if you're on C++20, you can wait on an atomic_flag which is always mutex-free (that class exists in C++11 too but not with wait functionality).

And, to clarify that I'm not just in the doom and gloom business, you can solve some of this using atomic. In most systems, atomic<bool> is mutex-free (I've never seen any to the contrary) and you can static_assert that in your code so that any system to the contrary will fail to build. Or if you're on C++20, you can wait on an atomic_flag which is always mutex-free (that class exists in C++11 too but not with wait functionality).

Yes the atomic var. with wait is better. I missed it. Thanks @vjpai

Well, my workaround is
std::signal(SIGINT, [](int) {
    std::async(std::launch::async, [] {
        if (_server) _server->Shutdown();
    }).get();
});
_server->Wait();

not pretty, but less code. Call Shutdown() from new thread.


Target box is not valid

I wrote, "K:\GAME INSTALLATIONS\Steam\steamapps\common\Kerbal Space Program\KSP_x64.exe -force-d3d12" at the target box and this is what is said. It said, "The name "K:\GAME INSTALLATIONS\Steam\steamapps\common\Kerbal Space Program\KSP_x64.exe -force-d3d12" specified in the target box is not valid.". I need help!

Move the double-quotes as follows:
"K:\GAME INSTALLATIONS\Steam\steamapps\common\Kerbal Space Program\KSP_x64.exe" -force-d3d12


Not full screen

Hello!
Unity 2021.3
Setting up FSR3 Upscaler with render size: 1835x679, display size: 2752x1019, flags: EnableHighDynamicRange, EnableDepthInverted, EnableDebugChecking
Image is small, rendered in 1835x679 and not upscaled to 2752x1019. 1/3 of image is just black.
How fix that ? thx


unsupported vhost directive  stream_caster

version : 2.0.205
description:
i wrote  something like ：
stream_caster {
enabled         on;
caster          mpegts_over_udp;
output          rtmp://<IP_ADDRESS>/live/livestream;
listen          1935;
}
in the conf ，but when i start srs , it doesn't work , and the log file says  "unsupported vhost directive  stream_caster". What's wrong?

Use SRS3.


Test query that exceeds Cassandra page size

Unfortunately, this adds a substantial amount of time to the datastore test suite.

https://ocd.appscale.com:8080/job/Datastore/429/


KeyError: 'ConvWS is already registered in conv layer'

when I train the model mask_rcnn_r50_fpn_2x_coco.py on my own custom dataset, I have some problem:
File "/.../anaconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/utils/registry.py", line 58, in _register_module
raise KeyError(f'{module_name} is already registered
KeyError: 'ConvWS is already registered in conv layer'
Has somebody knew about it? :(

Same issue here (#3249)

Same issue here (#3249)

Thanks !!

Please refer to https://github.com/open-mmlab/mmdetection/issues/3249#issuecomment-656505982 .

Please refer to #3249 (comment) .

Ok, it has been resolved, thanks!


fixed passing default currency

problem:
if we are not using USD for defualt currency, 2checkout will automatic to change currency rate, like say i pass $10 HKD, then system show $78 HKD.
if we wanna pass default currency, so that pass $10HKD, then show $10 HKD.

+1
Please merge, I believe this should be the default behavior.


Fix loading circle in IE11

Fixes https://github.com/CartoDB/onpremises/issues/500
Stroke animation does not work very well in some versions of IE11. By setting default stroke values for <circle> elements, we fix the issue of not having the loading button animated.

go!


sherpa: 2.2.12 -> 2.2.13

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/sherpa/versions.
meta.description for sherpa is: Simulation of High-Energy Reactions of PArticles in lepton-lepton, lepton-photon, photon-photon, lepton-hadron and hadron-hadron collisions
meta.homepage for sherpa is: https://gitlab.com/sherpa-team/sherpa
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.2.13 with grep in /nix/store/dfglyiy4g0z5w9mjp15qx7lwn7dnbjyp-sherpa-2.2.13
found 2.2.13 in filename of file in /nix/store/dfglyiy4g0z5w9mjp15qx7lwn7dnbjyp-sherpa-2.2.13

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
sherpa

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/dfglyiy4g0z5w9mjp15qx7lwn7dnbjyp-sherpa-2.2.13 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A sherpa https://github.com/r-ryantm/nixpkgs/archive/5480bcc2121369b7af42eca285cc53c35cc0e3c3.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/dfglyiy4g0z5w9mjp15qx7lwn7dnbjyp-sherpa-2.2.13
ls -la /nix/store/dfglyiy4g0z5w9mjp15qx7lwn7dnbjyp-sherpa-2.2.13/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

sherpa

Maintainer pings
cc @veprbl for testing.

Result of nixpkgs-review pr 209953 run on x86_64-linux 1

1 package built:

sherpa


empty doc when instantiated from pre-existing tokens

When instantiating a Doc from pre-existing tokens as explained here https://spacy.io/docs/tutorials/byo-annotations the resulting doc is empty:
doc = Doc(nlp.vocab, [('A', True), ('token', False), ('!', False)])

I can confirm.
doc = Doc(nlp.vocab, orth_and_spaces=zip(tokens, has_space))
gives
TypeError: init() got an unexpected keyword argument 'orth_and_spaces'
Also, when should the spaces list be all true or all false when it is not known?

The exception you get is because of a typo in the docs. It should be 'orths and spaces' instead of 'orth_and_spaces'.

Actually the orths_and_spaces argument was broken as well — fixed now, thanks!
I've also made the change to the docs, which is pending deployment to the site.


using cibadmin -o constraints instead of --obj_type constraints

--obj_type is a legacy option, removed in Pacemaker 1.1.12

1.0.0 is now doing an xpath query, won't merge


Russian translation

Hello, I've found this repository very useful for begginers, so I decide to translate it to Russian.
I've seen a similar issue from 2017 but it looks like this translation is kinda abandoned now.

I made a fork of this repo so I could merge it later when job would be done.
Readme file for translators asks to create an issue for a collaboration with other translators, however, it seems like there is not too much of work in here to do, so I am able to translate this all alone.

I'll be right back in here when job would be done, cheers.

I also wonder if it is okay to add a few extra links for Russian speakers somewhere below the contents part so people would have an external link to go deeper through regexps.

I guess they're kinda useless for other languages' speakers because they're directly Russian.
Example: https://learn.javascript.ru/regular-expressions-javascript

Translation is done.
The pull request following:
https://github.com/ziishaned/learn-regex/pull/143

Thanks 👍


Requests taking too long, timing out to api

Should limit the max number of heartbeats per request to 5, to prevent requests taking too long when syncing.

Fixed with v10.0.2.


Trolley 5 Didn't Come Online Thursday

Thursday (12/3) trolley 5 never showed up online.
Here's @bikeoid comment from the "New Device" thread
https://github.com/codeforgreenville/trolley-tracker/issues/105#issuecomment-161868657
Trolley 5 was last seen at city hall, so it's never obtained a GPS fix from the trolley.
And @greenlinktransit 's response
https://github.com/codeforgreenville/trolley-tracker/issues/105#issuecomment-161972819
I've alerted OPS about the new devices and have asked them to keep an eye on the tracker over the next couple weeks to see if there's a certain trolley that's working better than the other. I've also asked them to give me a heads up if a trolley ever goes out of service, is late, etc. I know that the trolley schedule is going to be weird tomorrow with the parade -- I believe we're decorating both trolleys in the morning, so we probably won't have anything to look at until after the parade is over.
Lastly, we have a new General Manager of OPS starting with us on Monday. He's young and understands technology very well. Once he gets settled in, I'd like to set up a short meeting so we can brief him on the Trolley Tracker and how he can assist.
Thanks again for everyone's hard work on this.

Since 5 is having issues, I'll comment here so we can keep date and time logs. As of this writing Trolley 1 (#5) just passed by city hall not 5-10 minutes ago and I tracked it. It came online shortly after 11:00 when the Friday lunch run was scheduled. I'll be tracking it off and on throughout the lunch run today.

Just passed city hall again right now and it's accurate still. I'll wait till the end of the shift now and see if it stays on beyond where it's supposed to.

Good news. I am only seeing one trolley on the map. @greenlinktransit does only one trolley run during lunch?

I spoke with Grant this morning and he said that only 1 trolley runs during the lunch time on Friday, so yep :)

Since 5 seems to be working fine today (knock on wood) can we confirm that it was even running last night? 6 seemed to be running a limited route which makes me wonder if 5 was even in service.

Just intercepted the Trolley on route.  Trolley 5 aka Trolley #2 on the app currently has the phone on the dash, not the overhead bin.  Seems to be working like a charm.

I was re-reading the thread and realized that there's some confusion about the trolley names.  Just so we're clear, here are the names and configurations:
Trolley #1 (app) = Trolley 6 & has the phone installed in the overhead bin
Trolley #2 (app) = Trolley 5 & has the phone installed on the dash
I took a screenshot of my phone last night at 9:30PM and it only shows Trolley #1 in service.  Not sure if that was a fluke or not....

I wouldn't rely on the numbering in the apps, it is arbitrary (you will never see a trolley 2 without a trolley 1). You can see which trolley is actually running by going to http://api.yeahthattrolley.com/DbVisualizer/
So last night Trolley 1 was actually trolley 6 and today Trolley 1 is trolley 5.
We could change the numbering of the trolleys in the apps if we need to..

Oh wow, never knew that.  Thanks for sharing.  I guess the app identifier doesn't matter as long as everyone refers to them as Trolley 5 or 6 (which you guys seem to be doing anyway).
Sorry if I confused anyone.

And I might be confused too because you said Trolley 5 is showing up as 2 in the app today. I'm guessing you are using the iOS app, and I'm actually not sure how the trolleys are numbered in that app. So maybe I need to collaborate with @austin9350 and come up with a convention for that so we're at least consistent across apps.
Either way, the DbVisualizer is going to be the most accurate reference since it shows our numbering, the license plate numbering, and Greenlink's numbering thanks to Tristan's configuration :)

Ok, so after the trolley ended its run for the day it still showed online. Grant went over there to check it out and found the phone on, but the charging indicator was showing that the phone was running on battery. We tested a lot of things, going through having it completely off (manually) and cranking the trolley, which resulted in the phone turning on. After the boot, we turned the trolley off, but the phone stayed on. He took it out of the cradle so it wouldn't have anything connected to it and it was still on. I had him double-check the trolley app settings, and both checkboxes were checked (background testing and auto-off). We did run into some phone glitches where the phone rebooted 2 times after we cranked the trolley and then before the Nexus was fully booted turned the trolley back off again, but other than that, the power stuff seems to be working as expected with exception of it not wanting to turn off when no power is supplied. I'm not sure if you can get debug info from the Tracker app itself, but it looks like it's either not executing the reboot -p option or something in the system is overriding it (for that phone). We'll have to see about number 6 tonight and see if we have something similar.

Trolley 5 was the only one seen tonight, and was working well until it dropped of the map at about 9:00.

I'm at the parade, trolleys just drove by noma. Not showing up on the app :(
Are they using the old trolleys in the parade? I see 6 is still hanging out
in the west end... So it can't have been 6. Unless they took the phone out?
On Dec 4, 2015 9:22 PM, "bikeoid"<EMAIL_ADDRESS>wrote:

Trolley 5 was the only one seen tonight, and was working well until it
dropped of the map at about 9:00.
—
Reply to this email directly or view it on GitHub
https://github.com/codeforgreenville/trolley-tracker/issues/115#issuecomment-162132475
.

Last I heard they were going to use Trolley 5 and 6 in the parade. The old trolley doesn't run anymore. And we shouldn't have taken the devices off...

Very strange. When I just looked at the app trolley 6 was by the peace
center and then it superspeeded to county square in about 30 secs. Looks
like we have other issues unless I've had one too many.
On Dec 5, 2015 6:52 PM, "greenlinktransit"<EMAIL_ADDRESS>wrote:

Last I heard they were going to use Trolley 5 and 6 in the parade. The old
trolley doesn't run anymore. And we shouldn't have taken the devices off...
—
Reply to this email directly or view it on GitHub
https://github.com/codeforgreenville/trolley-tracker/issues/115#issuecomment-162257844
.

And I just watched it zip back up main street in about a minute.
On Dec 5, 2015 7:04 PM, "Adam Hodges"<EMAIL_ADDRESS>wrote:

Very strange. When I just looked at the app trolley 6 was by the peace
center and then it superspeeded to county square in about 30 secs. Looks
like we have other issues unless I've had one too many.
On Dec 5, 2015 6:52 PM, "greenlinktransit"<EMAIL_ADDRESS>wrote:

Last I heard they were going to use Trolley 5 and 6 in the parade. The
old trolley doesn't run anymore. And we shouldn't have taken the devices
off...
—
Reply to this email directly or view it on GitHub
https://github.com/codeforgreenville/trolley-tracker/issues/115#issuecomment-162257844
.

Last night's outage on Trolley 5 started at 9:00 and lasted until 11:08.  It was probably a maintenance ignition cycle that restarted it finally.    Trolley 6 started for a short period of time after 11:00PM also; probably normal maintenance.   There was no superspeed behavior that time.
Thought: since the phone is dash mounted on Trolley 5, could it have been that the driver needed to charge their cell phone at 9:00?
That doesn't explain any of Trolley 6 behavior tonight though.

Wouldn't the tracker still work even if it was unplugged from its power source (so long as the phone doesn't run out of battery)? I took the Nexus out of the mount yesterday and it was showing on the tracker...

I pushed an update to the app the other day that makes the phone turn off
when it is unplugged (so we don't need the drivers to turn it on/off). So
the tracker won't run when the device is unplugged anymore. From the
behavior tonight though, it looks like we have some more debugging to do...
very strange.
On Sat, Dec 5, 2015 at 8:17 PM, greenlinktransit<EMAIL_ADDRESS>wrote:

Wouldn't the tracker still work even if it was unplugged from its power
source (so long as the phone doesn't run out of battery)? I took the Nexus
out of the mount yesterday and it was showing on the tracker...
—
Reply to this email directly or view it on GitHub
https://github.com/codeforgreenville/trolley-tracker/issues/115#issuecomment-162261711
.

Closing issue. Phones seem to be behaving correctly. Will create a new one if issues arise again.


Add fmap . foo = fmap foo

Does it work for map? Other functions? Anything taking a first arg function?

These don't look equivalent to me, what might the type of foo be?

You're right. Not exactly sure what I was thinking...


Auto-track the dungeon reward in Keysanity mode

PKR noticed during her stream today that when Keysanity is on and we didn't previously know the reward for a dungeon on the way in, we have to tell Tracker to track it manually, after beating the boss. This was tough today because Tracker wasn't immediately hearing the distinction between which pendant it was. Pink suggested that Tracker could look up which reward it was and auto-mark it.
This would also eliminate the need to check your menu after an unknown crystal drops, to see if it's blue or red, for better or worse.

Yeah, this is something I've had on my mind for a while. tbh, I'd like to get it to where it can be 100% fully autotracked eventually, though maybe that should be behind settings.


keep screen on if screen flashlight is opened

Sorry for creating this pull request without asking and directly in main, but I think this is a bit like a bug. I don't know why Android Studio added the other layout_constraint attributes, but it should work with this too.

That's fine, thanks!


Source map don't refresh after source change/save & node restart.  Attaching/re-attaching to Meteor.js server (meteor debug)

VSCode Version:  1.1.1
OS Version:  Linux Mint 14 64bit

Steps to Reproduce:

Start any meteor application via "meteor debug"
When node pauses, attached debugger
{
"name": "Attach Server",
"type": "node",
"request": "attach",
"port": 5858,
"address": "<IP_ADDRESS>",
"restart": true,
"sourceMaps": true,
"outDir": null,
"localRoot": "${workspaceRoot}",
"remoteRoot": null
},
The program pauses for debugging perfectly..
Add, remove or change any line of source or even change location of debugger statement and save.
detach debugger.
Break out of meteor instance (ctrl-c).
Start meteor via "meteor debug" (#1 above)
Attach debugger (#2 above)

ISSUE:
9. The program WILL pause at the new debugger location and correctly run the code changes, however the source map shows the source before modification (obviously making debugging impossible).  To correct and get the source map recreated/updated I need to closing VSCode and re-starting, then re-attaching the debugger.
Side Issue:  The 'F9' debug breaks don't work at all when attaching to meteor application line above, I have to use 'debugger' statements.  It'd be so much more convenient use pause with F9 breaks.. F9 works just fine when launching a straight node application, not sure what the difference is or if I'm doing something wrong?
BTW, VSCode kicks ass, thanks for building this, it's so fast and nice to work with.. I've been using Webstorm for node/meteor for years, I switched, the speed of the application is night & day (debugging is where is really hit home though (except for having to type 'debugger' all over :)).

@johnf76 Since I do not (yet) have any experience with debugging meteor with VS Code, I could only speculate what the problem might be (and I will stay away from that until I know more details).
(BTW, a quick Internet search showed that debugging meteor server side is possible with VS Code: https://forums.meteor.com/t/using-visual-studio-code-for-meteor-development/21058)
First some facts about node debugging in VS Code:

VS Code itself doesn't do anything with source maps; it is completely ignorant about them and sees them only as files (if they are not filtered anyway). So restarting VS Code cannot not 'recreate' or 'update' source maps. So if you are seeing this behaviour there must be something else going on that I'm not aware of.
the node.js debugging extension of VS Code ('node-debug') manages source maps (besides communicating to the node runtime). Node-debug is a separate process that is started for every debug session that is for every 'launch' or 'attach' (A VS Code debug session is indicated through the orange coloured status bar). Node-debug tries to locate the source maps and caches them until the session ends. So if you 'attach' to meteor and then stop the session, all cached state is gone. The next 'attach' tries to locate the source maps again. So debug sessions are isolated from each other. However, if the underlying node runtime continues to run across session, it could very well keep some state across session.

What does step 6 ("Break out of meteor instance (ctrl-c)") from above mean? Does it kill the underlying node.js?

@weinand Thanks for the quick response and information.
Regarding being able to use VSCode for server side debugging, yes, I am successfully debugging meteor applications and it works very well for the most part, I apologize I didn't explain that well.
From what I notice (and reading your bullet points), it seems like maybe the cache is persisting somehow?   When I'm debugging (both node in debug mode & vscode attached), I detach the debugger, then kill the node process and restart (meteor rebuilds the application and runs  "node /path/to/my/app.js debug").  From that point only re-attaching the VSCode debugger after closing & restarting VSCode will have the code changes reflected.
Regarding #6, yes, running "meteor debug" basically builds the applications then executes "node /path/to/my/app.js debug", for example below is the process, the screen wrapping makes it kind of hard to read.  When breaking out (ctrl-c), it's just killing the node process.
/home/john/.meteor/packages/meteor-tool/.1.3.2_4.10vjklo++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/node /home/john/.meteor/packages/meteor-tool/.1.3.2_4.10vjklo++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/tools/index.js debug
Also, one thing to note which realized I didn't mention & don't know if it could be part of the issue, meteor runs an old version of node (v0.10.43).  Their next release will be updating to v4+ (don't know the exact version).
Thanks,
John

@johnf76 since I'm the author of node-debug, I'm pretty sure that no cache is persisted between debug sessions ;-)
Yes, node v0.10.43 is indeed very old but I don't think that is the source of your problem.
So let's analyse what you said about the initial problem:
"the source map shows the source before modification"
A regular source map is a mapping between a generated JavaScript file and one or more source files that got transpiled into the generated JavaScript.
If you have edited the source without updating the source maps, the mapping will be wrong (wrong character locations), but the paths in the maps still point to the correct source so you will see the edited source after the modification.
Only a source map with "inlined source" can lead to the issue that you are seeing: "the source map shows the source before modification". In this case the original source files are inlined into the source maps when the source map is generated. In this case the mapping and the source are always in synch but they only reflect what's being executed if the source map has been regenerated after you have edited the source.
Could you please try this:

if VS Code shows "the source before modification" can you verify that the editor header says something like "content from inlined source". If it does we can be sure that meteor is using source maps with inlined source.
try to locate the source maps on disk. One way to find them is to look into the generated JavaScript. At the end of the file should be a path that points to the location of the source map.
Verify that the source map gets updated when you edit the source and the generated JavaScript is produced. If I understand your steps from above correctly, your have to restart meteor for this.
if you cannot find the source maps on disk it could be that the source maps are inlined into the generated JavaScript files. In this case there is no file path at the end of the JavaScript but a long data URL containing the the source maps in base64 encoding.

Thanks @weinand, I have verified exactly as you stated.  It does show "inlined content from source map" in the header as you stated.  I was able to locate the source map and verified that the "app.js.map" was specified in the node source on the last line.

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect $ meteor debug
[[[[[ /media/john/ssd_storage/dev/meteor/mirioncollect ]]]]]

=> Started proxy.
=> Started MongoDB.
   Starting your app                         /
Your application is now paused and ready for debugging!

To debug the server process using a graphical debugging interface,
visit this URL in your web browser:
http://localhost:8080/debug?port=5858

I20160602-23:38:20.154(-7)? Kadira: completed instrumenting the app
Paused at /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app/app.js:1926

Last line of /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app/app.js
//# sourceMappingURL=app.js.map
Verifying the source map is recreated:

ls of the app & source map while paused:

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ ls -lt *
-r--r--r-- 1 john john 6221439 Jun  2 23:37 app.js
-r--r--r-- 1 john john 3064206 Jun  2 23:37 app.js.map

ls after updating source, meteor detected changes and rebuilt the application and restarted itself.

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ ls -lt *
-r--r--r-- 1 john john 6221566 Jun  2 23:41 app.js
-r--r--r-- 1 john john 3064230 Jun  2 23:41 app.js.map
john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $

I stopped the debugger, and re-attached, it paused at the new debugger line, however as reported, it's showing the source prior to the change.  I can make several changes and stop/restarts of the meteor application and VSCode debugger will only show the original source from when the debugger was initially attached.
Also, just to mention for completeness, if I completely stop the meteor process (break out of "meteor debug" which runs "node debug") and change source, then restart it via "meteor debug" (vs just changing and saving the source in which meteor (if running) catches the source change and rebuilds automatically as shown above).  It actually deletes the "app" directory, then recreates is and generates the new app.js & app.js.map files.   The behaviour with VSCode is the same either way, but wanted to mention just in case there might be something to it.

ls while paused at a debugger line.

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ ls -lt *
-r--r--r-- 1 john john 6221439 Jun  2 23:31 app.js
-r--r--r-- 1 john john 3064206 Jun  2 23:31 app.js.map

I broke out of meteor, added a line to change the source, then restarted via meteor debug.  I stayed in path at did ls after it restarted and nothing shows.  probably a file system thing since the path I was in is now deleted, but since re-created:

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ ls -lt *
ls: cannot access *: No such file or directory

I cd back into the same path and I can list the updated files.

john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ cd /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app
john@HomeOffice /media/john/ssd_storage/dev/meteor/mirioncollect/.meteor/local/build/programs/server/app $ ls -lt *
-r--r--r-- 1 john john 6221439 Jun  2 23:37 app.js
-r--r--r-- 1 john john 3064206 Jun  2 23:37 app.js.map

Also, just a quick side question, should the F9 break statement work when attaching and debugging a node app?  I've found when attaching they don't work, but debugger statements.
If there's anything else I can help with please let me know, thanks for your help!

@johnf76 thanks for this excellent and detailed investigation. That made things clearer and sparked my interest to install meteor and play with it. I could easily reproduce the problem and it is not a caching problem of node-debug, but seems to be a bug in VSCode. The correct inlined source contents is fetched, but the old content is shown. Fix will appear in Alpha next week.
Breakpoints: in theory it should be possible to use breakpoints instead of debugger statements. But after analysing the generated sourcemaps and meteor's bootstrap code, I realized that this whole setup is highly adapted to the Chrome Dev tools. Making it work in VSCode requires quite some work.
Could you get breakpoints to work in node-inspector? I couldn't either.

Thank you for you help @weinand, much appreciated!  I just tried using breakpoints in the chrome node-inspector, same here, breaks do not work.  I don't understand enough about how it all works, is the break line issue more of a problem with the generated source maps?  Is something to possibly report as an issue w/ Meteor or is more of an item that can only be enhanced to work on the node-inspector / VSCode end?  The debugger statements work, so it's not a big deal, but it is convenient to not have to type debugger; all over the place :)
Not quite the place for asking, but curious since you played with it for a few, what are your initial thoughts of Meteor?  Just curious if/what frameworks you or others on the team use for apps or if it's mainly straight TypeScript/JS and grunt/webpack/etc.  The biggest issue for me so far is that I really want to use TypeScript and it's not a trivial task to setup with Meteor & React, dynamic types is JS just don't feel right.  :)
Anyway, thank you again, I'm looking forward to the update.

@johnf76 thanks for trying the breakpoints with node-inspector. This confirms that the Meteor generated source maps are somewhat unusual. So it would be great if you could report an issue w/ Meteor to get at least their opinion on that matter.
I did a very superficial exploration of Meteor, so I do not yet have deep insights. Meteor seems to be very smart and tries to help with an edit/compile/debug/go workflow. I did not fully understand what they do, but one thing that surprised me was that I saw 5 threads in the VS Code node debugger. Yes, I implemented the support for multiple threads in node-debug but I never saw any node.js based system making use of this.
The problem with all this magic is that it is sometimes a bit tricky to add other technologies (e.g. TypeScript) to this. So Meteor watches for file changes (edits) and builds the application, but how to integrate the TypeScript transpiler into this build process requires some insights that I do not yet have.

@johnf76 VS Code alpha has the fix now.


Artifacts that are not tar archives?

Many thanks for this life-saving package!
I'm trying to add artifacts that are not tar archives or compressed files (i am not the author of the artifacts, so can't change them). But trying to add such artifacts gives me the error
tar: Error opening archive: Unrecognized archive format

What's the appropriate syntax?

Unfortunately, artifacts can only be tarballs with the following extensions: https://github.com/JuliaLang/Pkg.jl/blob/8cbd11723f27ce2feef229aaf944924ab355d864/src/PlatformEngines.jl#L470

Yes, you might want to check out https://github.com/oxinabox/DataDeps.jl for downloading non-tar archives or files instead.


costomizing selectator plugin

Hi, I use selectator plugin and I wanted to say thank you. I have a question for you.
I want that user can select at last 4 items in multi select mode. How can I do that?
Thank you very much for answering my question.

Hashem

This is beyond the scope of the plugin, but could probably be done in some sort of validator


Some clarification on routes and actions

Hi.. @Gladhon in one of your comments you mentioned that we need to have two actions "First one is your default view, with your layout and so on. And in it theres just a xeditableFormMapper"
Can you elaborate more on the first action in which default view and layout will be covered.
I am having two actions 1) showAction and 2)xeditAction and one Twig template (edit.html.twig)

showAction:-

` /**

@Route("/actions/test/{id}", name="action_test")
*/
public function showAction($id,Request $request){
$action = new Action();
$factory = $this->get('ibrows_xeditable.mapper.factory');
$xeditableFormMapper = $factory->createFormFromRequest(
'action_xedit', //target route where data would be sent after submit
array('action' => $action->getId()), // parameters  for the target route
$request, // request to get information about the current view, to find forward paramters
new ActionType(),  // a form type with a name and a firstName field
$action, // form data for the form type
array('validation_groups' => array('edit_action')) // form options for the form type
);
return $this->render('action/edit.html.twig', array(
'xeditableFormMapper' => $xeditableFormMapper,
'action' => $action,
));
}`
and 2) xeditAction:-

`/**

@Route("/actions/{action}/xedit", name="action_xedit")

@param Action $action

@param Request $request

@return Response|\Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response|void
*/
public function xeditAction(Action $action,Request $request){
$factory = $this->get('ibrows_xeditable.mapper.factory');
$xeditableFormMapper = $factory->createFormFromRequest(
'action_xedit',
// array('id' => $action->getId()),
array('action' => $action->getId()),
$request,
new ActionType(),
$action
);
if ($request->isMethod('POST')) {
if (($response = $xeditableFormMapper->handleRequest($request)) instanceof Response) {
return $response;
}
$em = $this‐>getManagerForClass($action);
$em‐>persist($action);
$em‐>flush();
return $this‐>redirectToReferer();
}
return new Response($xeditableFormMapper->renderXeditable($request->get('path')));
}
}`

and in my Twig template:-
`
{% extends 'base.html.twig' %}
{% block body %}
{{ xedit_inline_render(xeditableFormMapper, 'actionDescription', {'data-emptytext': 'actionDescription'|trans}) }}
{% endblock %}`
Now when i visit actions/test/1 I can only see a blank page with the following html:-

and if I visit actions/1/xedit it throws an error saying that The controller must return a response (Object(Symfony\Component\BrowserKit\Response) given).
So first please guide me what i am doing wrong in these actions, then what route should I visit from the above two controllers..
Many thanks

maybe the javascript is not loaded or failed, like explainded in

Include JS-Lib and CSS Files

can you check that ?


Since Unity 5.3.4p2 UI canvas is not displayed

Tested with sample scene and cardboard version 0.7.0 and 0.7.2. Until the Unity version 5.3.4p1 is working fine. I've also tested with version 5.3.4p4 and not working.
Since the p2 version, unity reintroduced the particles batching, so I'm stuck in the latest versions of unity or else I get very low framerates. Is there any workaround to fix this?
Regards.

I did some testing with just using a simple two-camera setup, one pointed at a uGUI Canvas, and rendering to a target RenderTexture, which is then applied to a Plane object. The second camera is pointed at the Plane.  The canvas is not showing up in the RenderTexture at all, which seems to be the root cause of the issue.
We use this "render to RenderTexture, display it on a mesh" technique to do distortion correction, so that's why you see the issue.  There must be a regression in Unity, or perhaps there are changes to how we have to render to a texture in order for uGUI to work.  I don't see any hints about this in their release notes, so it might be a Unity bug.

Also came across this issue. So far it has been an issue from 5.3.4p2+ for me.

You can also get the issue to not happen by setting Distortion to None.  In either case, Cardboard is not in the render path, so this problem does not surface.

Still happening in unity 5.3.4p5. I have found this reported in unity issue tracker related to world space canvas and rendertexture. It may be related to this problem.
https://issuetracker.unity3d.com/issues/ui-elements-arent-rendered-to-rendertexture

Yes. It appears to be unrelated to Cardboard but that deeper UI elements on
render textures bug.
On Wed, Apr 27, 2016 at 9:48 AM, KuRouZu<EMAIL_ADDRESS>wrote:

Still happening in unity 5.3.4p5. I have found this reported in unity
issue tracker related to world space canvas and rendertexture. It may be
related to this problem.
https://issuetracker.unity3d.com/issues/ui-elements-arent-rendered-to-rendertexture
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/googlesamples/cardboard-unity/issues/211#issuecomment-215144772

Confirmed to be happening still in 5.3.5f1.
For those that are still having trouble with this, I kind of found a workaround.
I duplicated the 2 cameras (eyes) and removed the GvrEye Script on both, enabled them, set the culling mask to WorldUI (a custom layer) and Depth to 100.
On the GvrPostRender Script, I changed the depth to 99 instead of 100. This allows me to render the World canvas on top everything.
As my world canvas was used to show some HUD elements, it worked perfectly. Of course, you don't get any distortion on the canvas, but, I used the Curved UI plugin and it did the trick for me.
Let's hope Unity priorize this issue and gets resolved soon.

Unity have said this is fixed in 5.3.6... now just need them to release that!
https://issuetracker.unity3d.com/issues/world-space-canvas-arent-rendered-to-render-texture
(Note, issue 790264 was closed as a duplicate of 795880 above)


Notify of authentication problems

tradeTokenForSession function callback wasn't called on token request error, and user wasn't noticed of authentication errors on startup. The notification was shown only one time after extenstion installation.
It fixes notifications supposed to be shown at extension startup. But if something goes wrong with authentication while using extension, user won't be noticed about that. It's possible to implement notification on 'now playing' and 'scrobble' auth errors, but I can't find a proper way to notify user. I have 2 options:

Show same notifications as ones are shown at startup. It might be annoying (so we can show one notification per user session).
Show an auth error icon in omnibar. It's good to attract user attention, but it's need to implement navigation to LastFM auth page by clicking on the icon. I have no idea how to do that.

Good catch!
I agree with changing the icon. The implementation shouldn't be that hard. See pageAction.js, where icons are defined. You basically need to add another function like setAuthFailed which would set up the right icon and popup. The popup may then contain the message about the need to reauthenticate and maybe a link to settings page. I wouldn't authenticate users directly from the popup as it is unloaded and destroyed once it loses focus.

I can create a new svg icon if needed.Maybe something like this:

or some other variation.


How to Share NG Bootstrap and other Components Across the Application

Question
I am building a out demo to present to our team and have chosen Single SPA for an initial test run.
Currently I have 3 Angular Apps that all use NG Bootstrap and several other custom components (models, popovers, tooltips, etc...). What is the recommended way to share bootstrap, it's components, and the custom components across a Micro FE using Angular and Single SPA?
Everything was generated with the Single SPA CLI.
Setup:
{
      "imports": {
        "@dashboard": "//localhost:4200/main.js",
        "@detail": "//localhost:4201/main.js",
        "@login": "//localhost:4202/main.js",
        "@root-config": "//localhost:9000/enki-root-config.js"
      }
    }

Environment

Libs:
- @angular/core version: 9.1.1
- single-spa-angular version: 4.3.2

You can share all packages that you want via the systemjs-impormap, even Angular packages and ng-bootstrap:
{
  "imports": {
    "@ng-bootstrap/ng-bootstrap": "https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>
    "single-spa"<EMAIL_ADDRESS>    "single-spa-angular/internals"<EMAIL_ADDRESS>    "single-spa-angular"<EMAIL_ADDRESS>    "rxjs"<EMAIL_ADDRESS>    "rxjs/operators": "https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>
    "@angular/core": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/compiler": "https://unpkg.com/<EMAIL_ADDRESS>
    "@angular/common": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/common/http": "https://unpkg.com/<EMAIL_ADDRESS>
    "@angular/platform-browser-dynamic": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/platform-browser": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/platform-browser/animations": "https://unpkg.com/<EMAIL_ADDRESS>
    "@angular/forms": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/router": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/animations": "https://unpkg.com/<EMAIL_ADDRESS>    "@angular/animations/browser": "https://unpkg.com/<EMAIL_ADDRESS>  }
}

Also you have to add all "sharable" package to Webpack's config.externals, something like that:
const singleSpaAngularWebpack = require('single-spa-angular/lib/webpack').default;

module.exports = (config, options) => {
  const singleSpaWebpackConfig = singleSpaAngularWebpack(config, options);

  singleSpaWebpackConfig.externals = [
    /^single-spa$/,
    /^single-spa-angular$/,

    /^bootstrap$/,
    /^@ng-bootstrap\/ng-bootstrap$/,

    /^rxjs$/,
    /^rxjs\/operators$/,

    // angular
    /^@angular\/core$/,
    /^@angular\/compiler$/,
    /^@angular\/common$/,
    /^@angular\/common\/http$/,
    /^@angular\/forms$/,
    /^@angular\/router$/,
    /^@angular\/animations$/,
    /^@angular\/animations\/browser/,
    /^@angular\/platform-browser$/,
    /^@angular\/platform-browser-dynamic$/,
    /^@angular\/platform-browser\/animations$/,
    /^zone\.js$/
  ];

  return singleSpaWebpackConfig;
};

And that what you'll have, notice all packages are loaded by SystemJS (Angular, single-spa and ng-bootstrap). Buttons are ngbButtons:

@arturovt did you have to turn off Ivy compiler in order for the sharing of dependencies to work? Or does it work even with Ivy?

It works with Ivy. The main problem is that those bundles, that are coming from jsdelivr or unpkg, are not optimized by the Angular compiler.

I thought the versions published on npm didn't include the POST_R3 functions?

You're right, I have forgotten to check the tsconfig, Ivy is explicitly disabled there, so it works with View Engine in the above example.
Ivy packages are possible to share from local node_modules, but not from CDN.


feat: add android proguard rules need warning

Description

Add Android code shrinking and obfuscation warning

Testing required outside of automated testing?

[x] Not Applicable

Screenshots (if appropriate):

[x] Not Applicable

Rollback / Rollforward Procedure

[x] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

:tada: This PR is included in version 1.134.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Feature Request] Add support for Copilot chat

The GitHub Copilot Nightly extension now has support for GitHub Copilot chat private beta. It would be great if this could be added to copilot.el.

copilot.el is based on https://github.com/github/copilot.vim.
I will add this feature once it becomes available in copilot.vim.

Thanks for the great work on this!  Was about to ask the same thing.


fix(clustering) missing field in wrpc proto

service.proto misses "enabled".
It may relate to wRPC DP/CP flaky tests.

Could you describe the details about that flaky test and the relationship of this PR?

Could you describe the details about that flaky test and the relationship of this PR?

The proto file used by the config sync service misses a field, and that flaky test is about config sync.


How to add a new news or blog?

Now there are a few fixed, and the list page does not change after tinacms is modified

Hi @DreamPWJ, you can modify the posts list by adding/removing the .mdx files from the posts/ directory. Tina CMS can be used only to edit a single post, but not the list of them


Remove emergency publish event

This event is not being referenced anywhere in Publisher or Panopticon.
The code appears to have been copied over from Publisher in May 2012,
and it is not being used in the UI or anywhere else. We remove it entirely
to avoid future confusion around this event.

I've checked the apps that reference content_models and this looks fine :+1:


Requirement of id2 and compose for both vertical and horizontal morphisms for Double Category Instance

The current Catlab code raises an error if id2H, id2V, composeH and composeV are not defined for both horizontal and vertical morphism classes.
Example:
For this instance:
@instance DoubleCategory(NeuralNetDom, NeuralNet, Discrete, SquareDiagram)

The following error is raised:
ERROR: LoadError: Method id2V(f::NeuralNet) not implemented in mod instance

This issue should no longer be relevant once the GAT for double categories has been refactored (now in progress).


where is docker-images ?

bujupah/yet-another-renderer:lates is not found .
And I will rebuild the image, it occured the err: pull node:alpine3.19 timeout.

Hi @Alex-wwei,
Thanks for raising this 😀
I somehow forgot to update and push the docker image from my local to docker registry...
I will do this by end of day.

Docker registry update.


US 01.05.01

As a meal planner, I want to see a list of my ingredients.
Acceptance criteria

Acceptance criteria added by Fan Zhu


Update the attribute names & table name in camel case

          Updated @ankushdharkar, now we have all the keynames in `camelCase`

Originally posted by @vikhyat187 in https://github.com/Real-Dev-Squad/feature-flag-backend/issues/55#issuecomment-1627864184

This has been covered in https://github.com/Real-Dev-Squad/feature-flag-backend/pull/78


Docs + Misc Kubos Work

Updated repo to v1.23
Updated readme/other docs a bunch

@jessehamner this PR could use your editorial eye
@kyleparrott take a look at sdk-reference.md and let me know if you think we should add any other commands/details


Excessive memory usage - refreshing feeds on start

There are two ways to update your feeds. The first is to start newsbeuter normally, and press 'R' to update all feeds. For me, that works okays, with memory usage of ~66Mbytes.
The second way is to start with "newsbeuter -r", to refresh all feeds at startup. The refreshing works okay, but my memory usage quickly balloons up to ~1.2Gbytes. Not good.
I first noticed this problem perhaps 1-2months ago. I have 270 feeds in my urls file.
You can see a graph of this excessive memory usage here, as it forces my laptop into swap usage :- http://i.imgur.com/EsAjwmP.png
Obviously, I now avoid the memory problem by refreshing my feeds manually from within newsbeuter. But it is still abnormal behavior, a bug.

 Can you compile from Git and check?

Distro: Debian unstable (sid)

Debian maintainer here, I assume you're using the official version from the debian repos.
If so, unless there is a regression I missed, it shouldn't be #119. I backported the fix for it a while back(relevant patch file).

FWIW, I tried this with the bceeb706 (current HEAD). Config is the same with save for this line:
define-filter "unread_only" "unread = "yes""

It was changed line this in order to make Newsbeuter 2.10 start:
define-filter "unread_only" "unread = \"yes\""

Got 191 URLs and three testing query feeds:
"query:Unread:unread = \"yes\""
"query:Unread Articles:unread = \"yes\" and tags !# \"foo\" and tags !# \"bar\""
"query:Unread Articles (this year):unread = \"yes\" and tags !# \"foo\" and tags !# \"bar\" and (age between 0:365)"

Tried -r and R, both without cache.db and with one—no difference: in all four cases memory usage crawled to 82M and stopped there.
Doesn't prove anything, but at least gives us some confidence that this bug isn't widespread.

FWIW, I tried this with the bceeb706 (current HEAD). Config is the same with save for this line:
define-filter "unread_only" "unread = "yes""

It was changed line this in order to make Newsbeuter 2.10 start:
define-filter "unread_only" "unread = \"yes\""

Got 191 URLs and three testing query feeds:
"query:Unread:unread = \"yes\""
"query:Unread Articles:unread = \"yes\" and tags !# \"foo\" and tags !# \"bar\""
"query:Unread Articles (this year):unread = \"yes\" and tags !# \"foo\" and tags !# \"bar\" and (age between 0:365)"

Tried -r and R, both without cache.db and with one—no difference: in all four cases memory usage crawled to 82M and stopped there.
Doesn't prove anything, but at least gives us some confidence that this bug isn't widespread.

My version was 2.9-5 from the debian repos. Now I have just compiled and installed from git. But the problem remains unchanged - memory still increases by +1.1Gbytes. Removing the "define-filter" line from config had no affect either.
I will start messing with my config + urls to track down some kind of trigger or cause.

version

newsbeuter 2.10-bcee
System: Linux 4.6.0-1-amd64 (x86_64)
Compiler: g++ 6.3.0 20161229
ncurses: ncurses 6.0.20161126 (compiled with 6.0)
libcurl: libcurl/7.51.0 GnuTLS/3.5.7 zlib/1.2.8 libssh2/1.7.0 nghttp2/1.18.0 librtmp/2.3 (compiled with 7.51.0)
SQLite: 3.15.2 (compiled with 3.15.2)
libxml2: compiled with 2.9.4

My version was 2.9-5 from the debian repos. Now I have just compiled and installed from git. But the problem remains unchanged - memory still increases by +1.1Gbytes. Removing the "define-filter" line from config had no affect either.
I will start messing with my config + urls to track down some kind of trigger or cause.

version

newsbeuter 2.10-bcee
System: Linux 4.6.0-1-amd64 (x86_64)
Compiler: g++ 6.3.0 20161229
ncurses: ncurses 6.0.20161126 (compiled with 6.0)
libcurl: libcurl/7.51.0 GnuTLS/3.5.7 zlib/1.2.8 libssh2/1.7.0 nghttp2/1.18.0 librtmp/2.3 (compiled with 7.51.0)
SQLite: 3.15.2 (compiled with 3.15.2)
libxml2: compiled with 2.9.4

#Test.1
I tested the memory-usage of newsbeuter-git again, but varying the number of urls and reload-threads. Each time, the cache.db file was deleted first.

urls
reload-threads
memory

290
1
690

290
2
830

290
4
1000

290
8
1100

150
8
640

50
8
289

#Test.2
I reverted back to my original cache/config/urls, and tested memory usage for recent versions of newsbeuter from the debian snapshot repos. It seems the memory problem was consistently better for version 2.9-3+b2, altho still excessive.

Version
Usage

2.9-3+b2
~591Mb

2.9-4
~1200Mb

2.9-5
~1200Mb

Hmm, there's no 2.9-3+b2 on sources.debian.net. @tsipinakis, is there a way to find out what's the difference between 2.9-3+b2 and 2.9-4?
@phleagol, since you've got the build environment ready—is building with either another compiler (Clang?) or different version of GCC (5.x, not 6.x or 7.x) change anything? This is a blind shot, but who knows. (You can build with another compiler like this: CXX=clang++ make)

sources.debian.net only shows the latest version for each debian release, to find older versions you need to go to snapshot.debian.org.
Each debian version of newsbeuter has a full copy of the changelog(2.9-4 changelog, 2.9-3 tarball).

Hmm. None of those patches have anything to do with memory =\
Anyone willing to run a git bisect between 2.9 and current master to see what commit, exactly, introduced the issue? (Another approach is to try Debian patches one by one, but git bisect is more automated so should take less time.) Something like this:
$ make distclean
$ git checkout r2.9
$ make
$ # Running Newsbeuter with separate cache file.
$ # You SHOULDN'T see an excessive memory usage
$ rm -f cache.db && ./newsbeuter -c cache.db
$ git bisect start
$ git bisect good
$ make distclean
$ git bisect bad master
$ # This is Step X.
$ # At this point Git will pick a commit and checkout it
$ # Your job is to run Newsbeuter again and check how much memory is used
$ # We delete cache.db so that different checks don't trip each other.
$ # We always run distclean afterwards so that different builds don't trip each other, too.
$ make && rm -f cache.db && ./newsbeuter -c cache.db ; make distclean
$ # Run this command only if memory usage is normal
$ git bisect good
$ # ...otherwise, run this command:
$ git bisect bad
$ # If Git says there's still commits to check, go to Step X.
$ # Otherwise post here mentioning the commit that Git found.

(I'd rather not spend time downloading Debian VM image and upgrading it to Sid in order to get the same environment you already have, so help in pinning this down so that I can work on it locally is appreciated.)

So I built newbeuter-git with "CXX=clang make". It worked fine, but the memory usage was the same, no different.
I tested some more versions from debian snapshots, going back to Jan 2014. I also tried to test versions from 2013, but snapshots wouldn't cooperate.

Version
Usage

2.7-1
~556Mb

2.8-2
~555Mb

2.9-3+b2
~591Mb

2.9-4
~1200Mb

2.9-5
~1200Mb

266 urls, reload-threads=8

With the recent upgrade to (debian) version 2.9-4, my memory problem worsened. But even prior to that, memory usage for running newsbeuter with refresh at startup was too high,  >500Mb rather that the <100Mb that you might expect on your machine.

Thanks. So much for this hypothesis, then. I'll write back when I find time to set up a VM and do bisecting.

Found the problematic patch.
Apparently I couldn't reproduce this to an easily identifiable extent because my urls file was too small, using the urls file provided above made the bug obvious.
Memory usage was stable at ~700M until I pushed 20-prevent-http-header-reset.patch which made the memory usage after 1 reload spike at ~1400MB

Tested the code at the offending commit and the one before it, but the difference is 90MB vs. 80MB, i.e. offending commit adds mere 10MB.
The patch also doesn't add anything that's obviously a leak or something. I don't get it.
This will definitely have to wait until I can set up an environment and play with this.

This revealed a bug in our remote APIs implementation, so I fixed this in master.

Automatic reload leads to huge memory consumption (1.2 G for 464 feeds):

newsbeuter -r
newsbeuter -x reload
auto-reload yes in config

Tested versions: 2.9 (Debian 9) and git HEAD from 2017-07-04 on Debian 9.
Manually reloading feeds (R) does not trigger this problem.


erl_nif.h: No such file or directory

Can you please advice how to solve this error:

mix deps.compile re2
==> re2 (compile)
Compiling c_src/re2_nif.cpp
c_src/re2_nif.cpp:5:21: fatal error: erl_nif.h: No such file or directory
#include "erl_nif.h"
^
compilation terminated.
ERROR: compile failed while processing /tmp/edeliver/myapp/builds/deps/re2: rebar_abort
** (Mix) Could not compile dependency :re2, "/root/.mix/rebar" command failed. You can recompile this dependency with "mix deps.compile re2", update it with "mix deps.update re2" or clean it with "mix deps.clean re2"

I got this error when I try to deploy my elixir app using edeliver, I am on:
# elixir -v
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false]

Elixir 1.3.2

Is it possible that your Erlang installation doesn't have erl_nif.h?
$ file $(erl -noshell -eval 'io:format("~s~n", [filename:join([lists:concat([code:root_dir(), "/erts-", erlang:system_info(version)]), "include", "erl_nif.h"])]), init:stop(0).')

It's not the cause of the error you've encountered, but I've modified the include directive to be more correct (https://github.com/tuncer/re2/commit/f29f5d3750710399ae85c769f70bbd7c884c2e7d), because we obviously are not looking for it in re2/c_src. The reason it was "erl_nif.h" is because it's copied verbatim from the nif documenation (see https://github.com/erlang/otp/pull/1171 for a fix).

I am sorry, but what does that 'file' command do? I've tried it, I got a prompt >

It runs file on erl_nif.h, where the path to erl_nif.h is retrieved by invoking erl, printing the path, and exiting the vm. I don't know why it would start the Erlang shell and wait for input.
Does it make a difference if you run with -noinput (which means no shell and no waiting for input) instead -noshell?
erl -noinput -eval 'io:format("~s~n", [filename:join([lists:concat([code:root_dir(), "/erts-", erlang:system_info(version)]), "include", "erl_nif.h"])]), init:stop(0).'

If you still land in a shell, can you run
filename:join([lists:concat([code:root_dir(), "/erts-", erlang:system_info(version)]), "include", "erl_nif.h"]).

and
file:read_file_info(filename:join([lists:concat([code:root_dir(), "/erts-", erlang:system_info(version)]), "include", "erl_nif.h"])).

?

using -noinput I got the path:
/usr/lib/erlang/erts-8.0/include/erl_nif.h

Does that file exist?

# cat /usr/lib/erlang/erts-8.0/include/erl_nif.h
cat: /usr/lib/erlang/erts-8.0/include/erl_nif.h: No such file or directory

How did you install Erlang? Is it possible that it's split into multiple distro packages, and there's a -dev or -devel package you might have to install?

I've used a pre-installed elixir at a DigitalOcean one click droplet.. What do you recommend? Maybe an ansible script on a fresh instance?

If it's something you can select for your droplet, and you can list the options, maybe I can help you choose one. If not, https://github.com/mtpereira/ansible-erlang looks like it should provide an up to date Erlang installation.

You will also need git and c++ to build the NIF lib.

Did you resolve the issue?

Interpreting no feedback as a sign that it has been resolved. Closing. Feel free to re-open if not.

Having some trouble compile re2 with elixir 1.4.2. Anything comes to mind? Seems like a similar issue as the above.
Compiling /re2/c_src/re2_nif.cpp
/deps/re2/c_src/re2_nif.cpp:8:10: fatal error: 're2/re2.h' file not found
#include <re2/re2.h>
         ^
1 error generated.

@sabondano, this ticket was about an incomplete Erlang/OTP installation where the NIF C headers and probably other files were missing. The error you see is unrelated, and the path /re2/c_src/re2_nif.cpp looks incomplete, as does /deps/re2/c_src/re2_nif.cpp. Seeing how re2_nif.cpp is actually processed by CXX, did you perhaps cut off the prefix before commenting and the real path doesn't look like that? Also, did you by any chance set the env var SYSTEM_RE2? If not, does deps/re2/c_src/re2/re2/re2.h exist?
If the problem persists, please open a separate ticket and don't forget to include steps to reproduce. If you can run with a higher verbosity level to log the CXX invocation, please do. You can also set the env var DEBUG_CONFIG=1 for logging the result of re2/rebar.config.script before it's used. That will reveal incorrect CXXFLAGS (e.g. -I<re2_include_dir>).

@sabondano, were you able to resolve the problem?

Yes, cleaned all deps and tried from scratch \o/ :) Thank you!


feat: add remove-authenticator command to cli

Closes: #XXX
What is the purpose of the change
Add the remove authenticator command to the node, the msg-server is already present the cmd just needed to be wired.
Testing and Verifying

start the node and run

 osmosisd tx authenticator add-authenticator SignatureVerificationAuthenticator $pubkey1 --from user1 --chain-id testing --keyring-backend test --fees 1000stake -b block -y

sleep 2

osmosisd tx authenticator add-authenticator SignatureVerificationAuthenticator $pubkey --from user1 --chain-id testing --keyring-backend test --fees 1000stake -b block -y

sleep 2

osmosisd tx authenticator add-authenticator SignatureVerificationAuthenticator $pubkey2 --from user1 --chain-id testing --keyring-backend test --fees 1000stake -b block -y

sleep 2

osmosisd tx authenticator add-authenticator SignatureVerificationAuthenticator $pubkey1 --from user1 --chain-id testing --keyring-backend test --fees 1000stake -b block -y

osmosisd q authenticator authenticators $user1 --output json | jq

sleep 2

osmosisd tx authenticator remove-authenticator 1 --from user1 --chain-id testing --keyring-backend test --fees 1000stake -b block -y

osmosisd q authenticator authenticators $user1 --output json | jq

I think you forgot to add the files where the msg is actually handled (under keeper/ maybe?)

I think you forgot to add the files where the msg is actually handled (under keeper/ maybe?)

That's already implemented in the msg server => https://github.com/osmosis-labs/osmosis/blob/bfe2e31f84a90856b93bd4fa297a9f5be6c76b43/x/authenticator/keeper/msg_server.go#L87-L105
This is just the cli command :smile:

ahh, I see. That makes sense, lol.


feat: implements resolve four in GameState API

955
Relevant issue number

Resolves #955

Please check the following

[ ] Do the tests still pass? (see Run the Tests)
[ ] Is the code formatted properly? (see Linting (Formatting))
For New Features:

[ ] Have tests been added to cover any new features or fixes?
[ ] Has the documentation been updated accordingly?

Please describe additional details for testing this change

After replaying the tests, it seems like they were failing because the 4 card was added to the scrap pile too early. With the recent changes the 4 one-off it's discarded only after the opponent correctly discards and not in failed attempts.
However, now a test fails when in non-GameState API mode, and I'm not sure why only this one is affected.


Required to fix docker.sh

docker.sh should create path based on absolute convention.

@jhryniuk Is it still relevant? Could you provide a PR with improvements, please?

@jhryniuk ping

I will take care of it on Saturday.


[WIP] Update the govuk_puppet script.

We'd like to be able to establish multiple locks at the same
time so cron jobs don't accidentally re-enable each other when
they release their own locks.

I'm going to test this in Vagrant.

vagrant@jumpbox-1:~$ govuk_puppet
govuk_puppet: lock directory /tmp/puppet-tests is not accessible

This approach looks good to me! Some thoughts:

We could probably remove -d as a command line option, I don't think it's useful except for testing.
Could the filename be automatically generated? That means we wouldn't need a -n option.
Then the option to disable could be govuk_puppet -d {reason} which makes it simpler to call.
If somebody doesn't provide a -d {reason} the script can hard exit 1, I'm ok with forcing people to supply a reason.

@alexmuller

We could probably remove -d as a command line option, I don't think it's useful except for testing.

I'd like to keep this for that very reason. When i test on my local dev environment i'd rather not hard code overridden paths and then forget to remove them on commit.

Could the filename be automatically generated? That means we wouldn't need a -n option.

Doing this would substantially change the way we wanted this to work. One of the aims in this revision was to force things to declare what was asking for the lock both for tracking and to make it possible to consistently revoke the correct lock after. So I'm going to say "no" to this.

Then the option to disable could be govuk_puppet -d {reason} which makes it simpler to call.
If somebody doesn't provide a -d {reason} the script can hard exit 1, I'm ok with forcing people to supply a reason.

After a discussion we'll update the script that call this in the old way in the puppet repo and exit hard if no reason is given.

It errors uncleanly when using disable in the old way with no reason:
vagrant@jumpbox-1:~$ govuk_puppet --disable
govuk_puppet: No explicit lock name reason was given. Using defaults.
/usr/local/bin/govuk_puppet: line 154: lock_reason: unbound variable

I don't seem to be able to get a lock or disable when running:
vagrant@jumpbox-1:~$ govuk_puppet -n foo -r bar
It still seems to run Puppet - is this the correct invocation? Not sure if my Vagrant setup is making life difficult, mind.


Numpy Support for access to mediagrains data

This PR implements numpy support for mediagrains grains in a variety of video formats, but only in py3.6+.
Job: https://www.pivotaltracker.com/story/show/168537286

Have put in first pull request, which covers the numpy access methods. The grain format conversion code will be a separate PR building on this.

Looks fine to me in general. Using bit 4 in the format word to indicate RGB/YUV for planar makes sense. I had a couple of inline comments, but nothing major.


Changes on Myspace

Hi, it seems that Myspace has changed the way its player works again. When choosing a radio station, you will also get videos now, even from YouTube which are not scrobbled. When playing one of your own mixes (= playlists) with audio-only content, they are not scrobbled either. I still use v1.38 for Opera 25 on Windows XP.

@david-sabata close? The Opera extension is dead. Long live the extension!

Yes. If there are still some issues, they should be in separate reports.


Running the example code

Hi!
I would like to try to use your software in my school project. For this project in need to make a robot arm move to a specific coordinate. After ready the wiki i wanted to try out the example code form the README file.  I ran into some issue's

So i started my virtual machine with an ubuntu 18.04 image.
I ran the required commands

mkdir build && cd build
cmake ../
make -j8
sudo make install

Then i made a new file in another directory and executed the example code from the README with the following command
sudo g++ -o mytest test.cpp

It did not comple an gave the following errors:
test.cpp: In function ‘int main()’:
test.cpp:10:66: error: invalid conversion from ‘int’ to ‘ik_node_t*’ [-fpermissive]
     struct ik_node_t* child1 = solver->node->create_child(1, root);
                                                                  ^
test.cpp:10:66: error: invalid conversion from ‘ik_node_t*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
test.cpp:11:68: error: invalid conversion from ‘int’ to ‘ik_node_t*’ [-fpermissive]
     struct ik_node_t* child2 = solver->node->create_child(2, child1);
                                                                    ^
test.cpp:11:68: error: invalid conversion from ‘ik_node_t*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
test.cpp:12:68: error: invalid conversion from ‘int’ to ‘ik_node_t*’ [-fpermissive]
     struct ik_node_t* child3 = solver->node->create_child(3, child2);
                                                                    ^
test.cpp:12:68: error: invalid conversion from ‘ik_node_t*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
test.cpp:31:15: error: ‘const struct ik_solver_interface_t’ has no member named ‘rebuild_data’; did you mean ‘rebuild’?
     ik.solver.rebuild_data(solver);
               ^~~~~~~~~~~~
               rebuild

I tried fixing it, but no succes.

Then i tried the example code form Tutorial 2.0
This gave these errors:

test.cpp: In function ‘int main()’:
test.cpp:4:5: error: ‘ik_init’ was not declared in this scope
     ik_init();
     ^~~~~~~
test.cpp:5:5: error: ‘ik_log_init’ was not declared in this scope
     ik_log_init();
     ^~~~~~~~~~~
test.cpp:8:43: error: ‘ik_uid’ was not declared in this scope
     struct ik_node* base = ik_node_create(ik_uid(0));
                                           ^~~~~~
test.cpp:8:43: note: suggested alternative: ‘ik_node’
     struct ik_node* base = ik_node_create(ik_uid(0));
                                           ^~~~~~
                                           ik_node
test.cpp:8:28: error: ‘ik_node_create’ was not declared in this scope
     struct ik_node* base = ik_node_create(ik_uid(0));
                            ^~~~~~~~~~~~~~
test.cpp:8:28: note: suggested alternative: ‘ik_node_t’
     struct ik_node* base = ik_node_create(ik_uid(0));
                            ^~~~~~~~~~~~~~
                            ik_node_t
test.cpp:9:5: error: ‘IK_INCREF’ was not declared in this scope
     IK_INCREF(base); /* Always have to take ownership of root node */
     ^~~~~~~~~

the list goes on.
I probably made a mistake while setting everything up. mabey i have to put the file i want to compile somewhere specific?
Could you tell me how i can compile one of the examples?

Hey!
The wiki is wrong, the arguments are the other way around. It should be solver->node->create_child(root, 1);
Doing the following seems to work:
#include "ik/ik.h"
int main() {
    /* do your stuff here */
}

And then compiling with:
gcc -W -c -I<path to ik>/ik/include/public -I<path to ik>/build/ik/include/public -o main.o main.c
gcc -o example -lm main.o <path to ik>/build/ik/ik.a

This should produce a binary example. Alternatively you can use cmake. Something like:
cmake_minimum_required (VERSION 2.8)
project ("example" LANGUAGES C)
find_package (IK REQUIRED)
add_executable (example "main.c")
target_link_libraries (example PRIVATE ik)

And then:
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=<path to ik>/build/ik ../
make

I recommend using the version that's on master for now, because the API for 2.0 is still fluctuating. Let me know if you have any other problems.

Hey!
Thank your for your fast response. I tried both of your suggestions, they appear to break on some undefined references.
First of all i changed the solver->node->create_child(1, root); problem for all calls like your said. Then only one error remained after running this command :  gcc -W -c -I<path to ik>/ik/include/public -I<path to ik>/build/ik/include/public -o main.o main.c
error:
main.c: In function ‘main’:
main.c:31:15: error: ‘const struct ik_solver_interface_t’ has no member named ‘rebuild_data’; did you mean ‘rebuild’?
     ik.solver.rebuild_data(solver);
               ^~~~~~~~~~~~
               rebuild

So in changed ik.solver.rebuild_data(solver); to ik.solver.rebuild(solver); Then i ran  gcc -W -c -I<path to ik>/ik/include/public -I<path to ik>/build/ik/include/public -o main.o main.c agian and got the main.o file.
Next step was this command gcc -o example -lm main.o <path to ik>/build/ik/ik.a
Unfortunately this is where it broke with this error:
<path to ik>/build/ik/ik.a(quat_static.c.o): In function `ik_quat_static_angle':
quat_static.c:(.text+0x547): undefined reference to `__acos_finite'
quat_static.c:(.text+0x55c): undefined reference to `sincos'
<path to ik>/build/ik/ik.a(quat_static.c.o): In function `ik_quat_static_angle_normalized_vectors':
quat_static.c:(.text+0x610): undefined reference to `__acos_finite'
quat_static.c:(.text+0x625): undefined reference to `sincos'
<path to ik>/build/ik/ik.a(solver_TWO_BONE.c.o): In function `ik_solver_TWO_BONE_solve':
solver_TWO_BONE.c:(.text+0x1f1): undefined reference to `__acos_finite'
solver_TWO_BONE.c:(.text+0x20c): undefined reference to `sincos'
collect2: error: ld returned 1 exit status

After this I tried your cmake suggestion. this runs smoothly until i run the make command, this gave a similar error:
[ 50%] Building C object CMakeFiles/example.dir/main.c.o
[100%] Linking C executable example
/usr/local/lib/ik.a(quat_static.c.o): In function `ik_quat_static_angle':
quat_static.c:(.text+0x547): undefined reference to `__acos_finite'
quat_static.c:(.text+0x55c): undefined reference to `sincos'
/usr/local/lib/ik.a(quat_static.c.o): In function `ik_quat_static_angle_normalized_vectors':
quat_static.c:(.text+0x610): undefined reference to `__acos_finite'
quat_static.c:(.text+0x625): undefined reference to `sincos'
/usr/local/lib/ik.a(solver_TWO_BONE.c.o): In function `ik_solver_TWO_BONE_solve':
solver_TWO_BONE.c:(.text+0x1f1): undefined reference to `__acos_finite'
solver_TWO_BONE.c:(.text+0x20c): undefined reference to `sincos'
collect2: error: ld returned 1 exit status
CMakeFiles/example.dir/build.make:95: recipe for target 'example' failed
make[2]: *** [example] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/example.dir/all' failed
make[1]: *** [CMakeFiles/example.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I take it you did not have these errors? Mabey i am using the wrong gcc or cmake version. I use gcc 7.5.0 and cmake 3.10.2
Do you know how I can solve this?

I would recommend using cmake if you can because it handles all of this for you.
But the error you're getting there has something to do with link order and how libm is being linked. Maybe try moving -lm after ik.a?
gcc -o example main.o <path to ik>/build/ik/ik.a -lm

Also note that you can use make install (and set CMAKE_INSTALL_PREFIX if you need to) to install the ik library, making it easier to link against or find from cmake using find_package(IK)


Absolute url difference between root and subfolder

I usually make my absolute urls like
echo Flight::request()->base."/route/1";

When installing it in a subfolder works correctly (I don't even set RewriteBase in the htaccess)
But when I move the application to the root folder, the resulting url has 2 slashes, so I have to change the code like
echo Flight::request()->base."route/1";

In the form action normally I use (and it works) Flight::request()->base.Flight::request(()->url.
Am I doing something wrong?
Could be similar to #193

#193


Add blockchain icons: heco moonbeam okx klaytn kcc hsc

Description

Add icons for heco moonbeam okx klaytn kcc hsc chains
Checklist

[ ] The version field in package.json is incremented following semantic versioning
[x] The box that allows repo maintainers to update this PR is checked
[x] I tested locally to make sure this feature/fix works
[x] This PR passes the Circle CI checks

@Adamj1232  @aaronbarnardsound  Hi, could you pls have a look at this PR?

Hey @chendatony31 I don't think that we will want to merge this PR. Adding an icon for every chain is not sustainable as it adds bloat to the package for every user regardless of whether they use that chain or not. We have a few select chain icons included in the package to make it easy for devs to support the most used chains out of the box.
If an app would like to include the above chains, they can configure them when initializing Onboard via the chains parameter by defining the icon.
An example with Avalanche would be:
const onboard = Web3Onboard({
  //... other init params
  chains: [
    {
      id: '0xA86A',
      token: 'AVAX',
      label: 'Avalanche',
      rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',
      icon: avalancheIconSvgString
    }
  ]
})

We are looking at creating a section in our docs where we can document examples of chain configurations with icons, so it makes it super easy for devs to copy and paste the chains they would like to support and once we have that setup, you can PR the chain icon in to the docs.


add a proper replace function in useRouter hook for redirects

I'm using Solito with expo-router. I need a way to replace a route for redirects, so that previous one is not in navigation stack and  the user can not navigate back to it.
Solito's useRouter().replace was not exhibiting this behavior. The docs do explain this limitation:

On iOS and Android, this function doesn't call actually replace(). Instead, it calls linkTo from React Navigaton.
This is because React Navigation doesn't currently offer an API to replace a current route with a URL.
If this is a big need for you, please open an issue.

Opening this issue to discuss proper way forward, as I know Solito's primary target is react-navigation not expo-router
I'm currently doing useLink().replace as an alternative.
Perhaps Solito could have a different file export solito/expo-router that handles this properly.

Solito now includes this behind an experimental flag.
https://github.com/nandorojo/solito/releases/tag/v1.1.2

nice, i'll close issue


Blackscreen issue

When i open terrafirma, it is just a blackscreen with nothing in. Pls help

:/ That's not information to try to reproduce can you at least precise :
-Which OS are you using
-Which version of OS are you using

I appear to be having the same problem as Reidkon26 it is just a black window(I'll attach a picture). I just found out though that it may be an issue with how it's displayed as the open world settings and all the stuff in the top left still work but nothing shows up. I'm using windows 8.1 pro what would be another Qt application to test?

I have the same problem and I'm using Win7. Is there a library I should install?

Im having the same issue if someone could please help me.

I had the same issue but turning off Fog of War fixed it for me, try that.

Try newest version.   This is an ANGLE problem. I compiled it differently this time.


Out_channel frequency adjustment

I was looking at the Out_channel tests and noticed something: most of the tested operations are returning unit (in contrast to In_channel where most of them return observable values).
This decreases the chance of observing sequential consistency failures about the tested Out_channel.t.
This PR therefore increases the frequency of non-unit-returning functions, pos and length in Out_channel.
It works reasonably well: focused tests repeated 10 times triggers the expected failures on Windows and macOS as expected within the first 100-200 generated test input. We should consider this as an alternative to #314.
(Note: CI is failing on trunk while compiling ppxlib due to an AST-changing PR earlier today. The Windows trunk version is however based on another branch which hasn't been updated yet AFAICS)

CI is all green (modulo the failing ppxlib errors) except for the Cygwin runs:

Here the repeating happens on each of the two halves (OK I guess)
The first one fails though, due to excessive shrinking: https://github.com/ocaml-multicore/multicoretests/actions/runs/4515900237

In conclusion, the frequency adjustment to more consistently trigger an Out_channel error seems to work. :tada:
However, a new problem of occasional excessive shrinking is surfacing (which we are also observing on Weak Hashsets).

I had also tried to see if adjusting the frequencies could help in this commit. Instead of using some objective criteria (not returning unit), I tried to favour the functions naturally conflicting. The results don’t seem so different from what you got, I think. Interesting.

(Note: … The Windows trunk version is however based on another branch which hasn't been updated yet AFAICS)

On Windows and Cygwin, something weird happens: building ppxlib fails, (as we should expect) but the test is still run?!? (the only things I can imagine would be that the VM is not properly cleaned up between runs...) As it shouldn’t build in that setting, I have no idea what is actually running :thinking: I would at least say we shouldn’t draw conclusions on what happens in those windows builds.

On Windows and Cygwin, something weird happens: building ppxlib fails, (as we should expect) but the test is still run?!?

Oh, I mistakenly thought they were based on a patched Windows/Cygwin branch (which would explain why they weren't broken by trunk's AST change.
The Lin test it is focusing on doesn't require ppxlib, so in principle it should still be runnable despite a broken ppxlib install...

Rebased on top of a freshly merged #320...

CI error summary:

one macOS install failure
one Windows trunk test not triggering
several timeouts on Cygwin/Windows/macOS due to excessive shrinking

Rebased on main and removed the 'focus commit' to see how this influences CI in general.

CI results are a mixed bag, mostly unrelated to this PR:

src/neg_tests/lin_tests_thread_conclist.exe triggered an error under Windows bytecode
src/neg_tests/stm_tests_thread_ref.exe failed to trigger on macOS 5.0
the Out_channel test failed to trigger on macOS trunk twice (for push + pull request)
Cygwin trunk part 1 timed out due to several tests taking longer
threadomain dead locked on Windows bytecode trunk twice (for push + pull request) and on Windowd 5.0
Lin DSL Weak HashSet test takes a whopping 16423.5s on Cygwin trunk part2 causing a timeout
Lin ref int64 test with Thread takes 9399.1s also on Cygwin trunk part2 causing a timeout

The second item of the above should be taken care of by #316
I'm surprised to still see two failures to trigger the Out_channel issue on macOS though...

With #316 merged I wanted to give this another spin.
I've thus

bumped the frequency count of pos and length from 2 to 3 in an attempt to trigger more consistently under macOS
merged main into the branch to reduce noise from other test failures

Now: :popcorn:

Latest CI summary:

a threadomain crash on Windows trunk and a deadlock on Windows bytecode trunk
a failure to trigger the Out_channel issue on macOS trunk
a timeout on Cygwin trunk part2 partly due to Lin ref int64 test with Thread taking 8041.6s

@shym it seems the frequency adjustment lets us trigger the issue more consistently on Windows.
macOS is however still not consistent! :grimacing:
A suggestion: we combine this PR and #314. That way we only need to disable the test on macOS. WDYT?

Sounds good! #326 is there to disable the mac test on this PR.

Great, I'll merge this then :+1:

Doh! I was too fast and missed that you wanted to merge #326 into this one :facepalm:


Speed up GLM mode

GLM mode is the fastest already but i imagine there are some speedups to be had
for example, switching to using the speedglm package instead of MASS for fitting the NB GLM might be an easy improvement

speedglm appears to be orders of magnitude faster than MASS::glm.nb() based on some preliminary testing
however, this appears to partially stem from the fact that speedglm does not iteratively estimate the overdispersion parameter $\theta$
whether this matters is unclear, so do some testing using marge2() and see if results meaningfully differ

commit 4dc10cd added a basic version of this to marge2() for testing


updated readme

updated readme to show steps on how to install dependencies and run the project locally

Please get yourself assigned to an issue before creating a PR.


chore: use ubi9

/assign @jonathankingfc
We are migrating to RHEL9, the operator seems to works fine with the new base image. Can you approve this PR?


fixes issue #4213 by applying resolution to self-contained bitmap-fon…

…ts only while nested ones have resolution 1:1 (since parent already scaled)

Hey @axldns, this is a better approach and it seems like it would maintain the existing functionality.
Couple of things:

If I understood your other PR comment correctly, you need this PR to patch v4.1.1? Unfortunately, we cannot support a patch release for this version so the PR should be made to dev and not master.  We only use master for critical or blocking bugs on the current release. If you are not prepared to use the latest version of PixiJS, you should create a patch/fork for the current version you need to support.

Could you add an inline comment explaining why you are checking for this? This helps to create some context when people are looking at the source code.

This is a good use-case for adding a unit-test. This will make sure that things aren't broken in future releases or when we refactor.

Please make the PR against dev. Thanks.


Environment-specific or conditional webpack arguments

As you probably know, the Symfony container supports an expression language. See also the expression syntax.
We would like to have similar in maba_webpack.bin.webpack.arguments
Examples:

@=environment == 'dev' ? '--debug --output-pathinfo'
@=parameter('webpack_verbose') ? '--display-modules'
@=parameter('webpack_logLevel') >= 1 ? '--display-modules'
@=parameter('webpack_logLevel') >= 2 ? '--display-reasons --display-chunks --display-error-details'

Wouldn't it be more clearer if you would parametrize your config.yml?
As I see this, it would only be used for additional layer of abstraction (parameters to define another parameters). It would not be able to take any services, make calls to them etc. as these values are used as parameters currently. Unless it would be refactored to be calculated in run-time, as caching is not that important in this case.
Example config.yml:
maba_webpack:
    bin:
        webpack:
            arguments: %webpack_arguments%

parameters.yml.dist:
webpack_arguments: ['--hot', '--history-api-fallback', '--inline']

Each programmer would be able to add or remove any arguments as needed.
If environment changes how this should work (first example), you can just override some values inside config_dev.yml file.

The idea behind having abstract params, e.g. webpack_verbose_log or webpack_log_level is to avoid reading webpack docs. Most of devs here don't want/need to learn possible command-line options of webpack. We use webpack about 2 years to build specific frontend single page apps without the help of a symfony bundle. Similarly to your suggestion in README, to use Plain simple webpack commands. But not in the way you may think. No one of the devs have insights in webpack, I've created a wrapper around webpack.config.js that shows a menu with terminal-menu and generates a config based on selected options. Here's a screenshot:

They even don't have to know what module bundler is used, it can be grunt, gulp, broccoli, whatever.
It's ok when you are alone developing your stuff, you know every bit of webpack and an array of plugins, you've watched tons of screencasts and read a book.
But it's not ok when you're working in a company where every dev have it's own duties, expert in it's own field.
All backend devs here know perfectly Symfony and certainly they use app/console on a daily basis and occassionally change parameters.ini.
I am a frontend/fullstack dev and still in the process of learning Symfony conventions.
It's not related to the issue, but maybe you can help with following tasks:

rename maba:webpack:* commands to e.g. assets:* that are defined in CompileCommand and DevServerCommand
remove maba:webpack:setup that is completely useless here, as we already have a custom webpack.config
change description and help of commands

I'll also work on a specific assets:menu command that will use the mentioned above terminal-menu

So, I've created the Assets*Command classes that have their own help and they execute a maba:* command through
$mabaInput = new ArrayInput([]);
$this->getApplication()->get('maba:webpack:compile')->run($mabaInput, $output);

remains to solve the problem with hiding the maba:* commands
Symfony have a native way to do this
http://symfony.com/doc/current/console/hide_commands.html
The problem is that the ->setHidden(true) method should be applied in the vendor bundle's Command itself and probably it's a bit overhead to write some MabaWebpackCompilerPass to catch and modify the command. Another problem with setHidden is that it was added in Symfony v3.2 and we are currently on v2.8


new cli commands

added pirate new command and helpful console lines.
Changes to be committed:
modified:   .gitignore
modified:   PirateParser/Parser.cs
modified:   Shell/Program.cs

Summary:

Added pirate init command for creating default gitignore and gitattributes
Moved Commands + Argument logic from Program.cs to CommandRepository.cs

Arguments from command line are passed as string, if no argument is given string.empty is passed

Removed capability from non argument calls, new issue was created: #13