feat(web): unlocks the power of SvelteKit with Vercel hosting

📖 What's in there?
Building a single page application with SvelteKit was only a temporary hack. This PR unlocks the kit to allow us bringing a great user experience, notably through Server-Side-Rendering (SSR).
But this has huge impacts on the hosting, the biggest being to split the GraphQL (and websocket) server:

in order to render the page on server side, SvelteKit needs to interact with the GraphQL API on server side
using a cookie is the only way for the browser to hold the authentication token during SSR
the cookie must be on the domain serving static page: it can't be managed from the GraphQL API
the strongest security implies an httpOnly cookie, which means that only SvelteKit endpoints/hooks, since they run on the right domain, can manage it.
since it does not manages the cookie any more, the GraphQL API expects authentication details as authorization http header (like in the early days)

This PR brings a state where:

the browser requests a page (with cookie) on tabulous.fr
while Sveltekit is rendering that page is rendered on server side it will invoke the getCurrentPlayer GraphQL operation from server side, passing the cookie value has authorization header
the GraphQL results will be conveyed to the page through SvelteKit's session
that session is both leverages to render the page on Server side, and hydrates the state on Client side
the app uses different subdomains: graphql.tabulous.fr, auth.tabulous.fr and games.tabulous.fr

With these changes, it makes it possible to host Sveltekit's "web" server on Vercel, and keep only the GraphQL server on OVH.

refactor(cli)!: supports new graphql subdomain and authorization header instead of cookie
refactor(server)!: reads JWT from authorization header and does not set any cookie
refactor(server)!: returns token as query parameter when redirecting successful authentication
refactor(server)!: removes logout GraphQL mutation
refactor(web)!: implements session and cookie management with Sveltekit hooks and stores
refactor(web)!: issues regular post on login and handles it with SvelteKit login/ endpoint
refactor(web)!: handles logout with SvelteKit logout/ endpoint
refactor(web)!: use vercel adapter, which fixes page reload on Vercel
refactor(web): uses explicit player and turn credentials instead of global store.
refactor(hosting)!: configures nginx for tabulous subdomains
chore(web): rewrites Playwright integration test mock server to be a real server with fastify, acting on behalf of the GraphQL server
chore: replaces deprecated faker utility
chore(ci): adjust variables used when building the web app for integration tests

🧪 How to test?
The new GraphQL server was manually deployed on OVH, allowing us to test through Vercel's preview url: https://tabulous-git-feat-vercel-feugy.vercel.app/home
The integration tests are the only way to automatically test SvelteKit endpoints and hooks, since it requires the full loop.

refactor(cli)!: supports new graphql subdomain and authorization header instead of cookie
refactor(server)!: reads JWT from authorization header and does not set any cookie
refactor(server)!: returns token as query parameter when redirecting successful authentication
refactor(server)!: removes logout GraphQL mutation
refactor(web)!: implements session and cookie management with Sveltekit hooks and stores
refactor(web)!: issues regular post on login and handles it with SvelteKit login/ endpoint
refactor(web)!: handles logout with SvelteKit logout/ endpoint
refactor(web)!: use vercel adapter, which fixes page reload on Vercel
refactor(web): uses explicit player and turn credentials instead of global store.
refactor(hosting)!: configures nginx for tabulous subdomains
chore(web): rewrites Playwright integration test mock server to be a real server with fastify, acting on behalf of the GraphQL server
chore: replaces deprecated faker utility
chore(ci): adjust variables used when building the web app for integration tests


Added route meta field and navigation guards to /search route

Fixes
Fixes #853
Description
Added route meta field and navigation guards to /search route
Added with the help of https://router.vuejs.org/guide/advanced/meta.html
Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@brenoferreira Yess, now i added the meta field and navigation guard to server file, Could you once review it? but its not working in localhost:8443 (Client Side)


TFKUBE-422: Jira NFS

Pull request description
Provide description for the PR
Checklist

[x] I have successful end to end tests run (with & without domain)
[x] I have added unit tests (if applicable)
[x] I have user documentation (if applicable)

E2E TEST
Domain: https://github.com/atlassian-labs/data-center-terraform/actions/runs/2200392979

Have you tested the solution when Bitbucket and Jira are installed at the same time? If not, please add bitbucket to the application list in config file and install it to see if two NFS instance can work at the same time and applications can run as expected?

Have you tested the solution when Bitbucket and Jira are installed at the same time? If not, please add bitbucket to the application list in config file and install it to see if two NFS instance can work at the same time and applications can run as expected?

I think we should test this explicitly but isn't this covered by the end to end test as well?

Have you tested the solution when Bitbucket and Jira are installed at the same time? If not, please add bitbucket to the application list in config file and install it to see if two NFS instance can work at the same time and applications can run as expected?

I think we should test this explicitly but isn't this covered by the end to end test as well?

The e2e tests install all products so it should be covered.


Bind user to person

Still missing the automatic person creation when a user is created.
An user must always have a person.


HDDS-6149. Remove unused keytabs

What changes were proposed in this pull request?
HDDS-5123 added pre-created keytabs in two locations:

hadoop-ozone/dist/src/main/keytabs
hadoop-ozone/dist/src/main/compose/ozonesecure*/keytabs.

I think the ones in the second location are unused, left over from a previous state of the patch for HDDS-5123.
This PR just removes the unused keytabs.
https://issues.apache.org/jira/browse/HDDS-6149
How was this patch tested?
Regular CI:
https://github.com/adoroszlai/hadoop-ozone/actions/runs/1652665882

Checking in hadoop-ozone/dist/target/ozone-1.3.0-SNAPSHOT/compose/ozonesecure the docker-compose file only seems to reference keytabs in ../_keytabs, which it mounts into the container. So I think you are correct. The keytabs in compose/ozonesecure*/keytabs don't seem to be referenced anywhere and can be removed.
Also, all the tests pass with these files removed, further confirming they are not needed.
I am not an expert in this area, but based on the above I believe this change is good.

Thanks @sodonnel for the review.


Improve Voice Generators

Closes #47

Todo:

[ ] Ability to restrict/permit access to voice channel by role/member
[ ] Get default options such as locked working with toggle commands (per generator)
[ ] Add ability to claim voice channel when owner leaves
[ ] Restrict editing commands/features to channel owner


stake: avoid BASE_REWARD_RATE constant

Since we want to eventually have variable reward rates, it seems better to
avoid having a reward rate constant, so that the rest of the API is built
around the idea that the base reward rate for the next epoch is an external
input.

LGTM


Fix changing alpha in RenderTextureWebGLRenderer

This is a fix for https://github.com/photonstorm/phaser/issues/3385. You can use this example locally to test my changes: http://jsfiddle.net/e2e6w77r/17/

Fix confirmed, let's make a PR to upstream!

@TCatshoek Thanks, will do


Release 1.21

This release includes all of the Swift 3 conversion and related bug fixes.

@colinta - this is good to merge now that 1.21 is in the store, correct?

As long as we tag it first!

done!


playground default state should be null options

Right now we show some defaults which doesn't make much sense (like responseType token)

It'd be a good approach to have all booleans as <select> with none, true, false options. Declaring that none will be resolved as the default for the lock initialization.


Systemd unit

Problem
I'd like to run scaphandre on some plain old bare metal servers. Is there a systemd unit file somewhere I can use?
Solution
I'd think something like this?
[Unit]
Description=Scaphandre Prometheus
Wants=network.target
After=network.target

[Service]
# systemctl edit and add these if you want to further limit access
#IPAddressAllow=localhost
#IPAddressDeny=any

ExecStartPre=-+/usr/bin/modprobe intel_rapl_common
ExecStartPre=+/usr/bin/find /sys/devices/virtual/powercap -name energy_uj -exec chmod g+r -R {} + -exec chown root:powercap {} +
ExecStart=/usr/local/bin/scaphandre $SCAPHANDRE_ARGS
EnvironmentFile=/etc/conf.d/scaphandre

CapabilityBoundingSet=CAP_NET_BIND_SERVICE
DevicePolicy=closed
DynamicUser=yes
Group=powercap
IPAccounting=yes
LockPersonality=yes
MemoryDenyWriteExecute=yes
MemoryMax=100M
NoNewPrivileges=yes
PrivateDevices=yes
PrivateTmp=yes
PrivateUsers=yes
ProtectClock=yes
ProtectControlGroups=yes
ProtectHome=yes
ProtectHostname=yes
ProtectKernelLogs=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
ProtectSystem=strict
RestrictAddressFamilies=AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
RestrictSUIDSGID=yes
SyslogIdentifier=scaphandre
SystemCallFilter=~@cpu-emulation
SystemCallFilter=~@debug
SystemCallFilter=~@keyring
SystemCallFilter=~@module
SystemCallFilter=~@mount
SystemCallFilter=~@obsolete
SystemCallFilter=~@privileged
SystemCallFilter=~@raw-io
SystemCallFilter=~@reboot
SystemCallFilter=~@resources
SystemCallFilter=~@swap
UMask=0777

[Install]
WantedBy=multi-user.target

Hi ! @jcaesar your first proposition of a service file works properly on ubuntu 22.04.2. I just had to change paths for modprobe and the config file (which makes me think we may need per-distro service files ?).
I'll give a try to what you proposed for permissions management as well. Thanks for that.
I'll also work on a RPM package soon so I'll have to validate this on redhat as well.
I'd love to hear your and @TheElectronWill 's thoughts about how we should organise this, maybe a contrib folder where one could propose working service file for other distributions through PRs ?

contrib sounds good to me. One other example I'm aware of is miniserve naming said folder packaging, which might be more likely to be picked up by maintainers.

packaging for packages, that sounds good :) contrib is a bit too vague IMO
Another thing to think about is testing: the packages should build properly on each platform, that's a good job for Github Actions, isn't it?

packaging for packages, that sounds good :) contrib is a bit too vague IMO
Another thing to think about is testing: the packages should build properly on each platform, that's a good job for Github Actions, isn't it?

according to Github Actions doc virtual machine images for Github-hosted runners, are limited to ubuntu as a linux ditribution.
We may have to either deploy github actions runners virtual machines with the distribution we want to support and target them in GA, or use awx and call jobs in GA to do the same (as done for the bare metal tests).

A docker environment (on ubuntu) should work here, no need for a self-hosted runner.
For example, there are github actions that build RPM packages thanks to a docker image:
https://github.com/marketplace/actions/rpm-build

Great ! I'll give it a try. Thanks !

Just added a packaging folder with two services files, one for ubuntu 22.04, one for redhat 9.
I guess what you proposed @jcaesar is better regarding secuirty config, but maybe we could integrate those in the process of doing the full package for a distribution ?
ping @barnumbir, would you like to integrate your deb package in the packaging folder through a PR ?


[AIFlow][Notification] Introduces the command line interfaces of the config

The config management needs to support the command line interfaces for maintenance. Fix #201 .

Codecov Report

Merging #200 (493d45e) into master (46806e0) will increase coverage by 0.51%.
The diff coverage is 83.23%.

@@            Coverage Diff             @@
##           master     #200      +/-   ##
==========================================
+ Coverage   62.36%   62.88%   +0.51%
==========================================
  Files         186      194       +8
  Lines       13715    14043     +328
  Branches     2053     2095      +42
==========================================
+ Hits         8554     8831     +277
- Misses       4706     4739      +33
- Partials      455      473      +18

Impacted Files
Coverage Δ

ai_flow/endpoint/server/server_config.py
62.50% <ø> (-0.14%)
:arrow_down:

ai_flow/util/cli_utils.py
56.81% <44.11%> (-43.19%)
:arrow_down:

...ification_service/notification_service/util/cli.py
45.71% <45.71%> (ø)

ai_flow/util/config_utils.py
72.22% <72.22%> (ø)

...cation_service/notification_service/util/config.py
76.19% <76.19%> (ø)

ai_flow/cli/commands/config_command.py
93.54% <93.54%> (ø)

...otification_service/cli/commands/config_command.py
93.54% <93.54%> (ø)

ai_flow/cli/commands/server_command.py
93.93% <93.93%> (ø)

ai_flow/cli/commands/webserver_command.py
95.08% <95.08%> (ø)

ai_flow/cli/cli_parser.py
95.12% <100.00%> (+0.29%)
:arrow_up:

... and 8 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update aab3e7b...493d45e. Read the comment docs.


New about us page

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
New about us page added
Fixes # (issue no.)

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Explain the Testing instructions
Test Configuration:

Operating system: Windows
Version: 10
Text-editors used: VScode

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

Thnx for contributing @SAHU-01 :)


Fixing #2379

Bumped ubuntu version to 18.04
changed to pip packages to use notebook  instead of ipython-notebook
also formatting

I've added a workaround for #2371 as described here https://github.com/hyperledger/indy-sdk/issues/2379#issuecomment-909142303

A fix for the build issues has been implemented (https://github.com/hyperledger/indy-sdk/pull/2470).  Please rebase this PR on the latest from the main branch so it is no longer blocked by the related build issues.
Also, please add the DCO sign-off.  Details here; https://github.com/hyperledger/indy-sdk/pull/2423/checks?check_run_id=4238476359


Add OnError support for tasks

Going to skip this for now since it doesn't make sense in a non-scripting scenario. We might revisit this in the future if there's a demand for it.


Show QR code and rewards to claim (e.g. Teddy) after payment

It would be a nice addition to show a scannable code after checkout that a cashier could scan to verify which rewards a user gets.

Currently: Not yet a QR code but the basket id is shown


value method is broken for non std::exception_ptr specializations

This code should work
#include "expected.hpp"
#include <system_error>

int main() {
  nonstd::expected<int, std::error_code> e = 12;
  (void)e.value();
  return 0;
}

But it gives this compilation error:
Ryans-MacBook-Pro:expected-lite ryanburn$ clang++ -std=c++11 main.cpp
In file included from main.cpp:1:
./expected.hpp:113:29: warning: 'constexpr' non-static member function will not be implicitly 'const' in
      C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const]
    constexpr value_type && value() &&
                            ^
                                    const
./expected.hpp:637:29: warning: 'constexpr' non-static member function will not be implicitly 'const' in
      C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const]
    constexpr value_type && operator *() &&
                            ^
                                         const
./expected.hpp:670:29: warning: 'constexpr' non-static member function will not be implicitly 'const' in
      C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const]
    constexpr value_type && value() &&
                            ^
                                    const
./expected.hpp:689:29: warning: 'constexpr' non-static member function will not be implicitly 'const' in
      C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const]
    constexpr error_type && error() &&
                            ^
                                    const
./expected.hpp:911:29: warning: 'constexpr' non-static member function will not be implicitly 'const' in
      C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const]
    constexpr error_type && error() &&
                            ^
                                    const
./expected.hpp:666:41: error: no viable conversion from 'error_type' (aka 'std::__1::error_code') to
      'std::exception_ptr'
            ? ( std::rethrow_exception( contained.error() ), contained.value() )
                                        ^~~~~~~~~~~~~~~~~
main.cpp:6:11: note: in instantiation of member function 'nonstd::expected<int, std::__1::error_code>::value'
      requested here
  (void)e.value();
          ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception:131:31: note:
      candidate constructor not viable: no known conversion from 'error_type' (aka 'std::__1::error_code') to
      'nullptr_t' for 1st argument
    _LIBCPP_INLINE_VISIBILITY exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {}
                              ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception:132:5: note:
      candidate constructor not viable: no known conversion from 'error_type' (aka 'std::__1::error_code') to
      'const std::exception_ptr &' for 1st argument
    exception_ptr(const exception_ptr&) _NOEXCEPT;
    ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception:148:65: note:
      passing argument to parameter here
    friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr);
                                                                ^
5 warnings and 1 error generated.

The believe the specializations for std::exception_ptr should be using std::enable_if instead of regular conditionals.

Thanks!

I guess you know that the error_traits is not part of the current proposal.
The proposal has nothing special for exception_ptr or error_code.
I believe that we can define a non-member non-friend function that could do what we want on top of the proposal.
E.g. we can have value_or_rethrow that could make use or error_traits.
In [P0786] I propose a resolve function that could take a function that rethrows as well.
using namespace value_or_error;
auto v = resolve(e, rethrow);

where retrow would be a polymorphic function that rethrows using the error_traits.
So value_or_rethrow(e) coudl be the equivalent to resolve(e, rethrow)
I recognize the syntax of the non-member functions is less friendly for a lot of us, but I believe that we should define the minimal interface in expected. At the end, expected::value and expected::value_or shouldn't be member functions, as we can define them as non-members.
BTW, I'm working with JF Bastien on the wording for the LWG. See https://github.com/jfbastien/papers/blob/master/source/D0323r4.bs
Any contribution is more than welcome.
[d0786r1] https://github.com/viboes/std-make/blob/master/doc/proposal/value_or_error/d0786r1.md


Reregistration Flows

Changes to address #213
REREGISTRATION_SHOW_RESPONSE
If False (default), the /register/ endpoint will always return
a HTTP_201_CREATED response, as well as the UserSerializer serializer.data response
of one of those users, so that it makes it difficult to distinguish if a User has this email
Default: True
SEND_REREGISTRATION_EMAIL
If True, register endpoint will send warning and reminder email to user.
Only active users are able to reset their passwords (User.is_active is True).
The email will ask the User to reset their password since someone is trying to
re-register their account.
If User.is_active is False, will send a warning
Default: False
Reregistration Email is also different - if the User is_active or not, they will either have the option to reset password or will be reminded to complete activation.

Coverage decreased (-3.7%) to 93.069% when pulling b3c694cd5381479438384db38dbbf919a71dcd5a on oliver-zhou:reregistration into 1ffeb417da1d2793ce75b37e6cc946912261c367 on sunscrapers:master.

Coverage decreased (-3.7%) to 93.069% when pulling 12ef6540042b9d1e9830fa3103291d2ecca692c6 on oliver-zhou:reregistration into 1ffeb417da1d2793ce75b37e6cc946912261c367 on sunscrapers:master.

Coverage decreased (-3.6%) to 93.083% when pulling 9a1e5d7751997a977792ff0bfe70802f10b83fd0 on oliver-zhou:reregistration into 1ffeb417da1d2793ce75b37e6cc946912261c367 on sunscrapers:master.

I have some time to revisit this pull request, and bring this up to speed with Djoser 1.15  - before I spend the investment - what are the plans for the branches in development right now? If I'm working off 1.15, will it be future resistant - or should I wait for 2.0?

@oliver-zhou Sorry for such long delay with this PR. Do you feel it is suitable for version 2.0 that was released recently? I'd like to revisit this feature request.


wc -c returns different results than GNU's

wc -c on a small file isn't returning the same GNU:
C=./target/debug/coreutils
file=/sys/kernel/profiling
echo "GNU="
wc -c $file
echo "Rust="
$C wc -c $file

Result:
GNU=
2 /sys/kernel/profiling
Rust=
4096 /sys/kernel/profiling

@resistor rings a bell?

Related to #2935 probably

I think this snippet from GNU should explain the difference:
  /* When counting only bytes, save some line- and word-counting
     overhead.  If FD is a 'regular' Unix file, using lseek is enough
     to get its 'size' in bytes.  Otherwise, read blocks of BUFFER_SIZE
     bytes at a time until EOF.  Note that the 'size' (number of bytes)
     that wc reports is smaller than stats.st_size when the file is not
     positioned at its beginning.  That's why the lseek calls below are
     necessary.  For example the command
     '(dd ibs=99k skip=1 count=0; ./wc -c) < /etc/group'
     should make wc report '0' bytes.  */

I'm not entirely sure why that example command should fail, but the output is indeed not 0 when using uutils:
$ (dd ibs=99k skip=1 count=0; cargo run -- wc -c) < /etc/group
dd: 'standard input': cannot skip to specified offset
0+0 records in
0+0 records out
0 bytes copied, 2,7569e-05 s, 0,0 kB/s
1337

Related to #2935 probably

Indeed it is.  That fix handled st_size == 0, but sysfs pseudo-files can have st_size == 4096:
tavianator@graviton $ stat /sys/kernel/profiling
  File: /sys/kernel/profiling
  Size: 4096            Blocks: 0          IO Block: 4096   regular file
Device: 0,22    Inode: 2460        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-09-26 13:02:49.228581647 -0400
Modify: 2022-09-26 13:02:49.228581647 -0400
Change: 2022-09-26 13:02:49.228581647 -0400
 Birth: -
tavianator@graviton $ cat /sys/kernel/profiling
0
tavianator@graviton $ wc /sys/kernel/profiling
   1    1    2 /sys/kernel/profiling

It seems that GNU coreutils only does the optimization (only reading the stat.st_size) under very special circumstance:
          if (end_pos % page_size)
            {
              /* We only need special handling of /proc and /sys files etc.
                 when they're a multiple of PAGE_SIZE.  In the common case
                 for files with st_size not a multiple of PAGE_SIZE,
                 it's more efficient and accurate to use st_size.

                 Be careful here.  The current position may actually be
                 beyond the end of the file.  As in the example above.  */

              bytes = end_pos < current_pos ? 0 : end_pos - current_pos;
              skip_read = true;
            }

One thing that actually tripped me up when reading this was that this branch of the if-else is actually not the special branch, because 0=false. If the size is a multiple of the page size, they guess where the end is (erring on the side of guessing too low) and then read from that position to the end.

Oh...wow...that completely tripped me up too.

Seems to be fixed, at least on my machine the result of wc -c /sys/kernel/profiling is identical for GNU wc and uutils wc.


New version: NLPModelsKnitro v0.2.0

Registering package: NLPModelsKnitro
Repository: https://github.com/JuliaSmoothOptimizers/NLPModelsKnitro.jl
Created by: @dpo
Version: v0.2.0
Commit: c044a3c51617fadf3170bb26c348ab39e7faa8bc
Reviewed by: @dpo
Reference: https://github.com/JuliaSmoothOptimizers/NLPModelsKnitro.jl/commit/c044a3c51617fadf3170bb26c348ab39e7faa8bc#commitcomment-36042571

[noblock] This package requires the (commercial) solver KNITRO to be available, which is why the install failed.


Incompatible with Chrome 50

Please check with chrome browser v50 on windows
Thanks :smile:

I'm a Linux user, so I can't check on Windows but there is no problem with Chrome v50 on Linux. Can you show me a screenshot?

When using Firefox in Linux or windows it's still amazing display. But with this is screenshot from chrome on windows. No Text visible.

It's weird. Is it same for taylantatli.me/Moon?
Ignore that error, it's disqus script. I forgot disabling comments for homepage, fixed now.

Yes it is the duplicate of taylantatli.me/Moon
that page looks same in windows chrome browser

I can't reproduce this bug. I tested it with my friend's laptop (v50 on Windows) and it's still ok. Also tested with browserstack.com and it's ok too. Can it be some problem with your Chrome browser profile or something?

Yes i'm sorry, i think my chrome look like crash on beta. Thanks for feedback
Keep up good work :+1:


improve the compaction

the main goal of the compaction checker was to avoid unnecessary full compaction every day. How it works:

step 1: check the current hour whether in compaction checker range or not, if yes go to step 2
step 2: fetch all table properties and then pick the file was created
more than 1 week or which has highest delete ratio every minute
step 3: compact keys in the selected file

TODO

[x]  fix pubsub/slot compaction

[x]  test compaction checker was worked as expected

[ ] smarter compaction rule

LGTM


Add files tab to individual project view for finance user

The OTF finance user wants to use Hypha as the main place to view (this doesn't mean store) files related to an individual project.
UI Demo
https://user-images.githubusercontent.com/1899506/121543330-1d4c7b00-ca09-11eb-8266-8e5975ca8f5f.mp4
UI Designs
In the files tab view they see all the files that have been uploaded to Hypha that are related to the project:

The file category dropdown options come from the different file upload fields in Hypha -
The applicant uploads:

their W8 or W9 file
invoice files (stored on IntAcct, requested via API)

The internal fund users uploads:

upload contracts

@frjo mentioned the file category can be stored as metadata, so we can provide this file category filter.
Search for file
They can search for files with particular words in the file name, e.g. search for files with "invoice" in the name:

Filter by file category

Where are the files stored?
Stored on Hypha

contract
W8/W9 file, OFAC and SAM check results (compliance related)

Finance system
(OTF - IntAcct)

invoices (initially stored on Hypha, until they are approved, then they are moved to IntAcct)

Program Managers/Program Team/Staff role would need the same tab of documents. Program needs this view to track the progress or trajectory of payments associated with a contract. This information enables program managers to project whether a contract needs an amendment in the future, is on track to completion, follow-up with contractors if an invoice is missing from the files, etc.

I think we will store all files in Hypha, AWS S3. If OTF want to we can add a copy of the PDF when invoice are created in IntAcct.

Would be good to get a rough estimate from dev and design on how much effort the files tab would be to do a minimum amount of days/hrs would be good for now so that we can better understand the scope of this files tab feature and how feasible it is to be able to be done in 2021's SOW or move to 2022 SOW.
From my understanding this isn't 'blocking' the ability for users to find the needed files, it's a pain to go back into the applicant section to find CV and budget docs but not impossible so I would classify this as 'a very nice to have' and 'improvement issue' for finance & compliance work.

Would be good to get a rough estimate from dev and design on how much effort the files tab would be to do a minimum amount of days/hrs would be good for now so that we can better understand the scope of this files tab feature and how feasible it is to be able to be done in 2021's SOW or move to 2022 SOW.

For design - I think this would be a "medium" t-shirt size -

the design work to extend this to compliance and contracting is relatively easy
the reseach work to understand whats needed for compliance and contracting needs to be done
then there's other questions I've not thought about like 1) how do files get uploaded, 2) what happens with versions (delete old versions, upload new and show old versions), and probably others
then we'd need to test it with users

Pining @frjo I know your busy on active dev work for finance but when you get a chance a quick 'sizing' would be good on this one :)

@frjo @sks444 @Erioldoesdesign @fourthletter I've created #2634 to discuss the files tab.

@ei8fdb please move this issue to https://github.com/OpenTechFund/apply-app/issues -- thank you!

Same as your other request, I've looked thru the issue management UI but I can't see how to move this.
You'll have to do it @fourthletter

I moved it to https://github.com/OpenTechFund/apply-app/issues/25


Creating a new event the inappbrowser can register to

Creating a new event the inappbrowser can register to when declared. This event can be triggered in the browsers page by accessing the cordovaEvents object (in Android). Still to implements for ios and windows

@walisc Could you ask ian to review this, rather? I've got too much ongoing at the moment and need to focus now on non-mobile dev... ?

Hi @matthewhampton, sure!


Feature Request: Show a timer in chill modes so users know how much time they have left

Is your feature request related to a problem? Please describe.
After talking with a friend that played with Trivia Bot, he asked me to create some kind of visual in game, so users can know how much time is left in chill mode.
Describe the solution you'd like
I'm thinking this can be a new util, so I plan on creating a util that can be used in all chill game modes. It should be a new message embed that dynamically updates every second to show how much time is left.
Describe alternatives you've considered
This can also be a part of the normal message that gets sent when there is a new question, so this might be a better solution since there might be a bit of lag, will have to experiment to see which is better.

This is in progress, but I want to update to v13 of discord.js before I continue work on this, so putting this on pause for now

This is in progress, but I want to update to v13 of discord.js before I continue work on this, so putting this on pause for now

I did eventually figure this out, but there is a ton of latency that I can't fix - due to the discord api and other factors out of my control - so I'm closing this as it isn't feasible to do at this moment. Will revisit this at some point in the future for kicks n giggles, but for now, I'm closing this issue.


Alternate mechanics

This PR tracks a reworking of the basic progress mechanics. It reflects lots of informal player testing, and studies of other games. I've had the following goals in mind, which I think we've all more or less agreed on, if not laid out formally.

Minimize frustration. Rather than have many deaths and restarts within a single level, often with little prior notice, there should be one, clearly demarcated scenario in which you fail to complete a level. You should always get a score even if you fail, it just might be low.

Simplify variables. You should only need to track one or two variables, not three or four (e.g. lives, moves, score, stage, etc). This is true of many well-designed mobile games (Tiny Wings has a score and an energy bar, Super Hexagon has a time and a progress status, Threes! just has a score, etc.).

Clear feedback. It should be clear both throughout and at the end how actions translate into score, via feedback, preferably continual.

So here's my attempt. There are two primary variables, an energy bar and a score.

Energy. Depleted a fixed amount by moving, gets a small boost when you eat a bit, which means exploring new areas is better than exploring old ones, and gets a large boost when you reach a target, which means you always start a stage with energy.

Score. Small increment for eating a bit, large increment for completing a stage, and if you finish the final stage and have energy remaining, it goes into your score.

Note that these two are not themselves redundant! If you just have an energy that's converted to score at the end, then we can't give partial scores for failed levels, because ending with 0 energy = 0 score.

cc @sofroniewn @andrewosh @sethvincent

Key changes:

There is no longer a concept of lives, when you run out of moves / energy the level ends - you get a score and have to restart from the beginning.
"moves" are now represented with an energy bar rather than with a number
now a move along an unvisited path counts less than a move along an already visited path
your number of moves get a boost, but do not return all the way when you reach a target

After much thought (and a couple of rewrites of this post) - I think I'm ready to say goodbye to the lives. I liked the concept of lives because of the repetition that it forced (caused by dying and restarting the same place, but with the bits removed), but I disliked them because of the additional complexity they brought for the player and our analysis. There was also no reason why on any given level you should have one life, 3 lives, 10 lives, or infinite lives. I think very similar repetition could now come from just having the game over / score screen transition seamlessly into the start of the level again so people can replay it right away. Alternatively we could have stuck with our old version with the bits not coming back after death, death taking you to the last start location, and just given people infinitely many lives.
I'm worried the energy bar obfuscates the relevant variable of moves and that in general people will still not be sufficiently incentivized to find the shortest path - and they will just move around randomly until they get to the target - as we all seemed to do in your Morris style mazes (after the initial trial). I do like looking at the bar go down when I move, and up as I eat some bits.
The alternative approach is to have a very carefully chosen number of moves based on the maze, like the maze I made, (and in which you clearly learnt something very interesting) and expect that people will die many times.
In both these types of maze I think its important we consider what exactly performance variables we want to be tracking to look at learning - (moves/energy used or number of restarts till success etc.)
I don't really like the stages and number down at the bottom right, unclear what it is doing there, what it means - why isn't it showing 1/3 instead of just 1?

@sofroniewn great thoughts and feedback! Overall I think we're synced on this, a couple replies:

I'm also happy to say goodbye to lives, it's much simpler, and we don't lose much control. Totally agree we'll have fast restart upon failure, that'll be handled in app. Hopefully people will be driven to repeat to get a higher score / complete the level.

In both style mazes, we always want to motivate people to finish in as few moves as possible. It's just about whether we more explicitly encourage higher and higher scores, or completing the level without dying. In my survey of the best mobile games, almost all emphasize the former.

As is probably obvious, we can keep most of these changes but lock the number of moves more tightly by turning remaining energy into score at the end of each stage and restoring energy completely at the end of each stage. In other words, keep all the changes except (4). I just tried this, feels good, and might avoid across-stage analysis complexity. I just committed to this branch (though can easily revert). Does it feel better?

And totally agree we should think about analysis, but that it's also fine if the variables we expose are not exactly the ones we analyze (e.g. we could still analyze numbers of moves, not energy per se).

One note about the change I just made: the dynamic range for scores is really good! For the toy test level, it still fells challenging (you can't wander around forever), but I was able to complete the level with anywhere from 8000 to 18000 points depending on my moves. I also like that score propagates across stages, but the constraints on movement stay encapsulated within each stage.

Ok interesting, having your energy not return all the way after each stage might add to the tension / excitement, in a good way though that is lost if you get it all the way back after you reach a target. I'm still open to it just being a +50% boost say instead of a +100%. Might make analysis a bit weirder, but I think you felt really driven not to waste any moves, knowing that you wouldnt get them all back

Now if you run out of energy you get a final score and have to restart the level from the beginning with zero points and all the dots there.
I just want to flesh out an alternative in a little more detail, if you run out of energy you could just restart from the last start point with the dots gone, same score (or your score could take a loss) and you keep playing.
I think this second option feels a bit strange. I don't like that you only get a score on voluntary exit or victory, and it weirdly mixes starting again from scratch and dying. Having to go back to the beginning every time might actually make it much cleaner, but now the number of times someone plays a level is an essential part of the analysis that used to be absorbed into the number of lives. Thoughts on this?

Ok, re: the first point, I'll revert the last change then, wanted to try it out, but I agree the tension is nice! And we can always titrate the numbers to make it more or less constrained both within and across stages.

Cool changes! I like the idea of simplifying what was previously moves/score/lives. While there were a lot of variables to keep track of before, which at times could be confusing, I think that approach had a number of pros that could potentially be added to this version. Here are a few thoughts:

Having the energy bar roll over from stage to stage could be exciting, but in our testing there were multiple times when we were tuning the number of available moves from stage to stage (i.e. the first stage was an "exploration" stage with a very high number of moves). We lose the ability to do this if energy persists across stages. Given that, we aren't just making the analysis more difficult, we're losing flexibility in level design.
If energy were to not roll over, users should understand (at least approximately) how many moves they can make with their energy. If the energy bar rescales after each stage (a full bar represents a different number of moves), then it becomes very difficult to do any sort of planning just by looking at the bar (like @sofroniewn said). In the previous version, I could make a few bad moves and then say "I'm going to lose," even with many moves remaining. Players lose that level of detail now, which could be good or bad.
I feel like the bits also add confusion right now. If in making a move, I get back some energy that looks "something like half a move," it becomes even more unclear how many moves I have left. That can probably be tuned easily if some notion of scale (to fix point 2) is added.
Should there be a discount factor when players replay the level multiple times? Your score of 18000 becomes more impressive if someone can't just replay the level (after having done done a substantial amount of learning on the first try) and get an 18000 as well. You'll say "but I did it on the first try" and your friends will say "yeah, sure." Hexaworld is very different from something like Super Meat Boy where to goal is to learn a complicated sequence of moves across multiple replays. We want to incentivize learning the maze as completely as possible, as quickly as possible. I wonder if you should only have one chance per level to shoot for that high score -- makes that first attempt more important and exciting.

Thoughts on any of that? Overall I love that the score becomes the focus here. Before, we were saying things like "we all did each stage in 5 or 6 moves," but it's a lot more fun to compare scores.

Thanks @andrewosh ! A couple quick comments:
re: (1)

I think we still have plenty of control, because we can control both the total energy and the amount that gets restored after stage completion (anywhere from 0% to 100%). Both could vary across levels and/or across stages.

re: (2) + (3)

How about little gradation lines, maybe with one notch = one move, and a move with bits only drops half a notch. I still find the bar much more pleasing than a number, feels more engaging, and avoids too many numbers on the screen. Would that help? I can take a stab.

re: (4)

My thinking is that replayability will be crucial to getting lots of data, so rather than discourage it, I'd ultimately much rather find clever ways to leverage randomization so that each run through a level feels fresh. But doing that well will take some thought.

And re @sofroniewn, great to flesh out that other option, the two main things I like better about what's in this PR are (1) it was starting to get very confusing to incorporate failures / restarts when comparing performance, so as you say, it's "cleaner" this way, and (2) hoping for voluntary restarts seems weird, it feels more straightforward to kick someone out with a low score and hope they start again.

@andrewosh just committed a change that adds notches to the energy bar, I think it's quite nice! At least in this version, a move with bits loses one notch, and a move with no bits loses two, so it's pretty obvious for planning purposes. After testing a few variants this felt the best.

I think this addresses many of your concerns. Still very on the fence about whether energy should be fully restored at the end of a stage! I've left it in for now.

I'm really liking the discrete energy bar - one unit is a move along an un-visited path, two units is a move along a visited path. If we go to smaller / larger mazes could have a smaller / larger energy bar while keeping that rule the same

Re @andrewosh  - I think your point (4) is a really important one, we need to keep track of how many plays someone has done - and in fact really want people to keep replying each one to get to expert level, not sure that full randomization @freeman-lab is what we want (or even permuting colors every time) but instead might want to have careful probe trials to determine wether they have over learnt a sequence of actions or built up a map

I'm still on the fence about the replenishing of the energy bar all the way after each target reach. I'm currently thinking no as it adds more difficulty / excitement, but it maybe makes us want to analyze each play as a unit (till victory / death) and look at learning across multiple plays instead of each stage as a unit and learning across multiple stages. Might be easier for our analysis to think about the former instead of the latter

@sofroniewn @andrewosh agreed, I guess I didn't mean full randomization, just enough random elements or probes or something that make replaying the same level interesting, and let us track behavior over multiple replays. I've wanted this for myself to make my own replays more interesting!

@freeman-lab - did some more play testing - I'm coming around to the idea of the energy bar not refilling all the way after reaching a target - it makes the moves more precious, and feel like the different stages are connected to each other, rather than just like "oh here we go again" after each time you restart

I think the stages should be represented pictorially with unfilled circles that fill up each time you reach a target. Having them unfilled lets you know how many there are to begin with, and also makes it a little more clear what the objective is. These circles can be underneath the score number, allowing us to get rid of everything below the outer ring

@sofroniewn interesting idea, just mocked it (desktop and mobile). I didn't like it under the score, top gets too busy, and having something at the bottom frames the play area nicely.

Only cons I see (compared to a stage number):

I want the option to make the number of stages unknown (e.g. a play till you die style), especially with energy carrying over that could be a fun style, and could do that this way, just without the empty circles, but then the circles will start appearing out of nowhere.
Will it be clear that the circles getting filled in are not related to collecting bits?
Does this look too much like the bars? Some visual similarity is good, too much becomes confusing.

For comparison, here's the layout I'm now thinking for the single stage number. I'm happy making it a 1/N btw for the times we want to indicate the total number.

@freeman-lab - at the bottom looks good for the dots, maybe on the left hand side though so it aligns with the energy bar.
I love the idea of play till you die, agree with energy bar not refilling it becomes more interesting, and agree way to do that easily is without the empty circles. Not sure we'd need to indicate the circles at all then or have any numbers.
I think it will be clear the filling of the circles corresponds to the reaching of the targets with the proper use of animations.
I think they look ok - different enough from the bars
But i'm really coming around to this play till you die idea, just have to make sure it really is getting harder as you go - could be important to introduce another mechanic like time pressure from getting chased to ensure that

Ok looking at the new post now - I like the stages with the 1/5 - quite elegant

Worth thinking about a fun way to not have stages, but just a play till you die, and the energy bar runs down and maybe you get chased too and chasing gets faster as you go further along in the level

Yup, totally with you, pressure would have to go up, could do simply with what we have just by adding a decay to energy that ramps up over time. Can try on another branch once this is done.
Still think some indication of stage / progress through stages will be useful though, even just to give you a qualitative sense of how far you've made it.

Ok - looking at both circles vs stage x/n, I'm sort of leaning towards stage x/n right now, just one less thing to explain, one less potentially confusing visual element

Ok, new stages layout implemented, I quite like it now. Last thing to decide for this PR is whether to have carry-over, I'm still on the fence! Need one more night's sleep on it. There's a lot I like, but my main concern: it has less score dynamic range than a version where energy -> points after each stage. We can tweak the numbers around, but fundamentally, because you can't have more than 100% energy, if we use carry-over, there's a hard cap on how much "score bonus" you can accumulate, and that cap limits the dynamic range.

Layout not working in mine - energy bar and score on different lines

Agreed with the less dynamic range - but the flip side comes if we move to a regime that is play till you die, then score becomes more dependent on the number of stages you progress through, and it might make more sense to have energy bar carry over

Ok, I found a solution. What I liked about the carry-over was the sense of continuity and that playing well early helped you later on. What I didn't like was the very indirect relationship between remaining moves and score, which was only realized at the end, and would have become meaningless in play-till-you-die anyway (by definition, ending with no energy = no score bonus).
So I just combined the two. When you complete a stage, you get a score boost based on your remaining energy, and your energy refills to what it was plus a small boost, i.e. it carries over. This also now trivially reduces to one extreme (if we get rid of that intermediate score boost) or the other (if we refill to 100%), each a one line change.
We can continue to experiment, but I'm happy with how this plays now, and think we should merge it in.

I like what you're trying to accomplish, and am glad its easy to switch around in the code, but I find it a bit odd that the bar goes all the way down to zero and then goes back up to this height that depends on how much of the bar was left. To me to continuity is broken when the energy bar hits zero. Maybe just make the bar flash as the extra points get added and not have them drain down?

Cool, good idea, I like this quite a lot now.

Better - should the energy bar drain on the final time you reach the target when the level is complete or would that now be inconsistent?

I think one visual cue should mean "energy -> score", either flashing or draining, but not both. If we want to keep the draining, then we could use some other visual element to make clear that your energy stays where it is even though what's left is being added to your score. But I kinda like the flashing, matches the flashing on the ring.

Fair enough - the flashing of the energy occurs at a slight delay and higher frequency to the flashing of the ring, might want to tweak the times slightly (slower blinking of the energy bar) to make it more clear what is happening - otherwise looks good to merge

Instead of stage 1 of 3, could be 1 of 3 collected - or just 1 collected, the idea being you have to collect the large white circles

Changed stage 1/N to 1/N found, and tweaked the flashing so one flash = one remaining move turned into score bonus. Delay was intentional, so eye is drawn first to the flashing, then the bar/score, rather than all at once, but I slowed the bar flashing down. Going to merge as is, can try adding an explicit numerical move counter in a follow-up change.


Problem with distinct()

Hi there,
Did you test distinct function?! I doubt if it's working. I'm trying with some records and I'm not seeing it's returning distinct values.
Here's the usage in 2 ways:
1st:
var cityAreas:[NSDictionary] = []
//filing somewhere in the code
cityAreas = dataContext.city.filter({$0.name ==  self.cityName!}).orderBy("area").select({$0.area}).distinct().toArray()

2nd:
let areas = dataContext.city.filter({$0.name ==  self.cityName!}).select({$0.area}).distinct()

Hello. You're right. That's why we have beta versions. The attribute query was not taking into consideration other previous parameters before making a new query.
About distinct results the NSFetchRequest documentation says: "A Boolean value that indicates whether the fetch request returns only distinct values for the fields specified by propertiesToFetch." For some reason, this is not happening. The problem was solved in another way which is not the best but it might work until a better one is found.
If you can, could you repeat the tests using the latest version of the framework in the "develop" branch?
Thank you very much.

Yes i confirm that now works, but does it worth to include this implementation of distinct() on real projects or no since it seems to be just a temporary solution?!
Thank you

Just for your information, this is my solution of the previous (maybe) stable version, that works fine
import Foundation
import CoreData

//Mark: BS
extension Table
{
    public func distinctValuesBy(attribute attributeName: String)-> [AnyObject]
    {
        let fetchRequest = self.toFetchRequest()
        fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
        fetchRequest.returnsDistinctResults = true
        fetchRequest.propertiesToFetch = [attributeName]

        var results = [Dictionary<String, AnyObject>]()
        var distinctValues = [AnyObject]()

        var error: NSError? = nil
        if let distinctResult = self.context.managedObjectContext.executeFetchRequest(fetchRequest, error: &error) as? [Dictionary<String, AnyObject>]
        {
            results = distinctResult

            for record in distinctResult
            {
                if let value: AnyObject = record[attributeName]
                {
                    distinctValues.append(value)
                }
            }

        }

        return distinctValues
    }

    public func distinctBy(attribute attributeName: String)-> NSArray
    {
        let fetchRequest = self.toFetchRequest()
        fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
        fetchRequest.returnsDistinctResults = true
        fetchRequest.propertiesToFetch = [attributeName]

        var results = [Dictionary<String, AnyObject>]()

        var error: NSError? = nil
        if let distinctResult = self.context.managedObjectContext.executeFetchRequest(fetchRequest, error: &error) as? [Dictionary<String, AnyObject>]
        {
            results = distinctResult
        }

        return results
    }
}

I really liked your code. :-)
Maybe something like this, returning a simple array instead of an array of NSDictionary, can be used in future versions?
About your question, the current implementation appears to be working.
Thank you.


[demo/worldpay] chore: linting

#17  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @keeganpotgieter and the rest of your teammates on  Graphite


Length of useEffect second argument

From this issue, adds a note to the docs that the second argument to useEffect must have a static length.

Hello @thchia, thank you for the contribution!
Unfortunately, the part of the documentation you update in this PR is no longer present in the latest version of it. Moreover, the updated part (separated between each hook) already contains the mentioning of the requirement of a constant number of items and be written inline (...).
Let me close this as PR as outdated, however, please feel free to create new PRs for other open issues!


Can't connect to prod db through Azure bastion

Background
We're not currently able to open a direct connection to the production database for manual efforts. (All works well in the app, this is specifically for the VM -> bastion -> log into db flow)
Action requested
It seems like something may have changed on the network side? Several people were able to create the VM but not connect to it, either through the bastion or the SSH option.
Acceptance Criteria
Devs can manually bastion to prod db as required
Additional context
The documentation for how to do this is here: https://github.com/usds/prime-simplereport-docs/blob/main/azure/query-db.md

@zdeveloper and I will be out next week, but @rin-skylight or @alismx if you need help reproducing @nathancrtr, @mehansen, and @DanielSass all ran into this issue as well.

I have a feeling this was due to some of the recent VNET changes for the Flexible DB. Should be a relatively quick fix.


If Azure App Service's custom domain verification will prevent domain taking over

[Enter feedback here]
I don't understand very well the statement in italic in the doc.
If the original owner release the resource and a hacker takes it over, if the CNAME is still in DNS, then the hacker will receive all the users traffic, and be able to control contents. The verification is only used to verify ownership of the custom domain when the application was initially set up, and it won't prevent adversaries from taking advantage of dangling DNS. Did I miss something?

Use Azure App Service's custom domain verification
When creating DNS entries for Azure App Service, create an asuid.{subdomain} TXT record with the Domain Verification ID. When such a TXT record exists, no other Azure Subscription can validate the Custom Domain that is, take it over.
These records don't prevent someone from creating the Azure App Service with the same name that's in your CNAME entry. Without the ability to prove ownership of the domain name, threat actors can't receive traffic or control the content.

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

ID: 647e9a22-fedf-a3d6-5bb3-54b635bdfba4
Version Independent ID: a35040bc-5e45-0514-fd49-e4b97813ed98
Content: Prevent subdomain takeovers with Azure DNS alias records and Azure App Service's custom domain verification
Content Source: articles/security/fundamentals/subdomain-takeover.md
Service: security
Sub-service: security-fundamentals
GitHub Login: @memildin
Microsoft Alias: memildin

@qiufasheng Thanks for your comment! We will review and provide an update as appropriate.

@qiufasheng The details in the document pertain to two different things. And what you have mentioned is completely correct that the hacker could redirect your users to their dummy site if they can use the same App service resource name as mentioned in your DNS CNAME record. This is the reason the records in public DNS for any organization must be vetted time to time. This responsibility lies with the organization to have a process in place which keeps a check on any mishaps of dangling DNS records.
These records don't prevent someone from creating the Azure App Service with the same name that's in your CNAME entry . Because this is something which cannot be controlled by the old owner of app service. Once you have deleted your app service instance , you must remove the CNAME redirection to avoid any threat actors to create a DNS of same name. The line in italics Without the ability to prove ownership of the domain name, threat actors can't receive traffic or control the content talks about the ownership of the domain name and how subdomain takeover cannot be done if a asuid.{subdomain} TXT record with the Domain Verification ID was created while setting up DNS for the app service.
I agree that the two lines talk about two different problems. The section on how to mitigate the threat defines the strategies that can be used in order to avoid any hacking due to DNS dangling issues. Hope this does clarifies your query. We will now close this issue. Should you have any further query , feel free to tag the author of the document @memildin or me to your reply and we will be happy to help .
Thank you.

Hi, Shashi,
@memildin
Thanks for the reply with explanation!
Then I feel the below sentence should be deleted or updated, to avoid confusing readers.
Without the ability to prove ownership of the domain name, threat actors can't receive traffic or control the content
Thanks!
Fasheng


webscoketbundle ssl connections

I use a server with nginx and when I try to configure it to work websocket for ssl installing and using stunnel documentation of the bundle gives me this error 'wss: //<IP_ADDRESS>: 8443 /' failed: WebSocket opening handshake was any help Canceled favor!!!!

Same problem :
WebSocket connection to 'wss://NDD:8443/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
(index):70 Disconnected for Connection could not be established. with code 3
stunnel is correctly configured and gos websocket server is running...

And with -- env = prod option, the server port is not correct.

I updated the SSL config. Try it and give me feedback.


Add thorough docs

Need docs on how to use this with kube-apiserver (via kubeadm, kops, etc).
Needs an easy deployment manifest and notes of various configuration options.
Also need docs for various ID providers (auth0, dex, others?)

Can we consider this one closed?


 I get this:
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value:

Error: Apply cancelled.

[terragrunt] 2018/03/22 23:17:51 exit status 1
Makefile:18: recipe for target 'build' failed
make: *** [build-shared] Error 1

There is no possibility to add any input. I mean the execution ends quickly by failing
I've already tried with TF_INPUT=0 and -input=false. But no luck.

Docker not configured correctly. Closed


Allow LimitCORE in [Service] for manage_unit/dropin

Pull Request (PR) description
Addition of LimitCOR to [service] section of
systemd::manage_unit and systemd::manage_dropin
Added as penance for giving a wrong guess twice to someone how to do this. Always confuse me since while:
systemctl show sshd.service -t LimitCORESoft has a value it cannot be set as I understand it.
There is some duplication here with the existing systemd::service_limits but that is fine.

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Process Properties

Test failure unrelated - tomorrow.


Hide booster customization fields by default

In Sealed/Team Sealed, the customization options should not be visible always.
Idea: Hide the big, optional list of booster dropdowns behind a checkbox, similar to some options in settings (edit booster content and limiting duplicates)
[ ] Customize the set of each booster (optional)

Implemented in fd3a2957826c751a5498d58e86a416e10e680e39


BigQuery listTables(DatasetId) does not use project overrided in DatasetId

My Google Application Default Credentials are set to the swast-scratch project, but I wish to list the tables in the publicdata project's samples dataset. This is a public dataset.
$ bq ls publicdata:samples
      tableId       Type
 ----------------- -------
  github_nested     TABLE
  github_timeline   TABLE
  gsod              TABLE
  natality          TABLE
  shakespeare       TABLE
  trigrams          TABLE
  wikipedia         TABLE

Example code that displays this issue:
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;
import com.google.cloud.bigquery.Table;
import java.io.PrintWriter;
import java.util.Iterator;

public class TableLister {
  public static void listTables(PrintWriter out) {
    BigQuery bigquery = BigQueryOptions.defaultInstance().service();
    Iterator<Table> tables = bigquery.listTables(DatasetId.of("publicdata", "samples")).iterateAll();
    while (tables.hasNext()) {
      out.println(tables.next());
    }
  }

  public static void main(String[] args) {
    listTables(new PrintWriter(System.out));
  }
}

It fails with the error: "message" : "Not found: Dataset swast-scratch:samples", so it appears that it is not using the project that I set in the DatasetId.
http://googlecloudplatform.github.io/gcloud-java/0.2.5/apidocs/com/google/cloud/bigquery/DatasetId.html#of-java.lang.String-java.lang.String-

Hi Tim!
Actually this behavior is intended. All service operations (create/delete/get/list) are tied to the project id you provided to BigQueryOptions. The reason for which DatasetId and TableId also expose factory methods that take a projectId is that jobs (for instance a copy job) can be created in your bigqueryOptions.projectId() project and operate on tables and datasets of a different project.
Do you have a specific use case for creating BigQueryOptions with a project id and list tables that reside in a dataset of a different project?

Well for public datasets I don't have permission to access the BigQuery API
through them, but I do want to access those tables. It seems weird to say
that to read from a public dataset I need to connect to that project when I
create the service object.

•  *Tim Swast
•  *Developer Programs Engineer
•  *Google Cloud DevRel
•<EMAIL_ADDRESS>•  +1<PHONE_NUMBER>

On Thu, Jul 21, 2016 at 7:17 AM, Marco Ziccardi<EMAIL_ADDRESS>wrote:

Hi Tim!
Actually this behavior is intended. All service operations
(create/delete/get/list) are tied to the project id you provided to
BigQueryOptions. The reason for which DatasetId and TableId also expose
factory methods that take a projectId is that jobs (for instance a copy
job) can be created in your bigqueryOptions.projectId() project and
operate on tables and datasets of a different project.
Do you have a specific use case for creating BigQueryOptions with a
project id and list tables that reside in a dataset of a different project?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-java/issues/1123#issuecomment-234267239,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPHA_Pan_AyhAlEQ1OL7rgIGqRCg2M3ks5qX39lgaJpZM4JRVD2
.

So, it looks like I can work around this issue using BigQueryOptions, but it does feel wrong.
BigQuery bigquery = BigQueryOptions.builder().projectId("publicdata").build().service();
Iterator<Table> tables = bigquery.listTables(DatasetId.of("samples")).iterateAll();
while (tables.hasNext()) {
  out.println(tables.next());
}

I'm not a member of the publicdata project, so it feels strange to connect to it like this.

At the very least, we should raise an exception if the project ID is populated in the DatasetId.
It should not be silently ignored.

I gave some thoughts on this and I think you are right. I'll try to wrap up a PR, I'll CC you so you can give it a try as soon as it's ready.


Spec

We sure need a spec for Mycomarkup.
The spec will be important for:

Standardisation. Projects like Vera's Python parser will benefit from this.
Formalisation. Everyone will benefit from this.
Gaslighting people into the fungal ways.
Explaining the design decisions.

And it will probably be fun to make.
The spec shall define a language usable not only in Mycorrhiza, as Mycomarkup is now. Sure, the library lets you transform Mycomarkup to HTML from the shell, but look at how links and images work and you'll come across radical mycocentrism there.
Some things to address when appropriating Mycomarkup for general usage:

Link rules
Error messages

Also, the spec should define the language HTML-agnostic. Sure, there will be sections explaining how Mycomarkup can/should be transformed into HTML, but they are not crucial for defining the language.
While writing the spec, we will definitely find some things that we have never really thought of. We might leave them undefined and come back to them in later versions.
The writing will take place on mycorrhiza.wiki, somewhere. There will be many hyphae, and one big epic hypha collecting them all together using transclusion.
As of versioning, we won't have versions per se until the pre-1.0 era comes. When it comes, we'll see what's next.

I started writing the spec here: https://mycorrhiza.wiki/hypha/spec


Can I consume an app service from a WinUI ?

Can I add a Windows Runtime Component to my WinUI project ? I guess no since that is an UAP. An app service must be hosted in this type of runtime component.
How can I integrate an app service into a WinUI exe ?
Consume an app service

Maybe you should look into CsWinRT repo to find how to reference winmd in .NET 5 project.
Even you can reference it, consuming app service may still not be supported.
This issue falls into the scope of CsWinRT or ProjectReunion.

Could you estimate the WinUI version that will support hosting and consuming app services ?

This not bound to WinUI version. It's about .NET 5/UWP.
WinUI 3 for UWP should be able to consume app service from the start.

I have a .NET 5 WPF (client) and the WinUI 3 (as service provider). I wish to alter some appearance of the WinUI application from the client, through this app service IPC. Can you advise how to integrate a Windows Runtime Component (Universal Windows) project through CsWinRT ?

https://github.com/microsoft/CsWinRT/blob/master/docs/usage.md

Do you think it is more straightforward than a classic named pipe empowered by the classic WCF ?
Frankly, I do not understand this :)

@stevenbrix @Scottj1s as FYI

@stevenbrix @Scottj1s as FYI

I do not expect the App Service architecture will fusion with the WinUI. Close if true.
I have found an alternative with gRpc through named pipes. GrpcDotNetNamedPipes
This seems to work for me as an IPC across different processes.


Using debian stable packages in source.list is upgrading the packages to debian 12

Using debian stable packages in source.list is upgrading the packages to debian 12 with notice. This is needs to be corrected to bullseye or the release packages.

Does it mean FROM debian:stable-slim should be replaced with something else?


Basic repository setup

This brand new shiny repository needs some help:

[ ] LICENSE
[ ] More descriptive README explaining what kinds of things go here vs. DC2-production vs. project-specific repositories
[ ] Statements in the README about the state of the code
[ ] A reasonable set of labels on the Issues page
[x] Protect master branch

Moved elsewhere:

Transfer of existing analysis codes from DC2-production - moved to #2
Add instruction for how to upload a notebook to this repo - moved to #3
A sensible directory structure  - moved to #3.

[ ] Add instruction for how to upload a notebook to this repo.

A related question, do we want to protect master branch or do we want to make it easier for people to upload their notebook (i.e., directly to master)?

@yymao - I've updated the comment in the first comment in this thread to reflect which tasks have been moved to their own issues.
Also, I made a start at a set of labels.  I thought that if we're mostly including analysis scripts here, then we can have labels that indicate (a) the type of data (e.g., "data:extragalactic"), (b) the access method (e.g. "access:butler"), and (c) the type of science it's relevant for (e.g., "analysis:PZ").  So if there's a script that's about reading in coadd data using the butler and plotting some WL quantities, it would get data:coadd, access:butler, analysis:WL.  If something is just about doing basic tests of accessing extragalactic catalogs using catalogs, it would get data:extragalactic, access:catalog (no science-related label).
The set of labels according to this scheme isn't yet complete, I just put a few examples of each type of data / access / analysis.  Thoughts on this are welcome.

Thanks, @rmandelb! That sounds good. Two minor points about naming:

Does access:catalog mean the same thing as access:gcr?
We are in fact renaming the "coadd catalog" to the "object catalog", so maybe we should label it data:object? (cc @drphilmarshall @wmwv, cf https://github.com/LSSTDESC/gcr-catalogs/pull/165)

It depends to a certain extent whether the labels are for the experts, who want to use the language they are already using to talk about the scripts, or for others who don't have all the jargon down.  GCR is the tool we'll use for accessing catalogs in these scripts, but people who are new to DC2 and try to find tutorials that are relevant to them by browsing the issue page will probably find access:catalog more intuitively understandable (we're accessing the data by reading catalogs) than access:gcr (we're accessing the data by... some acronym?).  There is of course a limit to how much jargon can reasonably be removed from the labels, so if there's a significant preference to use actual tool names consistently in all cases I'm fine with it.
We should be consistent across the repos, so if we're going to self-consistently rename the coadd catalog to something else, we should do it here too.

I was thinking that because gcr appears in many of the tutorial names, it might be easier for people to identify? Anyway, if access:catalog does mean using GCR but we just want to avoid acronym, then I would suggest that we use access:reader.
Yes, we have started the process of renaming "coadd" --> "object". Unfortunately we failed to do this before the tutorial, so there will be a period of time these two terms appear together. @wmwv can correct me but I think the plan is to consistently use "object" when releasing 1.2 data to the Collaboration.

Yes, Object catalog will be the new name in the presentation of data from Run 1.2.

Closing #1.


Create a setup.cfg File

As a developer
I need a setup.cfg file with nosetests options
So that I can seamlessly type nosetests to run the test suite
Details and Assumptions

Assumes nosetests are created/sourced

Acceptance Criteria
Given I am a developer with access to the codebase
When I run the command nosetests
Then nosetests are run successfully with appropriate verbosity

This is already in the Promotions repo (copied over from John's project-template repo). There, I don't think we need to do this and can tag this issue as 'won't fix'


[Bug] find_in_set查找含逗号数据返回结果为0

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
2.1.2
What's Wrong?
表test_table字段col1中含有值 [0,1)，值中含有逗号
通过sql查询：select distinct col1 find_in_set('[0,1)',col1) from test_table
查询返回的值是0
What You Expected?
匹配到对应的值，应该返回1
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

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

you can use  array_position


CORS access problem

Perhaps I have something misconfigured?
Access to XMLHttpRequest at 'https://fonts.googleapis.com/css?family=&subset=latin&text=&font-display=swap' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
I'm using it quite simply:
<FontPicker
    apiKey={Meteor.settings.public.googleFontAPIKey}
    activeFontFamily={font.family}
    filter={filterFonts}
    onChange={ (font) => updateOptions({ fontFamily: font.family }) }
  />

This was because of a filter method that was not correctly letting any of the fonts through (nothing was returning true). Leaving this here in case it helps someone else, but closing the issue.

This was because of a filter method that was not correctly letting any of the fonts through (nothing was returning true). Leaving this here in case it helps someone else, but closing the issue.


Schema::build generates incorrect schema

Hello :wave:
I've encountered an issue with async-graphql >= 2.9.4 where building a Schema object would result in a schema containing the wrong mutations and subscriptions.
Expected Behavior
Given the following files :
// src/mutations/a.rs
use async_graphql::SimpleObject;

#[derive(SimpleObject, Default)]
pub struct A {
    pub this_wont_show_up: u8,
}

// src/mutations/mod.rs
use a::A;
use async_graphql::MergedObject;

mod a;

#[derive(Default, MergedObject)]
pub struct Mutation(A);

// src/queries/a.rs
use async_graphql::SimpleObject;

#[derive(SimpleObject, Default)]
pub struct A {
    pub a: u8,
}

// src/queries/mod.rs
mod a;

use a::A;
use async_graphql::MergedObject;

#[derive(Default, MergedObject)]
pub struct Query(A);

// src/main.rs
mod mutations;
mod queries;

use mutations::Mutation;
use queries::Query;

fn main() {
    let schema = async_graphql::Schema::build(
        Query::default(),
        Mutation::default(),
        async_graphql::types::EmptySubscription::default(),
    )
    .finish();

    println!("{}", schema.sdl());
}

Running this code should display the following schema :
type Query {
        a: Int!
}
type Mutation {
        thisWontShowUp: Int!
}
schema {
        query: Query
        mutation: Mutation
}

Actual Behavior
Running the code above instead displays :
type Query {
        a: Int!
}
type Mutation {
        a: Int!
}
schema {
        query: Query
        mutation: Mutation
}

Notice the Mutation type containing the Query type's a field.
Steps to Reproduce the Problem

Clone the following repository:  https://github.com/Corb3nik/async-graphql-schema-issue
Run cargo run

Specifications

Version: >= 2.9.4
Platform: macos

This seems to be related to the fact that both the Query and Mutation types are composed from a struct with the same name. Changing the mutation's A struct to another name fixes the issue.

Don't define any type with the same GraphQL name, this will cause some strange problems.


[Upload] Undefined index

info

Only when uploading more than ~10 images

happened when was uploading via widget im My images

This issue is related to DataTable pagination.
Only data from visible page is being sent as rest is removed from dom upon page change.
Possible solutions to check:

https://stackoverflow.com/questions/42038727/how-to-send-to-records-in-data-table-pagination-to-the-server-class
https://datatables.net/forums/discussion/48151/how-to-turn-off-pagination

submit.on(...{
event.prevent();
readDatatableRows();
insertTheRowsInDomAsHidden();
submit();
})

Fixed: 56c4a4dd8d655e2f80a0c41e7f13144cce970047


[zh] translate task/Install and Set Up kubectl on Linux

transalte following files into Chinese:
docs/tasks/tools/included/optional-kubectl-configs-bash-linux.md
docs/tasks/tools/install-kubectl-linux.md
close #27002

/approve

sorry I don't have bandwidth for this recently...
/uncc
/auto-cc

/lgtm


Missing Scripts

This is a (multiple allowed):

[x] bug

[ ] enhancement

[ ] feature-discussion (RFC)

Framework7 Version: EXACT RELEASE VERSION OR COMMIT HASH, HERE.

Live Link or JSFiddle/Codepen: PREFERABLY (IF YOU WANT YOUR ISSUE TO BE RESOLVED ASAP). You can start from forking one of the templates: iOS JSFiddle/Codepen, Material JSFiddle/Codepen

What you did
EXPLAIN WHAT YOU DID, PREFERABLY WITH CODE EXAMPLES, HERE.
Expected Behavior
EXPLAIN WHAT IS TO BE EXPECTED, HERE.
Actual Behavior
EXPLAIN WHAT IS ACTUALLY HAPPENING, HERE.
P.S. Remember, an issue is not the place to ask questions. You can use Stack Overflow
for that or join the #framework7 channel on irc.freenode.net, where we will be more
than happy to help answer your questions.
Before you open an issue, please check if a similar issue already exists or has been closed before.

cloned v2
npm install
npm install rollup --save-dev
npm run build-dev  - missing build-dev script
npm run build-prod -missing build-prod script

Also html/css and js are from version 1.65 ?

Looks like you are cloned v1 instead if you see old scripts there


Tooling and documentation to create the ingestible library package

Description
As a Carbon Aware Application Developer, I want to install the SDK as a C# Library from a package, so that I can use the SDK within my application.
Library Packaging Design
Acceptance Criteria
Tooling

[ ] Ensure there is a tool identified and available to use for packaging.
[ ] Verify the package can be signed with a certificate.
[ ] Verify debug symbols are adding to the package.
[ ] Ensure a script is available that will build the package from a repository.

Documentation:

[ ] Document steps on how to generate CarbonAware packages.

[ ] Document a Getting Started Guide on How to Write a Client/Consumer of the SDK

[ ] Verify the packaging will install within a C# application or Azure Function

Dependencies
Task List

[x] Create Github Action workflow
[x] Test bash scripts on Linux/Unix
[x] Test bash scripts on Windows
[ ] Add docs on how to create packages and consume
[x] Modify .csproj files to include/exclude certain projects
[ ] Create demo gif

Sprint-Ready Checklist

[ ] Acceptance criteria defined
[ ] Acceptance criteria is verifiable / testable
[ ] External / 3rd Party dependencies identified
[ ] Engineering team understands acceptance criteria
[ ] Is the user story small enough to be implemented in a short amount of time, but large enough to provide value?

Closing this story will be blocked until #157  merges as it will require a change with the location source .csproj file for packaging

For signing the packages, there is no code signing certificate to be included at the moment.


Calling IBMQ.load_accounts() twice should give warning, not exception

Informations

Qiskit Terra version: latest master
Python version: 3.7
Operating system: OSX

What is the current behavior?
Calling IBMQ.load_accounts() twice gives an Exception.  However, in notebooks, it is common to just run multiple cells (or whole notebooks) repeatedly.  Raising an exception breaks this convenient workflow.  A similar issue, #673 , was raised and corrected, previously.
Steps to reproduce the problem
What is the expected behavior?

This issue was not fixed in #962.  A new Exception is now raised if IBMQ.load_accounts() is called twice:

IBMQAccountError: 'Credentials are already in use'


Partially added flashcard remind feature DG changes and UML diagrams

Your DG segment is headed in a good direction! :D


waitKey detect GPIO from Raspbery

Expected behaviour
Detect GPIO instead of Keyboard pressed
Actual behaviour
Working fine with keyboard
Steps to reproduce
I try to control a video from a Raspberry GPIO Button, the script works fine with keyboard inputs, but I'd like to know a way to plug the GPIO in,
Thanks !!
Issue submission checklist

[x] This is not a generic OpenCV usage question (looking for help for coding, other usage questions, homework etc.)

[x] I have read the README of this repository and understand that this repository provides only an automated build toolchain for OpenCV Python packages (there is no actual OpenCV code here)

[ x The issue is related to the build scripts in this repository, to the pre-built binaries or is a feature request (such as "please enable this additional dependency")

[x] I'm using the latest version of opencv-python

OpenCV cv::wayKey function triggers internal UI libraries event loop and has 2 purposes:


Applying diff with renamed file to Index ignores delta callback and removes old file from index

How to reproduce:

rename file in repository
apply diff from index to workdir with delta callback returning false

Estimated behaviour: index remain unchanged. no changes staged.
Current behaviour: old file deleted from index.
use git2::{
    Repository, ApplyOptions, ApplyLocation
};

fn main() {

    // just rename 1 file in repositiry and run this.
    // old file will be removed from index.
    let repo = Repository::open("./")
        .expect("can't open repo");
    let git_diff = repo.diff_index_to_workdir(None, None)
        .expect("can't get diff");

    let mut options = ApplyOptions::new();
    options.hunk_callback(|odh| -> bool {
        false
    });
    options.delta_callback(|odd| -> bool {
        false
    });

    repo.apply(
        &git_diff,
        ApplyLocation::Index,
        Some(&mut options),
    ).expect("can't apply patch");
}

Probably best to post upstream in libgit2 repo (repro in rust is fine) as git2-rs is just bindings

Thank You

https://github.com/libgit2/libgit2/issues/6643

Thanks! We don't mirror or track libgit2 issues here, so I'm going to close this as it does look like an upstream issue. If it gets fixed, we'll pick the fix up in the next update.


cinnamon.xapps: init at 1.6.4

Motivation for this change
This adds the xapps package and it's python module to nixpkgs, to allow for the cinnamon desktop to be ported
Things done

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

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

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

Notify maintainers
cc @

IMO this is done so far. Only thing left is some unanswered questions in the review-comments & the upstream patch for glib not being found.

@mkg20001 I can look into

It also seems to not be patched properly by python setup hooks, and even has an FHS shebang in one file. Will look into that later.

@mkg20001 I dropped those shebangs in https://github.com/linuxmint/python-xapp/pull/12. But I don't think we should care to patch yet.

also getting:
[02:25:29] jon@jon-desktop /home/jon/.cache/nix-review/pr-75138-2
$ ./result/bin/pastebin --help
./result/bin/pastebin: /nix/store/c8pqgwn2pkgmms9cwsz11nwhx0imhwry-xapps-1.6.4/bin/.pastebin-wrapped: /usr/bin/python3: bad interpreter: No such file or directory
./result/bin/pastebin: line 8: /nix/store/c8pqgwn2pkgmms9cwsz11nwhx0imhwry-xapps-1.6.4/bin/.pastebin-wrapped: Success

@jonringer Unsure why you're getting that error, mine seems fine
maciej@mkg-pc:~/Projekte/nixpkgsv$ cat /nix/store/wmbqv3kq6jsxr6arnwm78zb4ycjfyvi3-xapps-1.6.4/bin/.pastebin-wrapped  | grep python3
#!/nix/store/h3fn2vr6c5jh0mjf02ir26cxb6vcdxd8-python3-3.7.5-env/bin/python3

Yeah LGTM as well @jonringer. Perhaps your local branch is out of date.

probably, i think i remember him pushing, ill give it another test

@GrahamcOfBorg build cinnamon.xapps python27Packages.xapp python37Packages.xapp python38Packages.xapp

@worldofpeace you still have a "change request", are you good with this?

I believe https://github.com/NixOS/nixpkgs/pull/75138#discussion_r357840849 broke things.
The package would probably propagate python, but not a python with the package in site-packages. So everything gets patchShebang'd with a plain python. That's what withPackages is for, but we still need the package in buildInputs because it needs the .pc for meson.

oh, well, it's currently in buildinputs, which wouldn't get propagated anyway. If it's just needed for meson, then shouldn't that go in nativeBuildInputs?

oh, well, it's currently in buildinputs, which wouldn't get propagated anyway. If it's just needed for meson, then shouldn't that go in nativeBuildInputs?

It's needed for meson, we missed this because it was a runtime dependency.
I checked and I don't see it in a shebang so we're good https://github.com/linuxmint/xapps/search?utf8=✓&q=python&type=. But python should be in nativeBuildInputs

Which python should be in native build inputs? The one with withPackages or the python3Packages.pygoobject3 @worldofpeace

I've noticed that upload-system-info was referencing pastebin via a non-nix fixed path, fixed that
It also uses inxi from $PATH. How should that be handled? Include it as a buildInput? Or just add it to the system via the cinnamon nixos module?

if you want it to remain in python-modules, so that it can be used by other packages, you need to patch the call. Something like popen("inixi",...) -> popen("${inixi-package}/bin/inxi",...
Patching is required because you can't count on any type of wrapping :(
If it's an application (and not meant to be imported by other packages), then you can do as much wrapping as you would like

upload-system-info is part of xapps, not python-xapp

oh, for xapps? then you can use makeWrapper, here's an example for minecraft: https://github.com/NixOS/nixpkgs/blob/9ace40c7651dd15694c30a6a234b489d2750f765/pkgs/games/minecraft/default.nix#L113

@jonringer I've ended up directly patching the location, since the executables are already wrapped and double-wrapping seems a tad too much
@worldofpeace Is pygobject3 just a build dependency? The scripts seem to require python, so unsure what to do here.

@mkg20001 Our reviews become divisive here. Anything that was an issue I fixed in the force push.
If you'd like an explanation please PM on @worldofpeace on Freenode or Matrix/Riot, or in #nixos-dev.


couldnt crack rpg maker vx ace

i launched the program, set the appid (220700) and the folder path to my steam copy of RPG Maker VX Ace, set Generator API to Offline, hit Start and the process finished then I opened rpg maker and the program booted up.
when I try to open a game's .rvproj2 file it crashes like this tho:

and when you go to File - New Project rpg maker gets stuck until you close it.

try update goldberg emulator and generate interface file first

try update goldberg emulator and generate interface file first

is that something i gotta go out of my way to do? cause i dont see a button to generate interfaces
when u say update goldberg emulator you mean to download the last version?
is it https://gitlab.com/Mr_Goldberg/goldberg_emulator/-/jobs/4247811310/artifacts/download or something else?

it's all in the program itself. update is in setting and interface is in the main window

it's all in the program itself. update is in setting and interface is in the main window

ohh I found them
yeah that worked out the program boots up and works normally
thanks!!


plist path fix

This adds the info plist path to the framework targets so that the final product includes the info.plist (needed for carthage).
The indentation changes, I'm guessing, are due to differing versions of Xcode.

Hey @marcuseckert, thanks again for taking the time to PR! I'm going to close this out, especially as we are focussing on SPM as the main delivery mechanism for our libraries now.


Getting an error when deploying

Hi,
i get the following error when deploying
Failures:
objects/Account.object(16,26):In field: Account_Type__c - no CustomField named Account.Account_Type__c found
classes/FieldsetController.cls(67,70):Method does not exist or incorrect signature: void getLabel() from the type FieldSet
classes/FieldsetController.cls(72,82):Method does not exist or incorrect signature: void getFields() from the type FieldSet
classes/FieldsetController.cls(74,55):Method does not exist or incorrect signature: void getFieldPath() from the type FieldSetMember
classes/FieldsetControllerTest.cls(61,35):Dependent class is invalid and needs recompilation:
Class FieldsetController : Illegal assignment from Map to Map
lwc/fieldset/fieldset.js(fieldset):Unable to find Apex action class referenced as 'FieldsetController'.
classes/FieldsetController.cls(61,35):Illegal assignment from Map to Map

After creating the 2 custom fields, i still get
Failures:
classes/FieldsetController.cls(61,35):Illegal assignment from Map to Map
classes/FieldsetController.cls(67,70):Method does not exist or incorrect signature: void getLabel() from the type FieldSet
classes/FieldsetController.cls(72,82):Method does not exist or incorrect signature: void getFields() from the type FieldSet
classes/FieldsetController.cls(74,55):Method does not exist or incorrect signature: void getFieldPath() from the type FieldSetMember
classes/FieldsetControllerTest.cls(61,35):Dependent class is invalid and needs recompilation:
Class FieldsetController : Illegal assignment from Map to Map
lwc/fieldset/fieldset.js(fieldset):Unable to find Apex action class referenced as 'FieldsetController'.

Hello @BenRoche,
Thanks for reporting the Custom Fields issue. I have fixed that.
I tested the deployment to a developer org and it successfully deployed.
Cheers,
Tiaan


Create object to represent OpenFOAM dictionary

Will also need to create FoamList objects, etc., along with their appropriate __str__ methods for writing to file.

Would it be better to attempt to wrap the actual C++ object in OpenFOAM, or write a custom parser?

Take a look at https://github.com/ladybug-tools/butterfly

Note that this has been started in the types module, but is almost nothing at the moment.


Identify and document the purpose of "design-with-permission-rel" files or remove

Current Behavior
https://github.com/meshery/meshery/blob/2c6dba003ef2b06727ca609329bed266ac79f606/server/meshmodel/kubernetes/v1.25.2/v1.0.0/design-with-permission-rel-2.yml

Contributor Guides and Handbook

🛠 Meshery Build & Release Strategy
📚 Instructions for contributing to documentation

Meshery documentation site and source

🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

This design file consists of valid/semi-valid relationships, currently, it doesn't have any use, but as @ctcarrier takes on to write tests for policies we can use these design files.

I will remove it for now, as it was added by mistake.


Documentation error

https://formeo.readthedocs.io/en/latest/options/
const defaults = {
    dataType: 'json',
    debug: false,
    className: 'formeo',
    container: '.formeo', // <-- container should be editorContainer

The edit on github link is broken, maybe it needs to be republished?  I have some other documentation edits I'm happy to make when that works.
On a related note, it would be better (IMHO) if the container/editorContaine could be a jquery object (or a DOM element?).  Right now my class code has the very hacky:
const defaults = {
            editorContainer: '#' + this.$element.attr('id'),

Obvious, I'd rather simply pass in $element (the jQuery object that was passed in the constructor).

there is a function called getContainer in formeo i can extend to support jquery objects. thanks for pointing out the documentation issue.

To be clear, this is the link that's broken, the "Edit on Github"

I see, thanks for following up after so much time. I'll get readthedocs updated until the new documentation website is ready.


feat: add BodyInspectionHandler

Closes #482
Docs updates done via https://github.com/MicrosoftDocs/openapi-docs/pull/140.

Thanks for the contribution here @marcinjahn
Any chance you can also run dotnet format command from the project root to resolve the linting errors?

I pushed dotnet formatted code now

@baywet @andrueastman Please have a look, I simplified it juat a little bit. The RequestStream and ResponseStream are no longer nullable, they're Stream.Null by default, and this is also the value being returned anytime there is no content in request/response. Previously, I'd return null or Stream.Null and probably it doens't make sense to do that, especially since it was not documented when each one gets returned.


Update Routing.pod

$t->post_ok('/blackjack')->status_code(200);
The current "under" example in this guide, does not specify a specific status code.  So a test like this passes even though the "under" function failed which was not expected (could just be me).  I realize I could test the content of the failure but seems useful to check the status codes as well.
I thought it might be useful to show how the failure of the "under" function could be used to return a different status code.
$t->get_ok('/blackjack')->status_code(401);
$t->get_ok('/blackjack' => { 'X-Bender' => 1 })->status_code(200);

LGTM :+1: