proposal: pointer package

My apologies if this is a duplicate proposal, but the keywords are too generic to make search useful.

Description
Due to addressability rules, some literals cannot have pointers made of them inline. This has led to a number of third party implementations of this logic:
func Bool(v bool) *bool                   { return &v }
func Byte(v byte) *byte                   { return &v }
func Complex128(v complex128) *complex128 { return &v }
func Complex64(v complex64) *complex64    { return &v }
func Float32(v float32) *float32          { return &v }
func Float64(v float64) *float64          { return &v }
func Int(v int) *int                      { return &v }
func Int16(v int16) *int16                { return &v }
func Int32(v int32) *int32                { return &v }
func Int64(v int64) *int64                { return &v }
func Int8(v int8) *int8                   { return &v }
func Rune(v rune) *rune                   { return &v }
func String(v string) *string             { return &v }
func Uint(v uint) *uint                   { return &v }
func Uint16(v uint16) *uint16             { return &v }
func Uint32(v uint32) *uint32             { return &v }
func Uint64(v uint64) *uint64             { return &v }
func Uint8(v uint8) *uint8                { return &v }
func Uintptr(v uintptr) *uintptr          { return &v }

I think pointer is a better package than the alternative, ptr, since that could conflict with common variable names. I would like to propose that this logic be merged into one of the following locations:

pointer
golang.org/x/pointer
golang.org/x/tools/pointer
golang.org/x/exp/pointer

Rebuttal
While I am pretty sure this could be solved with the current generics proposal, or reflection, it is my opinion that these 18 functions provide sufficient benefit to justify their existence today.
Exclusions
Many third party implementations include other primitives that help with other pointer issues. Due to a variety of issues I do not think they warrant inclusion today, and are broken out below for completeness.
func Xxx(pkg.Xxx) *pkg.Xxx
Functions for named types like time.Time or time.Duration are also useful, but even limiting ourselves to the stdlib could be a lot of symbols.
func XxxEqual(*xxx, *xxx) bool
While this can be helpful, I think reflect.DeepEqual meets the needs, at some runtime cost.
func XxxSlice([]xxx) []*xxx
Pointering a slice can be painful, but the lack of support for custom types means this is more about convenience than covering addressability issues. This feels like a problem for generics.
func XxxYyyMap(map[xxx]yyy) map[xxx]*yyy
This just feels really niche, and would benefit more from a generic solution. Even more than slices, because of explosion of possibilities, this suffers from the lack of support for custom types.
func XxxValue(*xxx) xxx
This is really just a convenience function for "give me the default value if nil, instead of panicking". It is helpful, but really should apply to all types, so I vote generic solution.
func XxxYyyValueMap(map[xxx]*yyy) map[xxx]yyy / func XxxValueSlice([]xxx) []xxx
All the problems with Map and Slice, plus the complexities of Value: use generics.
Prior Art

https://pkg.go.dev/github.com/AlekSi/pointer
https://pkg.go.dev/go.uber.org/thriftrw/ptr
https://pkg.go.dev/github.com/turbinelabs/nonstdlib/ptr
https://pkg.go.dev/github.com/wacul/ptr
https://pkg.go.dev/github.com/go-courier/ptr
https://pkg.go.dev/github.com/aws/aws-sdk-go/aws
and many more

I often need these, and also get annoyed by the proliferation of silly helper packages.
I think a nicer fix would be a small language change to allow easier construction of pointers from literals:
p := &int64(3) // shorthand for 'n := int64(3); p := &n'
p := &"hello"  // shorthand for 's := "hello"; p := &s'
p := &0        // shorthand for 'n := 0; p := &n'; p has type *int

I thought we had an issue for something like this, but now I'm having trouble finding it.

I thought we had an issue for something like this, but now I'm having trouble finding it.

That's probably #9097. See also the previous #37302.

That's probably #9097. See also the previous #37302.

Awesome, thanks @zikaeroh. That being said this proposal seems to differ even from #37302, since it does not ask to be a builtin or part of the stdlib. I agree #9097 would be better, but the conversation seems stalled, I think this would be nice to throw somewhere, even golang.org/x/exp.

Requesting inclusion in #33502.

In my https://github.com/rocketlaunchr/igo package, I just do this:
v := "string"
vptr := &[]string{"string"}[0]  // inlined instead of  using &v

I am unclear on the perf implications, but it seems like everything escapes to the heap:
package main

import "fmt"

func main() {
	a := "string"
	p0 := &a
	p1 := func() *string { b := "string"; return &b }()
	p2 := func(c string) *string { return &c }("string")
	p3 := &[]string{"string"}[0]

	fmt.Println(a, p0, p1, p2, p3)
}

[user@localhost test]$ go build -gcflags -m -o /dev/null
# trash
./main.go:8:8: can inline main.func1
./main.go:8:51: inlining call to main.func1
./main.go:9:8: can inline main.func2
./main.go:9:44: inlining call to main.func2
./main.go:12:13: inlining call to fmt.Println
./main.go:6:2: moved to heap: a
./main.go:8:51: moved to heap: b
./main.go:9:44: moved to heap: c
./main.go:10:17: []string literal escapes to heap
./main.go:12:13: a escapes to heap
./main.go:12:13: []interface {} literal does not escape
<autogenerated>:1: .this does not escape

@carnott-snap For my https://github.com/rocketlaunchr/igo, in your opinion which technique should I use in terms of performance or memory? (obviously they are all close to neglible but wondering)

Benchmarking seems to show that all of these are operating at 30 ns/op, so that should not matter. p0 is the most space efficient (a on the heap, p0 on the stack), but with p1 and p2, they should be equivalent. My concern with p3 is that while it is easier to write, you leave a dangling []string on the heap, but the compiler may be smart enough to realise that you drop the reference to the slice? Since you are generating code anyway, I would expand to p0, or p1/p2if you want the kurt syntax, lexical scoping, and are fine possibly missing the inlining. Though the lexical scoping could be done with{}`s too:
var p4 *string
{
        a := "string"
        p4 = &a
}

Another alternative is to give new a value parameter.
i := new(int, 8)
s := new(string, "foo")

I don't like this idea.

@as Even though you thumbed down your suggestion, the new seems more convenient than using a separate pointer package.
eg
import p "pointerpkg"

b := p.Bool(true)

vs

b := new(bool, true)

While I don’t like it, I admit it may be of value for the discussion. It seems more orthogonal than a package for every scalar type.

Just a random observation for evaluating the proposal: if the goal to be achieved by taking the pointer is signaling whether the value is defined or not (this comes up often e.g. when handling serialization formats like JSON or protobuf to distinguish between a value being unset or having the zero value), then arguably a better solution[1] would be, with generics, some kind of optional container (like std::optional in C++ or std::option in rust).

[1] as it would require less memory (1 byte overhead or potentially less, vs. 4/8 bytes overhead for the pointer), and would likely yield better memory locality in common cases

My proposal does not speak to why pointers of scalars are needed, in part to prevent bikeshedding, but there are a number of other use cases that require a pointer to a value: flag returns incomplete entries, encoding/json mutates pointer parameters.
To your point about optionals, I agree and tend to prefer multi return, func do() (v T, ok bool) or packages, like github.com/antihax/optional, over *T. Unfortunately, the community does not seem so enthusiastic. Maybe that will change with generics, #15292, but unless they add a Box type, we cannot get away from pointers for mutability.

It is important to discuss why a proposal is needed. That is key to evaluating its benefit. If all a proposal has are costs, we will not adopt it. In this case, I don't actually see why this proposal is needed, except for protocol buffers, which already define these helpers.
The comment above this one mentions package flag and encoding/json. But this package wouldn't seem to help either.

For package flag, you register a flag with
var count = flag.Int("count", 1, "run `n` times")

That doesn't require the new pointer package. There is also a helper flag.IntVar that takes a *int, which can be used like this:
var count = 1
func init() { flag.IntVar(&count, "n", count, "run `n` times")

(This is more awkward to write but sometimes you want count to be a plain int instead of a *int.)
There's no use for the pointer package here either. You cannot write:
func init() { flag.IntVar(pointer.Int(), "n", 1, "run `n` times")

because now you have no way to access the flag value. You could write:
var count = pointer.Int(1)
func init() { flag.IntVar(count, "n", 1, "run `n` times")

but that's equivalent to the first example above (using flag.Int), meaning the flag API does not benefit from the pointer package, and it's arguably worse than the second example - if you're going to the trouble to write the code this way, you might as well get a non-pointer variable for the effort.

For package json, the main place that requires a pointer is the call to Unmarshal. Just like with flag.IntVar, if you pass the result of pointer.Foo into Unmarshal, you have no way to retrieve the value.
It's true that some people write structs with *int fields to use with package json. Maybe populating those structs would benefit from package pointer. Overall I'd rather see more use of "missing = 0" and the ,omitempty tag, which performs better anyway, than explicit pointers. The pointer package would encourage an inefficient and more clunky way of using package json.

What other use cases would justify adding this package?

It is important to discuss why a proposal is needed. That is key to evaluating its benefit. If all a proposal has are costs, we will not adopt it. In this case, I don't actually see why this proposal is needed, except for protocol buffers, which already define these helpers.

Apologies, I missed one; will have added it to the list at the beginning.
My argument is that this proliferation of these helpers is problematic. It is not just protocol buffers, note that thrift does the same thing. Do we expect every new IDL or interested author to implement them? There is a clear need from the community, and no canonical implementation, so can we publish one somewhere? It need not be stdlib, I am happy with it living in golang.org/x/pointer or golang.org/x/exp/pointer.

but that's equivalent to the first example above (using flag.Int), meaning the flag API does not benefit from the pointer package, and it's arguably worse than the second example - if you're going to the trouble to write the code this way, you might as well get a non-pointer variable for the effort.

This sentiment is contrary to the preferences I have seen in the wild. Customers will pull in the whole AWS sdk just to get aws.Int so that they can store var count = aws.Int(1).

It's true that some people write structs with *int fields to use with package json. Maybe populating those structs would benefit from package pointer.

Overall I'd rather see more use of "missing = 0" and the ,omitempty tag, which performs better anyway, than explicit pointers. The pointer package would encourage an inefficient and more clunky way of using package json.
What other use cases would justify adding this package?

I see two primary use cases: mutability and optionality:
For mutability, I agree that taking an inline pointer to a stack variable is likely sufficient, and frequently what I do, but some people still prefer to grab a pointer helper, and store var count *int directly.
For optionality, we can say that you should use meaningful defaults, but people currently do not listen, or need to be able to represent &"" an nil. We could wait for generics, but I feel like I would get the same pushback for types.Pointer(v Scalar). Finally, we could expose a first class optional interface, this too would be better with generics, but even a stop gap interface would be an improvement over the status quo.

I think the point is, aws.String is the cure worse than the disease. It would be better to propose an elegant solution that eliminates the need for pointer types in APIs, rather than one that makes them more ubiquitous.

Honestly, it was probably a mistake in proto to use pointers for optionality. I don't really want to encourage more of that.

This sentiment is contrary to the preferences I have seen in the wild. Customers will pull in the whole AWS sdk just to get aws.Int so that they can store var count = aws.Int(1).

If the customer is already using AWS, that seems fine. If not, that seems a bit strange (and maybe a teachable moment about dependencies). I certainly don't think it's the norm to import aws just for a *int constructor.
It is worth noting that this whole package reduces to a single line with the contracts proposal that @ianlancetaylor talked about at Gophercon last year:
func PointerTo(type T)(t T) *T { return &t }

and you could use it like PointerTo(1), without needing to say (int).
Are there uses other than proto-like IDLs?

A bit more detail on some proto-like use cases other than proto itself.
I see this problem in our (@Khan) codebase with GraphQL APIs (for us, via gqlgen and shurcooL/graphql), and with database models (for us, via Google Cloud Datastore).  Only shurcooL/graphql includes pointer helpers, although obviously the others could.
Perhaps using pointers for optionality was the wrong choice for these packages, too, but it's definitely not just proto that encourages it.  Datastore does have an omitempty option, but the way gqlgen works makes it less clear how that could be done.  And for both we do sometimes need both zero and null, sometimes for semantic reasons and sometimes for legacy reasons or interop with other languages.
One thing to add to that: the most common place where this comes out to be a problem for us is in tests.  In non-test code the value you want to take the address of often comes from application logic, and assigning it to a variable may already be necessary or improve readability.  But in tests you often just want to use a literal string/int/etc., and it's clearest to put it inline.
(Personally, I still end up ambivalent on the proposal: I don't like the cognitive overhead of having a function that you might have to look up what it does.  A standard library package is less bad than a third-party package one is less likely to have seen, but it also sanctions the practice.  Assigning a variable, or some of the options in #9097, have more obvious effect even if you've never seen them before.)

Honestly, it was probably a mistake in proto to use pointers for optionality. I don't really want to encourage more of that.

In practice and because of my functional background, I agree, but I have yet to find a good solution for optionality. My desired outcome is a solution to pointer helper diaspora, so I am open to options. Is there interest in an option package, or is your suggestion to simply not?
E.g. without generics we cannot get the filter/map/reduce benefits:
option.Some("string").map(strings.ToLower).or("default")

And are just left with the same pointer interface, just cluttered with different boilerplate:
var s option.String = strings.Some("string") // var s *string = func() *string() { s := "string"; return &s }
if s.Nil() { /* ... */ }                     // if s == nil { /* ... */ }
return s.Value()                             //  return *s

Generic options might be interesting but wouldn't retroactively change the existing APIs.
It still seems like if this is important for your code (especially in a test), it's fine to write the one-line helper functions you need. I often end up doing that for all kind of data structures in tests, not just simple pointers. And those helpers will get even easier if we adopt the generics design, as noted before.
Based on the discussion above, this seems like a likely decline.

I think we are on the same page, but I would also like to change the status quo. Can we codify your claim that "[i]t was probably a mistake in proto to use pointers for optionality. I don't really want to encourage more of that". One option would be to give a clear suggestion for optionality, like:

It should not be implemented with pointers.
Defaults should be the missing case.
Use a wrapper type if you need to differentiate missing from default.

Also, I am curious if there is no where in the listed import paths where this package could be published. I agree that stdlib is not right, but putting a deprecated package in golang.org/x/exp would be a nice virtue signal to the community.

Speaking personally, I think the right choice for optionality is going to depend on other details.  In something like proto, I think the natural approaches would be to add a presence field for each value field, or to use one or more uint bitmasks recording presence information for each field.  The point is that it should not be implemented with pointers, as that puts more load on the garbage collector and destroys memory locality.  For data structures other than proto, different guidelines may apply.  It depends on how they are used.
Anybody can create a go-gettable pointer package, it doesn't have to be in x/exp.

Do you think there is anywhere that would be reasonable to document the problems and alternatives of using pointers for optionality? This question has come up several times at work, but I do not have anything I can point to, at least in part due to my own naivete.

Write a blog post?
I don't know of a good place for that kind of information on the Go website.  Sorry.


Add BeotsMusic version 0.8

Thank you for the contribution. It needed some fixes, so they were made in the below referenced pull request. Your contribution is still included (and still credited to you), with the appropriate modifications. Please feel free to ask about any of the changes.


View collection exercise state on ce details page

Dependent on US011. Covers the UI for US047, US042, US040, US028 and US041. Adds the collection exercise state to the collection exercise details page.

 US047: Create and View 'Live' State of a CE [M]

Codecov Report

Merging #49 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #49      +/-   ##
==========================================
+ Coverage   99.55%   99.55%   +<.01%
==========================================
  Files          24       24
  Lines         445      447       +2
==========================================
+ Hits          443      445       +2
  Misses          2        2

Impacted Files
Coverage Δ

...esponse_operations_ui/views/collection_exercise.py
100% <100%> (ø)
:arrow_up:

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 e0bab08...ffb37eb. Read the comment docs.

Isn't this PR the same as Faisal's, whats happening to that PR now?

I am going to have a word with Mark about that

 US011 Display State of a Collection Exercise [M]

 US040: Create and View 'Created' State of a CE [M]


Reverse a Number

Add resources not codes
Add resources like courses, certifications, roadmaps, notes, cheat sheet, etc


Errors on console updating package

I tried updating the NodeJs package using ChocolateyGUI Version v0.14.0-unstable0144. While update was successful cn the console several errors are shown:
2016-12-19 14:03:14.172 +01:00 [Error] Error when setting configuration for 'chocolatey.licensed.infrastructure.app.builders.ConfigurationBuilder':
 Exception has been thrown by the target of an invocation.

Full log

That's bizarre....the install was indeed fine, but for some reason chocolatey was failing to serialize some odd property. And since you were able to install, it likely wasn't a full on permissions eror. Somehow you have permission to install, but not to write C:\ProgramData\chocolatey\config\chocolatey.config.update. /cc @ferventcoder any ideas?

Just starting ChocolateyGUI also leads to some errors:
2016-12-19 14:16:47.733 +01:00 [Information] Starting WAMP Client on port 24606.
2016-12-19 14:16:48.515 +01:00 [Information] Server started at ws://<IP_ADDRESS>:24606/ws
2016-12-19 14:16:50.616 +01:00 [Error] Error when setting configuration for 'chocolatey.licensed.infrastructure.app.builders.ConfigurationBuilder':
 Exception has been thrown by the target of an invocation.
2016-12-19 14:16:50.624 +01:00 [Error] Error serializing type chocolatey.infrastructure.app.configuration.ConfigFileSettings:
 Access to the path 'C:\ProgramData\chocolatey\config\chocolatey.config.update' is denied.
2016-12-19 14:16:50.693 +01:00 [Error] Error when setting environment for 'chocolatey.licensed.infrastructure.app.configuration.EnvironmentSettings':
 Exception has been thrown by the target of an invocation.
2016-12-19 14:16:51.327 +01:00 [Error] Error when setting configuration for 'chocolatey.licensed.infrastructure.app.builders.ConfigurationBuilder':
 Exception has been thrown by the target of an invocation.
2016-12-19 14:16:51.328 +01:00 [Error] Error serializing type chocolatey.infrastructure.app.configuration.ConfigFileSettings:
 Access to the path 'C:\ProgramData\chocolatey\config\chocolatey.config.update' is denied.

Might it be an issue using the professional version (Chocolatey v0.10.3 Professional)?

That's what I'm thinking.

Just realized I never cc'd @ferventcoder on this, as I believe this is an issue with premature serialization attempts.

I'm having this problem with a trial version of chocolatey. Just wondering has this been fixed

Hmm. I'm not honestly sure. /cc @ferventcoder

Hi @cSharpRookie @RichiCoder1 !
With Boxstarter, it needs to just get the latest version of the chocolatey.lib and those issues should dissolve. When you mention it to @mwrock, just ask if it is using chocolatey.lib 0.10.7 yet.

@RichiCoder1 For this to work properly, we need to get #371 done.

In a way, this sort of duplicates #371. The work being done there makes chocolatey.lib work correctly.

@cSharpRookie it's a problem with Boxstarter.

@pascalberger fairly sure that this has been addressed with the recent round of refactoring.  Can you take the latest package on the MyGet feed for a spin, and report back if you still have issues?
Going to close this for now, please re-open if still a problem.

I just tried with 0351 and still get the error if I click on a source in the left pane.
@gep13 I don't seem to have permissions to reopen the issue

@pascalberger can you confirm that you first uninstalled any existing installation of ChocolateyGUI before installing the latest?  There is an issue where you can actually end up with two copies of Chocolatey GUI.

@gep13 You're right. Uninstalling both versions and reinstalling fixed the issue

Woot! 😄


SBMA copies or converts then immediately deletes the files

it looks like everything is working, the downloaded files are there the script copies them to a new folder then something deletes them both the original folder and the copy
<>
019-07-26 19:07:37 - delugePostProcess - INFO - Deluge post processing started.
2019-07-26 19:07:37 - readSettings - INFO - /usr/bin/python
2019-07-26 19:07:37 - readSettings - WARNING - Audio bitrate was invalid, defaulting to 256 per channel.
2019-07-26 19:07:37 - delugePostProcess - INFO - Successfully connected to Deluge
2019-07-26 19:07:37 - delugePostProcess - INFO - Copying file /mnt/nas10k/media_files/DONE/SHOW to /mnt/nas10k/media_files/DONE/Show19:07:40 - delugePostProcess - INFO - Copying file /mnt/nas10k/media_files/DONE/Show Downloaded from theplace .txt to /mnt/nas10k/media_files/DONE/SHOW 19:07:40 - delugePostProcess - INFO - Passing /mnt/nas10k/media_files/DONE/SHOW-copy directory to Sonarr.
2019-07-26 19:07:40 - autoprocess.sonarr - INFO - Sonarr notifier started.
2019-07-26 19:07:40 - autoprocess.sonarr - INFO - Requesting Sonarr to scan directory '/mnt/nas10k/media_files/DONE/SHOW-copy'.
2019-07-26 19:07:40 - autoprocess.sonarr - INFO - Sonarr response: queued.

my autoProcess.ini
[SickBeard]
host = localhost
port = 8081
username =
password =
web_root =
ssl = False
api_key =
[Sonarr]
host = <IP_ADDRESS>
port = 8989
web_root =
ssl = False
apikey = xxxx
[Radarr]
host = <IP_ADDRESS>
port = 7878
web_root =
ssl = False
apikey = xxxx
[MP4]
ffmpeg = /usr/bin/ffmpeg
ffprobe = /usr/bin/ffprobe
threads = 8
output_directory =
copy_to =
move_to =
output_extension = mp4
output_format = mp4
delete_original = False
relocate_moov = True
video-codec = h264,x264
video-bitrate =
video-crf =
video-max-width =
video-profile =
h264-max-level = 5.1
use-qsv-decoder-with-encoder = True
use-hevc-qsv-decoder = True
enable_dxva2_gpu_decode = False
ios-audio = False
ios-first-track-only = False
ios-audio-filter =
ios-move-last = False
max-audio-channels =
audio-codec = ac3
ignore-trudhd = true
audio-language = eng
audio-default-language = eng
audio-channel-bitrate =
audio-filter =
audio-copy-original = False
audio-first-track-of-language = False
subtitle-codec = mov_text
subtitle-language = eng
subtitle-default-language = eng
subtitle-encoding =
fullpathguess = True
convert-mp4 = True
tagfile = True
tag-language = en
download-artwork = Poster
download-subs = True
embed-subs = True
embed-only-internal-subs = False
sub-providers = addic7ed,podnapisi,thesubdb,opensubtitles
permissions = 0777
post-process = False
pix-fmt =
aac_adtstoasc = False
preopts =
postopts =
[CouchPotato]
host = localhost
port = 5050
username =
password =
web_root =
ssl = False
apikey =
delay = 65
method = renamer
delete_failed = False
[uTorrent]
convert =
couchpotato-label = couchpotato
sickbeard-label = sickbeard
sonarr-label = sonarr
bypass-label = bypass
sickrage-label = sickrage
webui = False
action_before = stop
action_after = removedata
host = http://localhost:8080/
username =
password =
output_directory =
radarr-label = radarr
[Deluge]
host = <IP_ADDRESS>
username = xxx
convert = False
password = xxx
sonarr-label = sonarr
bypass-label = bypass
sickbeard-label = sickbeard
port = 58846
sickrage-label = sickrage
couchpotato-label = couchpotato
output_directory =
remove = True
radarr-label = radarr
[SABNZBD]
convert = True
sickrage-category = sickrage
sonarr-category = sonarr
radarr-category = radarr
bypass-category = bypass
couchpotato-category = couchpotato
sickbeard-category = sickbeard
output_directory =
[Sickrage]
host = localhost
port = 8081
username =
password =
web_root =
ssl = False
api_key =
[Plex]
host = <IP_ADDRESS>
port = 32400
refresh = True
token = xxxx

this is my first time setting it up, so i might just be missing something

Reopen if ongoing


Create Team access permissions for TFC workspaces

Describe the outcome you'd like
Looking for the ability to add a Terraform Cloud team(s) to a workspace created by AFT.
Is your feature request related to a problem you are currently experiencing? If so, please describe.
Currently we have to assume that only owners in TFC can access created workspaces. Adding a limited set of permissions to a workspace created by AFT would allow us to pass off workspaces to a management team to see errors in Terraform runs.
Additional context
Permissions on the TFC API token leveraged would imply read operations of the teams API.

In addition, any way the workspaces can be created within a TFC project to limit the access to the team with a TFC token limited to that project rather than the org admin TFC token?


[Improvement-7092][UI] Optimize DAG to adapt to situations without locations

fix #7092 #6772

Codecov Report

Merging #7102 (7298b1a) into dev (b3efcdf) will decrease coverage by 0.07%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev    #7102      +/-   ##
============================================
- Coverage     40.44%   40.36%   -0.08%
+ Complexity     3594     3588       -6
============================================
  Files           647      647
  Lines         26316    26316
  Branches       2926     2926
============================================
- Hits          10643    10622      -21
- Misses        14699    14722      +23
+ Partials        974      972       -2

Impacted Files
Coverage Δ

...he/dolphinscheduler/common/enums/SqoopJobType.java
0.00% <0.00%> (-88.89%)
:arrow_down:

...r/plugin/registry/zookeeper/ZookeeperRegistry.java
47.27% <0.00%> (-8.19%)
:arrow_down:

...er/master/dispatch/host/assign/RandomSelector.java
77.77% <0.00%> (-5.56%)
:arrow_down:

...er/master/processor/queue/TaskResponseService.java
58.42% <0.00%> (-2.25%)
:arrow_down:

...inscheduler/common/task/sqoop/SqoopParameters.java
74.00% <0.00%> (-2.00%)
:arrow_down:

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 b3efcdf...7298b1a. Read the comment docs.

LGTM


How to make the tooltip point to widgets on the corner?

It looks like the tooltip arrow always points towards the center. Is there a way to point to elsewhere on the screen?

hmm, I think this isn't possible at the moment. What you could to is place a very small transparent widget as target at the corner that you need.


Implement Virtual DOM to Rewrite

This PR implements Virtual DOM. A virtual DOM is a lightweight Python representation of the Document Object Model. Updating the virtual DOM is comparatively faster than updating the actual DOM.
The problems and issues are being discussed further in the Discord server.
What this do:
After the Routes are constructed, it just creates a virtual DOM structure that resembles this rather than constructing HTML Element Nodes directly in the Base class:
{
  "tagName": "main",
  "children": [
    { "tagName": "h1", "children": ["Welcome to PyFyre 🐍🔥"], "props": {} },
    {
      "tagName": "p",
      "children": [
        "Learn PyFyre by reading the ",
        {
          "tagName": "a",
          "children": ["documentation"],
          "props": { "href": "https://pyfyre.netlify.app/" }
        },
        ". It is also advisable to learn ",
        {
          "tagName": "a",
          "children": ["Brython"],
          "props": { "href": "https://www.brython.info/" }
        },
        " alongside PyFyre as it is built on top of Brython."
      ],
      "props": {}
    }
  ],
  "props": {}
}

Once that has been created, Render will be invoked, visit each node, and produce the real HTML Element Node.
Todos:

[x] Virtual DOM
[ ] Diffing & Updating the UI

Virtual DOM is already implemented.
Let's see what is the definition of virtual DOM according to reactjs.org:

The virtual DOM (VDOM) is a programming concept where an ideal, or “virtual”, representation of a UI is kept in memory and synced with the “real” DOM by a library such as ReactDOM. This process is called reconciliation.

Basically, VDOM is a representation of the real DOM that only lives in the memory.
VDOM can be implemented in many different ways. In the case of React.js, their VDOM is represented using JSON because they are using JSX. Every JSX element created has a JSON representation which is used by the virtual DOM.
Now, in PyFyre's case, we are not using JSX, we are using classes to create HTML elements like so:
Element("p", lambda: [Text("I'm an HTML element!")])

That Element object is the VDOM itself because it technically only lives in the memory. It is not the real DOM.
For example, we created an Element object and changed something in its variable or state:
class MyElement(Element):
    def __init__(self) -> None:
        self.counter = 0
        super().__init__("p", lambda: [Text(self.counter)])

        self.counter += 1

The number displayed on the screen will remain 0 even though incremented by 1 because it is not the real DOM. Anything we change in that will not affect the real DOM because it is only a virtual DOM.
Then how do we sync the VDOM with the real DOM? We use the method Node.update_dom.
You can do something like this:
class MyElement(Element):
    def __init__(self) -> None:
        self.counter = 0
        super().__init__("p", lambda: [Text(self.counter)])

        self.counter += 1
        self.update_dom()  # UPDATE ME :>

Yes, that will work to update the real DOM, but that is not efficient because when you call self.update_dom, the entire tree will update. But in our case, we only want to update the text, not the entire tree. So to do that, we only need to set the Text in a variable like:
class MyElement(Element):
    def __init__(self) -> None:
        self.counter = 0
        text = Text(self.counter)  # I'm in a variable now :D

        super().__init__("p", lambda: [text])

        self.counter += 1
        text.update_dom()  # UPDATE THE TEXT :>

We are not doing self.update_dom() anymore, instead we are doing text.update_dom(). That should run faster because we are not updating the entire tree.
Maybe you are wondering why we are not using diffing algorithm unlike other libraries like React.js. Well... because we don't have to. React.js is based on JSX. JSX alone can't do anything. So React converts them into JSON for the VDOM. And React uses diffing algorithm to check the changes in the VDOM. But PyFyre is built different (giga chad music), PyFyre is not using JSX, it uses objects to create elements. We can just call a method in those objects to update the DOM. And that is more efficient than using a diffing algorithm.
Closing this PR now.


fix: It should be ‘flexible here’

It should be ‘flexible here’
I have completed the modification

如果“失活”不准确的话那就多写几个字“不活跃的”好了，但即便如此，我觉得原译不存在二义性，可以保留，谢谢


CPU

Implement a simple CPU with a reduced instruction set. Support two commands, halt and output.

I think I need some memory first. Co-buffering is hacky, though could be used as a simple memory loader.

Boot sequence:

Power on.
Transmit program on UART using serialport and load each byte into a "memory" process.
When memory is full begin executing pc=0.

Replicate memory with UART, until memory peripherals are tested.

Start with ledCtrl and buffer two byte commands instead of single byte commands.


Is there a way to have custom javascript in the rendered HTML for a blog post?

I have a blog post with Altair visualization made from Jupyter Notebook as usual. However, I want to add some custom JavaScript to it.
Inside the Jupyter notebook, you have to run the cell with the JavaScript every time you open it to see its effects, even though the rest of the interactivity of the Altair chart works without executing any cell. Because of this behavior, just publishing the jupyter notebook with the JavaScript code would probably not have any effect (I haven't actually tested it).
Similar to https://github.com/fastai/fastpages/pull/171 I want to have fastpages add a little JavaScript code in the rendered HTML for one of the posts, so that the already existing HTML for the charts are modified a little.
Is there a way to achieve this?

This is example of how custom javascript is injected into fastpages: https://github.com/fastai/fastpages/blob/master/_includes/custom-head.html
This requires you to customize fastpages and learn about how the internals work a bit more.

@hamelsmu That helped a lot and I just got it working. I think it's actually better to have custom scripts enabled via Jekyll.

great!


Bugfix/207 job variables are job object

Fixes #207, a bug where the injected job variables is a reference to itself instead of the actual variables
Changes

Fix #207 by copying the job before injecting

API Updates
New Features
none
Deprecations
none
Enhancements

Speed up a test of job poller which took five seconds

Checklist

[x] Unit tests
[x] Documentation

References
Fixed #207

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


(Unnecessary) unqualified import in Spice3 sublibrary

Reported by choeger on 19 Jan 2016 10:02 UTC
The Spice3 library contains (current trunk, line 1616 in Spice3.mo) a rather useless unqualified import:
import Modelica.Electrical.Spice3.*;

Design Group consent was to avoid (if not deprecate) unqualified imports. Since the MSL is kind of exemplary for the use of Modelica, I kindly ask for removal of that statement.
In case I overlooked something and the import is necessary somehow, please consider to use a proper qualified variant.

Migrated-From: https://trac.modelica.org/Modelica/ticket/1884

Comment by ahaumer on 3 Feb 2016 18:48 UTC
I removed the unqualified import statement, and added "Modelica.Electrical.Spice3." to the instances of Spice3 components. I hope this is ok for Christoph and Kristin.
Resolved by d7ce2a8b8698ffb70361f640fb2a932ccf6a0d93.


Moving a request between scenarios duplicates it instead of moving it

When moving a request it should remove it from the current scenario and place it in the new scenario.

Implemented in 2.0


Change the cli flags from camelCase to hypens-separated

Note that this is a breaking change as it doesn't keep the compatibility with the old flags.

I just checked and it automatically updated the webpage.

Completely forgot. We'll need to tag this merge commit with "v0.1.0" to indicate the change is breaking.

Pushed some tags:
$ git show-ref --tag
caf7eb541875506c28a28499b5a3c6d11a6c6a90 refs/tags/v0.0.1
6dbc4ebe2b7e0ee75efb3af3468b8acd82bbb397 refs/tags/v0.1.0
2a5c8f28a14f4a696d46bb02db5abb3b73125366 refs/tags/v0.2.0


[Master Clue] Hot/Cold @ East of Watson's house too far north

https://i.imgur.com/Of1ej6A.jpg
Dig site should be where the marked tile is. Current spot is a touch too north.

So that's 4 tiles too far north?

Looks like it, yea.

Fixed in #3780

Damn, I thought mentioning fixes so-and-so-issue from the commits would've been enough. I'll add that to the description next time.


Report an error with incorrect sql_type

@weiznich This is the one that I told you, the other method that I can think of is have an internal impl FromSqlType<BigInt> for i64 which not only could be reused between different database but we could have a helper to like in the heapsize example to check if i64 implements BigInt. Is it feasible?
What do you think?
Before
error[E0277]: the trait bound `CommentCount: FromSqlRow<Untyped, Sqlite>` is not satisfied
  --> src/main.rs:48:9
   |
48 |     "#).get_results(&conn);
   |         ^^^^^^^^^^^ the trait `FromSqlRow<Untyped, Sqlite>` is not implemented for `CommentCount`
   |
   = note: required because of the requirements on the impl of `LoadQuery<SqliteConnection, CommentCount>` for `SqlQuery`

error: aborting due to previous error; 1 warning emitted

For more information about this error, try `rustc --explain E0277`.
error: could not compile `hello`

After
error: i32 is not implemented for BigInt
 --> $DIR/ensures_derive_queryable_by_name_valid_type.rs:9:6
  |
9 |     id: i32,
  |         ^^^
  |
help: BigInt implements "i64"
 --> $DIR/ensures_derive_queryable_by_name_valid_type.rs:8:18
  |
8 |     #[sql_type = "BigInt"]
  |                  ^^^^^^^^

While I can see the benefit of having something like this, I'm not in line with this particular implementation.
A potential implementation needs to fulfill at least the following requirements:

There should be no hard errors for any valid code. This explicitly needs to include custom third party types.
It needs to handle more that a single type combination
It should not require duplicating all type combinations that implement FromSql in diesel itself as such a list quickly can gets out of date.
If we choose to emit some kind of warning, then there should be a way to suppress this warning.

There should be no hard errors for any valid code. This explicitly needs to include custom third party types.

It may have issue when user rename their types, which very very likely they won't, why would someone rename a primitive type?

It needs to handle more that a single type combination

Can you please show me an example of a single type combination? I never seen that within a struct.

It should not require duplicating all type combinations that implement FromSql in diesel itself as such a list quickly can gets out of date.

I haven't been able to figure this one out yet, both method seemed to require such changes, the other method can be reused for parts unlike this one.

If we choose to emit some kind of warning, then there should be a way to suppress this warning.

Ah, this could be done for this method but not the other method. The other method is on type level so it probably couldn't show it as a warning. Now I see the pros in this method.
Both methods I can think of doesn't seemed to be able to fulfill of of these, maybe at most 3 since the duplicate thing, I can't figure that out with the way FromSql is working since the struct is not able to relate what database the users are using. If we can do that, that is a different story but it would be a breaking change. Do you have any other ideas?

It may have issue when user rename their types, which very very likely they won't, why would someone rename a primitive type?

It will return a hard error as soon as a user passes in a custom enum type that implements FromSql<BigInt, DB>, which is not something that I consider as very very unlikely, but as valid use case.

Can you please show me an example of a single type combination? I never seen that within a struct.

You code only handles BigInt + i64 not any other supported type mapping in diesel. Why should we check only for this specific case and not for Text and String or Integer and i32 or …

It will return a hard error as soon as a user passes in a custom enum type that implements FromSql<BigInt, DB>, which is not something that I consider as very very unlikely, but as valid use case.

Ah, that is true. I think if they implements that then it would be a false positive which is incorrect. If one implemented their own date type they could hit the error.

You code only handles BigInt + i64 not any other supported type mapping in diesel. Why should we check only for this specific case and not for Text and String or Integer and i32 or …

BigInt + i64 is just the proof of concept. I could include other stuff too.

It will return a hard error as soon as a user passes in a custom enum type that implements FromSql<BigInt, DB>, which is not something that I consider as very very unlikely, but as valid use case.

Ah, that is true. I think if they implements that then it would be a false positive which is incorrect. If one implemented their own date type they could hit the error.

That's exactly my point here. Emitting a false positive in this case is not really acceptable, because this pattern is something we want to support. Additionally I do not see a good way to work that around at the level of derive code without explicitly listing type combination which should error, which is obviously something that does also not work well.

I get it now. Do you have other suggestion that we could improve the error on this part?

@pickfire The only way I'm aware of is to improve the generic code is such a way that rustc itself emits a better error message, but that's really no simple task.

@weiznich Is there any reason why we don't do diesel-mysql like what serde did, then we don't have to do SqlType and when the users pull in the dependencies, they only get to pull in the specific database, that way we can cross check if the fields in the struct can be used correctly since we don't have to have an extra DB generic, it may also help in making the code compiles faster I guess?

@pickfire As far as I'm aware there are no technical reasons to have all backends in one crate. This is just something that has involved historically. With the current design it's already possible to implement custom backends as third party crate. See diesel-oci for an example. I think it may even be meaningful to move the current backends into separate crates in long term, but that's quite a bit of work and at least for me other things are currently more important.
That all written: Even if every backend would be a separate crate removing the DB parameter would mean that we drop support for using more than one database at a time. That's something we explicitly support, even if that requires a bit more work than people expect. In the end the DB parameter is there to check for exactly those consistency issues you've mentioned above at compile time. We just reject code/sql that is not compatible with a certain database (at least as long as it is written using our dsl).


[2.0] dcos-net: improve shutdown behavior

High-level description
Bump dcos-net to include changes that allow for graceful shutdown of connections by changing the VIP backend weight to 0 when tasks are unhealthy or enter the TASK_KILLING state instead of removing them.
Corresponding DC/OS tickets (required)

D2IQ-61077 Rolling Upgrade Impact on Long Running Services.

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain.
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

@mesosphere-mergebot label Ready For Review

@mesosphere-mergebot sync


Migration api cepabertos v2 to v3

After cepabertos API discontinued v2 API this coded start to crash and is not working, so I am done this PR to fix the error change the API from v2 to v3. Everything is work fine now, you can please check this fix and merge? I really like this library and I want continue using in my codes :dancer:

@yanorestes You can please merge this fix?

@yanorestes ?

FIX #2


Use CDNs for JS libraries

This commit uses CDNs to serve five JS libraries that are currently
checked into this repo:
anchor.min.js
lunr/lunr.min.js
print.min.js
tocbot.min.js
turbolinks.js

The corresponding copies of these libraries in this repo are removed.
It's considered good practice to use CDNs to serve minified JS files
since CDNs are designed to serve static files fast.
This doesn't change page load time for me, but might have benefits for
people located outside California (where there are fewer GitHub
servers and more Cloudflare servers).

Interesting! I had made the assumption that it's be better / faster to load these locally instead of from a CDN. Thanks for clarifying here!

Is this ready to go?

Yup, this is good to go.

Turn thanks!


fix: bug for last sold mods

What
Fixes bug for last sold mods when Bungie API is down at reset the day before.

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


Sharing all the contents in google drive

Hi @Ubpa  , thanks for this amazing course material, I saw that the baidu link was expired..
Can you please share the content (slides and lecture notes) again using google drive?

Hi, I am looking for the materials as well. Is there any update? :)


TypeScript not supported

This is a good library, unfortunately it does not support TypeScript.

@mofengfs Thanks for the info. Is there something I could do to make it compatible?

@mofengfs Thanks for the info. Is there something I could do to make it compatible?

@fungmo That's not true. I'm able to use Quick Start Example with my pure Typescript React Native project without error.


useFlag breaks server side

Describe the bug
Our app is both SSR and client side rendered and as such we need to use both @unleash/proxy-client-react, as well as unleash-client unleash-proxy-client
TypeError: Cannot read properties of null (reading 'isEnabled')
To get this working we need to do something along these lines
import { useReactiveVar } from '@apollo/client'
import { useFlag } from '@unleash/proxy-client-react'
import { variables } from 'core/variables'
import { UnleashFlagKey } from 'types/UnleashFlagKey'

const useUnleashFlag = (flag: UnleashFlagKey) => {
  const serverFlag = useReactiveVar(variables.unleashFeatures)[flag]
  const clientFlag = useFlag(flag)
  return serverFlag || clientFlag
}

export default useUnleashFlag

However on initial server render it throws  which would then mean we'd need to change this implement to have conditional hooks.
It would be prefable if it would return undefined rather than throwing
Steps to reproduce the bug
No response
Expected behavior
No response
Logs, error output, etc.
No response
Screenshots
No response
Additional context
No response
Unleash version
No response
Subscription type
No response
Hosting type
No response
SDK information (language and version)
No response

wrong repo


Add pagination to listgroups command

Closes #3211
Let me know of any style changes you'd like, especially in terms of the text messages!

Sorry for the commit mess, forgot to fetch from upstream before making my edits.

LGTM, can we increase the default list size to whatever will fill a vanilla chat window? I think it's 15 lines? So 15 minus two for the header bit?

Fixed

Updated

Thanks!


[FLINK-32776][flink-metrics]Add HTTP basic authentication support to PrometheusPushGatewayReporter

What is the purpose of the change

For security reasons, PushGateways generally enable HTTP basic authentication, but currently Flink does not support pushing metrics to a PushGateway that has HTTP basic authentication enabled, and this pull request add HTTP basic authentication support to PrometheusPushGatewayReporter

Brief change log

Add HTTP basic authentication support to PrometheusPushGatewayReporter

Verifying this change
Please make sure both new and modified tests in this PR follows the conventions defined in our code quality guide: https://flink.apache.org/contributing/code-style-and-quality-common.html#testing
(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (yes)
If yes, how is the feature documented? (not documented)

@flinkbot run azure

@flinkbot run azure


Uncaught Can't find self file

[Enter steps to reproduce:]

...
...

Atom: 1.40.1 x64
Electron: 3.1.10
OS: Microsoft Windows 10 Pro
Thrown From: Atom Core
Stack Trace
Uncaught Can't find self file
At C:\Users\Shiraz Ahmed\AppData\Local\atom\app-1.40.1\resources\app\static\<embedded>:11

undefined

Commands
     -2:17 core:move-left (input.hidden-input)
     -2:16.7.0 core:paste (input.hidden-input)
     -2:15.7.0 core:save (input.hidden-input)
  2x -2:12 editor:newline (input.hidden-input)
  3x -2:11.2.0 core:backspace (input.hidden-input)
     -2:09.3.0 editor:newline (input.hidden-input)
  3x -2:05.7.0 core:move-down (input.hidden-input)
     -2:05.2.0 autocomplete-plus:confirm (input.hidden-input)
  2x -1:44.1.0 core:backspace (input.hidden-input)
     -1:35 core:save (input.hidden-input)
  2x -1:10.7.0 core:copy (input.hidden-input)
     -0:34 core:backspace (input.hidden-input)
     -0:31.7.0 core:save (input.hidden-input)
     -0:29.2.0 core:move-right (input.hidden-input)
  2x -0:29 core:backspace (input.hidden-input)
     -0:27.5.0 emmet:encode-decode-data-url (input.hidden-input)

Non-Core Packages
emmet 2.4.3

Thanks for contributing!
We noticed that this looks like a duplicate of issues like https://github.com/atom/atom/issues/18429 where it seems like the problem was narrowed down to https://atom.io/packages/emmet (/cc https://github.com/atom/atom/issues/18429#issuecomment-439216378).

Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.


[FEATURE] message input box

Description
There is no placeholder for the message input box and I also want to give it some stylings
Screenshots
No response
Additional information
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I have checked the existing issues
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

you can go ahead!


GUACAMOLE-361: CAS global logout

Here's a somewhat functional (but probably less than stellar) attempt to make a CAS global logout.  There's much in Guacamole that I'm still unclear about and so my methodology might not be sound (basically, I mimic the login flow but redirect towards logout - I'm pretty sure I've done some slightly bizarre things along the way by including things I didn't fully understand...), but it works for logout from the connections screen menu!  It does not work from the "DISCONNECT" dialog that a user with, for example, a single RDP connection would get upon disconnecting from their RDP session, and choosing the LOGOUT button (that results in a redirect towards login that beats (timing) my attempt to redirect to the CAS logout page.

@siacali, is the goal here simply to redirect the user to a specific URL when they are logged out? If so, it's probably easier and cleaner to:

Handle the guacLogout event that's broadcast on the client side upon logout: https://github.com/apache/guacamole-client/blob/5ce0c0f0358096d87e19c7decdb4d6dfd21aeff5/guacamole/src/main/webapp/app/auth/service/authenticationService.js#L294
Expose a REST service from within the CAS extension which allows you to retrieve the logout URL.

@siacali, is the goal here simply to redirect the user to a specific URL when they are logged out? If so, it's probably easier and cleaner to:

Handle the guacLogout event that's broadcast on the client side upon logout: https://github.com/apache/guacamole-client/blob/5ce0c0f0358096d87e19c7decdb4d6dfd21aeff5/guacamole/src/main/webapp/app/auth/service/authenticationService.js#L294
Expose a REST service from within the CAS extension which allows you to retrieve the logout URL.

@mike-jumper, Thank you Mike.  I appreciate the direction.  I've tried to set this up in the login controller (the window.confirm is just debugging code), but it never seems to get called.  Any clue as to what I'm missing here?
angular.module('guacCAS').controller('guacCASController', ['$scope',
function guacCASController($scope) {
    // set up a listener to handle logouts
    $scope.$on('guacLogout', function() {
         window.confirm("Got Logout event");
    });
    // Redirect to authorization URI
    window.location = $scope.field.authorizationURI;

}]);

@necouchman I've asked one of my colleagues (Nico Fantone) to submit a pull request in place of this...he's got something working and perhaps less kludgey and will submit a PR today or tomorrow...as such can you please reject this pull request?

Hi, @necouchman. I've trying to put together a new PR for this, as @siacali commented above. I've hit some walls that I think you should be able to help take down, however.

It's not entirely clear to me how backend user configured values (present in guacamole.properties, for instance) are made available to the JS/Angular world. How do these Field classes behave exactly? In particular, I'm interested in mimicking the way the authorizationURI is passed down as a $scope.field value for the logout URL. What's the recommended way to go about this?

Without #346, AFAIK, there's no current way to signal to extensions that a Guacamole logout has been successful. The CAS extension would need this for that very same purpose, before redirecting users to its own /logout.

At present, when a user manually logs out, it triggers a full view reload. That creates a problem when listening on broadcasted events (such as guacLogout) from different Angular modules, resulting in hard to track race conditions. The CAS logout flow could do without that kind of reloading: the user would need to head straight to /logout directly, instead.

The .reload() call mentioned above keeps query string parameters in the URL. For the CAS integration, those parameters include ticket, which holds a reference to a CAS session. After Guacamole deletes its own token, the reloading triggers an authentication loop where the user gets redirected to CAS -where the session is still valid- and immediately sent back to Guacamole. But since, the Guacamole session was invalidated, users can't continue using the application.

Could you, please, help me elucidate or shed some light on these points?
Thank you very much.

It's not entirely clear to me how backend user configured values (present in guacamole.properties, for instance) are made available to the JS/Angular world. How do these Field classes behave exactly? In particular, I'm interested in mimicking the way the authorizationURI is passed down as a $scope.field value for the logout URL. What's the recommended way to go about this?

Custom fields are serialized to JSON using Jackson. Anything accessible via a getter on the Field subclass )and not annotated to be ignored) will be present in the REST response from the authentication service that lists the expected fields.
https://github.com/apache/guacamole-client/blob/50b4becab3304cbe2905c23d6e4d64ca4c32d986/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/form/CASTicketField.java#L87-L89

Without #346, AFAIK, there's no current way to signal to extensions that a Guacamole logout has been successful. The CAS extension would need this for that very same purpose, before redirecting users to its own /logout.

On the server side, logout is signaled using {{invalidate()}} on the UserContext:
http://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/UserContext.html#invalidate--
On the client side, logout is signaled using the guacLogout event. You might need to handle this on $rootScope:
https://github.com/apache/guacamole-client/blob/4df22ce67bdafc028ed0042cd277b3de6264f7aa/guacamole/src/main/webapp/app/settings/services/preferenceService.js#L200-L203

At present, when a user manually logs out, it triggers a full view reload. That creates a problem when listening on broadcasted events (such as guacLogout) from different Angular modules, resulting in hard to track race conditions. The CAS logout flow could do without that kind of reloading: the user would need to head straight to /logout directly, instead.

The reload you describe is a critical aspect of the client side of the authentication process. It isn't exactly a reload so much as it is a means of forcing AngularJS to reprocess the route. The authentication process is driven by hooks into AngularJS' routing, so this causes the authentication service to reattempt authentication and render the login screen that results from processing the authentication failure.

The .reload() call mentioned above keeps query string parameters in the URL. For the CAS integration, those parameters include ticket, which holds a reference to a CAS session. After Guacamole deletes its own token, the reloading triggers an authentication loop where the user gets redirected to CAS -where the session is still valid- and immediately sent back to Guacamole. But since, the Guacamole session was invalidated, users can't continue using the application.

If the CAS session is still valid, then a new Guacamole session should then be created once the server side has validated the CAS token. What you describe is what would be expected if CAS is providing invalid tokens, or if an invalid CAS token is somehow still present. It wouldn't result from the Guacamole session being invalid, as it's the lack of a valid Guacamole session which drives CAS being pinged, and validation of the CAS token which results in a valid Guacamole session.

I'm no longer sure if #346 or even the guacLogout event are the way to go for this, given that various housekeeping tasks are tied to those events. Hooking into those events and redirecting the user would potentially preempt tasks which are chained onto that logout promise, but which naturally would happen after guacLogout fires.
Perhaps there is a way to know that the user has just logged out within the handling of that CAS token field, thus selectively redirecting the user to the CAS authorization URI or the logout URI depending on the current context. Maybe a temporary flag could be set when handling guacLogout such that the custom field would know to take different action?

@mike-jumper many thanks for your replies.

Custom fields are serialized to JSON using Jackson. Anything accessible via a getter on the Field subclass )and not annotated to be ignored) will be present in the REST response from the authentication service that lists the expected fields.

So am I right in understanding that adding an extra String getLogoutURI() method would expose its configured value as a $scope.field in CAS Angular controllers? Is there some further wiring-up that needs to happen in order to do that?

On the client side, logout is signaled using the guacLogout event. You might need to handle this on $rootScope

Right. The issue we see is that guacLogout happens before deleting the token. And since CAS logout takes the user away from the application, it's crucial that we wait for the Guacamole invalidation to complete.

The reload you describe is a critical aspect of the client side of the authentication process. It isn't exactly a reload so much as it is a means of forcing AngularJS to reprocess the route.

I'm sure it is and thought so as much. Correct me if I'm getting this wrong (probably am) - but the way it was designed, makes acting on events happening after logout really tricky (or flat impossible) as the reload might interrupt the listening event callback execution. Also, in the case of CAS the reloading does not take the user back lo the login screen. So, to me, it looks as though this isn't quite working as intended for this scenario.

If the CAS session is still valid, then a new Guacamole session should then be created once the server side has validated the CAS token.

This is not what we are seeing. But, regardless, if a user has logged out we should stop Guacamole from generating a new session.

I'm no longer sure if #346 or even the guacLogout event are the way to go for this

I can't help but agree. From what I gathered, guacLogout in its current shape is useless for the purpose of this PR.

Hooking into those events and redirecting the user would potentially preempt tasks which are chained onto that logout promise, but which naturally would happen after guacLogout fires.

Exactly. Or the other way around. It creates a race condition.

Perhaps there is a way to know that the user has just logged out within the handling of that CAS token field

I'm not really familiar with the architecture here - but couldn't we "hijack" the logout logic by exposing a custom action/function from the auth extension and ensure it is called after deleting the token, if defined?
How do extensions typically extend core functionality? Is it always via events?

@mike-jumper I know you guys seem pretty keen in keeping "extension functionality" in extensions, but perhaps the "right answer for now" is to provide a generic "logoutURI" in the client that properly redirects to a configuration option that's not tied to any extension, but could be suitable for all or most.  I can even see potentials use-cases for this outside of auth extensions.  What do think?

@siacali That makes sense. It would be similar to my suggestion of a "custom action" above, except it'll always be a "redirect action". If the property exists, just take the user there instead of reloading the view - otherwise, ignore it and keep going as usual.

I think we should avoid a generic logout redirect URI. The necessary URI for single logout is generally going to be implementation dependent, and the setting would serve as a point of confusion for those cases. There are times where it's necessary to provide a feature as a stopgap to a better solution due to the complexities of the better solution, but I don't think we've reached that point here.
If single logout is not currently achievable because existing client-side hooks do not provide the needed context, then we should look for a way to provide that context.
Similar to #346, perhaps a new event (not repurposing guacLogout) which is (1) reliably invoked after logout has succeeded and (2) results in reattempting authentication only if preventDefault() is not invoked? Does there need to be additional context exposed within such an event about the session which was invalidated?

I think we should avoid a generic logout redirect URI. The necessary URI for single logout is generally going to be implementation dependent, and the setting would serve as a point of confusion for those cases. There are times where it's necessary to provide a feature as a stopgap to a better solution due to the complexities of the better solution, but I don't think we've reached that point here.
If single logout is not currently achievable because existing client-side hooks do not provide the needed context, then we should look for a way to provide that context.
Similar to #346, perhaps a new event (not repurposing guacLogout) which is (1) reliably invoked after logout has succeeded and (2) results in reattempting authentication only if preventDefault() is not invoked? Does there need to be additional context exposed within such an event about the session which was invalidated?

Appreciate that, @mike-jumper - Anything that could give us a reliable way to redirect after logout but before the “reload/reroute” event would do the trick.  I don’t think there’s any other context that needs to be exposed, at least not for CAS (@nfantone, do you agree?).  How should we go about submitting such a change or some candidate fixes for it (i.e. new Jira or report against some existing ticket)?
Just to clarify one other thing for @necouchman and raise this issue to the group, likely the implementation of TicketValidation and how it’s corresponding exception (should it even raise one?) is handled needs to be looked at in the CAS extension.  By default in CAS a service ticket is tagged for a lifetime of 10s and 1 use, so it’s not likely that a ticket will ever be “revalidated.”  This is based on a global setting on the CAS side, and so will likely not be changed for this app.   The only way to “renew” a ticket, AFAIK, is for the browser to visit the CAS system, which will happily reissue a new ST if the user is still logged into the SSO - probably not a welcome behavior in the context of a Guacamole session.  Unless someone implements a time limit on Guacamole logins (which I’m not aware of, if it exists), we should probably modify the CAS extension to “never check a ticket if it already validated the one it has.”  (Note: I’ve only observed the extension trying to revalidate tickets in the context of a “reload” that doesn’t clean up it’s URL and still includes the ST, so it’s not a “common” problem but still something that it should never usefully try to do, unless we logout or redirect back to CAS to get a renewed ticket).  Should this be raised as a separate Jira ticket?
Lastly, once we get a workable logout solution, I’d like to propose some finer grained controls for this extension:  I’d like to offer a setting that enables a mode where users can choose between CAS login and Guacamole login (instead of the only setting option being the current brute redirect to CAS), and a similar setting that could enable a user to choose between SSO logout and Guacamole logout (some might find it useful, others might find it confusing, so a setting seems appropriate).  These would be in the form of additions to the existing functionality that currently simply redirects away to CAS.  Any comments or suggestions on these?

Unless someone implements a time limit on Guacamole logins (which I’m not aware of, if it exists) ...

See the api-session-timeout property: http://guacamole.apache.org/doc/gug/configuring-guacamole.html#initial-setup

... we should probably modify the CAS extension to “never check a ticket if it already validated the one it has.” (Note: I’ve only observed the extension trying to revalidate tickets in the context of a “reload” that doesn’t clean up it’s URL and still includes the ST, so it’s not a “common” problem but still something that it should never usefully try to do, unless we use the exception to logout or redirect back to CAS to get a renewed ticket).

The ticket is only validated during initial authentication with Guacamole. You would only see another validation attempt if the user's Guacamole session has been invalidated (timed out, manually logged out, etc.).

I’d like to offer a setting that enables a mode where users can choose between CAS login and Guacamole login ...

Sure. You could use an HTML patch to add a "Sign in with CAS" link/button/image to the login interface, show that only if the CAS redirect field is absent, and only throw GuacamoleInvalidCredentialsException when the extension is configured to force use of CAS. Returning null instead of throwing an exception would allow any other configured extension to control the login process, most likely requesting a username/password pair.

@mike-jumper @siacali Interesting discussion. A few things that I'd like to point out:

Similar to #346, perhaps a new event (not repurposing guacLogout) which is (1) reliably invoked after logout has succeeded and (2) results in reattempting authentication only if preventDefault() is not invoked?

Again, the problem with both of those statements, as far as I understand it, is that the reloading of the view -which always happens immediately after Guacamole logout- destroys and re-instantiates Angular controllers. As a consequence, the bubbling and handling of the logout event (or any other event, for what matters) might get interrupted. An event-based solution, within the current design, would trigger this race condition.
Some workarounds I can think of:

Move reload logic to extensions - don't do it in core. guacLogout itself could serve this purpose.
Add some configurable property to prevent reloading (may default to current behaviour) and leverage #346 to handle CAS redirect.
Similar to your preventDefault() suggestion, delay reloading to allow event handlers to be invoked and only proceed with refreshing the view if no handler prevented it. We could pass a custom function/event to $broadcast for this purpose (or even a plain new Event()).

function createGuacLogoutEvent() {
  let reloadPrevented = false;

  function preventReload() {
    reloadPrevented = true;
  }

  const logoutEvent = {
   	get reloadPrevented() {
      return reloadPrevented;
    },
    preventReload
  };

  return Object.seal(logoutEvent);
}

const guacLogoutEvent = createGuacLogoutEvent();

$rootScope.$broadcast('guacLogout', guacLogoutEvent);

setTimeout(() => !guacLogoutEvent.reloadPrevented && $route.reload(), 4000);

I don’t think there’s any other context that needs to be exposed, at least not for CAS (@nfantone, do you agree?).

I do. We don't need any extra data to trigger reloading - although depending on where we decide to read the logout URI from, it might be convenient to expose it in the event context.

@mike-jumper I just noticed your comment on #346. Read it after posting comment above. This is pretty much what I've outlined.
My apologies for the redundancy!


Support null safety

hello, can it updated to support null safety?

PR is welcome

@MagicalWater Pull Request for null-safety will be available by Mid of Nov

@lexxxel
Was on job hunt to earn survival....
For sure before end of January....

@lexxxel @MagicalWater
Null-safe version of protect is now available: https://pub.dev/packages/protect
protect: 1.0.0
Please feel free to re-open the issue in case you find any difficulty.

Drop a 👍🏽 on https://pub.dev/packages/protect if you find it useful.


Monotype Random Battles: Enable Monotype-specific move sets

Code to enable Monotype-specific sets in Monotype Random Battles. Also removes existing functionality in randomTeam.
This is just an initial commit to enable the functionality. The Monotype room staff are currently working on more sets. At the rate they're going, there will be lots of sets to add soon...
More information/background in SFC.

You can probably register the sets in the format config?

Or, a more general idea.
Have a customMoves: 'randomMonotypeMoves' property in config/formats.js.
Then, when creating the set, search whether the key declared as customMoves exists in the template.  If it does, use it; otherwise, fall back to randomBattleMoves.
The rand-dubs generator could probably use this system as well.

Monotype isn't an official metagame, so TI requested I keep everything in randomMonotypeTeam. Otherwise, I'm fine with doing that.
ukerab also mentioned something similar in the dev room. I think he had started on it?

I don't see much of a difference between polluting data/scripts and polluting data/formats-data.js?
The current approach looks like it will massively and permanently increase the size of scripts.js :-1:
Because let's be honest. Smogon-official or not, Monotype is never going away. Treating it like a second-class citizen in PS isn't going to do us any favor development-wise.

I mean if @zarel is okay with this data being in FormatsData the I don't mind. Personally, Scripts being huge doesn't affect daily use. FormatsData is often modified whether it be for new events or for tier changes. Scripts is only modified for Random Battle changes.

I'm okay with it being in FormatsData.

I'm new with github, so I have no idea what's up with this conflict... :(
I'll do some googling to see if I can fix it own my own.
(also, "for" -> "to" in the most recent commit...typo)

ok, I give up. I'm just making a new PR w/o merge conflicts...


Open Source under BSD-3-Clause.

Add .editorconfig.
Ignore package-lock.json.
Bump node versions to current LTS.
Add disclaimer about keys in pki/ dir.
Open source under BSD-3-Clause.

Codecov Report

Merging #34 (4bc675a) into main (447d07c) will increase coverage by 0.13%.
The diff coverage is 100.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #34      +/-   ##
==========================================
+ Coverage   92.20%   92.34%   +0.13%
==========================================
  Files           2        2
  Lines         231      235       +4
==========================================
+ Hits          213      217       +4
  Misses         18       18

Files
Coverage Δ

lib/config.js
95.12% <100.00%> (+0.25%)
:arrow_up:

lib/index.js
91.75% <100.00%> (+0.08%)
:arrow_up:

Continue to review full report in Codecov by Sentry.

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

This needs to change to Apache-2.


Propose adding a link to module in Troubleshooting

https://github.com/MicrosoftDocs/office-docs-powershell/issues/4635

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

Docs Build status updates of commit 1ec1ad0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

teams/teams-ps/teams/Connect-MicrosoftTeams.md
:white_check_mark:Succeeded
View (teams-ps)

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


cephx permission problems

according to this:
http://lists.ceph.com/pipermail/ceph-users-ceph.com/2017-November/022695.html
and the luminous upgrade instructions, any ceph client with [mon] read-only need to have:
"osd blacklist" cap as well.
http://docs.ceph.com/docs/master/release-notes/#upgrade-from-jewel-or-kraken (section 6)
currently when using ceph-ansible. cinder clients get only read access on mons and when compute crushes we get a stale lock

any update on this?

Also keen to see this implemented as I've seen VMs fail to boot after a hypervisor failure.
Thanks

the commit cherry picked into stable-3.2 caused a problem with openstack services.
now all the keys are not able to do any actions from cinder/glance/etc due to authorization error.
cinder doesn't create any volumes because it never timeouts,rados_connect_timeout is -1
how is the right approach to fix services in openstack?
rbd create --size 1 --user cinder vms/test
2019-08-21 10:42:31.640 7ff88c434700  0 -- <IP_ADDRESS>:0/872473912 >> <IP_ADDRESS>:6822/1328282 conn(0x5567fb56d6b0 :-1 s=STATE_CONNECTING_WAIT_CONNECT_REPLY_AUTH pgs=0 cs=0 l=1).handle_connect_reply connect got BADAUTHORIZER

https://docs.ceph.com/docs/master/releases/luminous/#upgrade-from-jewel-or-kraken
the osd blacklist should be under mon not under osd. the tests keys seems correct, only the openstack keys are incorrect.


performance on transform big atom

I create a benchmark at: https://gist.github.com/jiacai2050/082a05394ac4ad8f59953d95519740d5
It seems that specter is 2 times slower than vanilla clojure. I also try this, which show specter is faster.
Is there anything I'm missing? AFAIK, use one big atom to hold app states is preferred in many clojure apps, eg: re-agent.

You're Specter code can be improved significantly by replacing subset usage with NONE-ELEM, which is much faster for inserting a single element.
(setval [ATOM app-id peer-id NONE-ELEM]
            channel-id
            clients)))

You should also wrap app-id and peer-id in keypath so Specter statically knows what those are. This will be a big performance boost.
(setval [ATOM (keypath app-id peer-id) NONE-ELEM]
            channel-id
            clients)))

Thanks,  Specter is pretty faster after modification.
Using NONE-ELEM  for inserting sounds reasonable, why keypath also improve performance?

By wrapping in keypath, Specter statically knows what navigator is at those points and the inline compiler can encode that information for all future runs of that callsite. This wiki page goes into detail on that: https://github.com/nathanmarz/specter/wiki/Specter's-inline-caching-implementation


Introduce golangci-lint into build chain

Action Item
As we want to switch from golint to golangci-lint we need to adapt our build chain.
Besides the linters which are enabled by default, the following linters shall be enabled as well:
bodyclose, exportloopref, funlen, gocyclo, gosec, nestif, unparam
Definition of Done

[ ] golangci-lint is used on each PR to analyze the code changes contained in the PR
[ ] current golang-lint execution is removed

Resources
golangci-lint-action
reviewdog/golangci

Hey @warber
I will like to take this issue.
Can you please assign it to me?

Hey @warber
I will like to take this issue.
Can you please assign it to me?

Hi @rahul799, sure, go for it. If you have questions, I am happy to help.

I tried the existing action golangci/golangci-lint-action (see , https://github.com/golangci/golangci-lint-action/ ), e.g.,
      # we are a monorepo, let's lint every Go sub-project
      - name: lint/api
        uses: golangci/golangci-lint-action@v2
        with:
          # working-directory where a go.mod file can be found
          working-directory: api
          # Optional: golangci-lint command line arguments.
          args: ${{ env.GOLANGCI_LINT_ARGS }}
          # Optional: show only new issues if it's a pull request. The default value is `false`.
          only-new-issues: true
          # Optional: if set to true then the action will use pre-installed Go.
          skip-go-installation: true

Unfortunately it is not possible to combine working-directory with only-new-issues, and hence the action will report all existing errors, rather than just new ones.
I'll continue with looking at golangci-lint in combination with reviewdog, which should work in this scenario.


Update on 3.4.0 branch

Hi @haiyangwu ,
@camilleoudot and I have committed some changes on your branch dev-3.4.0.
We are really interested in your sdk. We would like to work on the latest version of mediasoup client on Android.
In this merge request we just make the project compile on our environnement (AndroidStudio Dolphin).
We also starting to modify the java binding on the new mediasoup client lib.
We would like to continue working on this to implement bindings of data channels.
We are really interested by your feedbacks so far (we may have missed something) and your thoughs on a possible future collaboration on this repo.
BR
@chatelgu and @camilleoudot

Hello, I just come back from vacations 🎃
I made changes you asked for except for the Parameters stuff (see https://github.com/haiyangwu/mediasoup-client-android/pull/58#discussion_r1011544440)

LGTM and merged, Thx @chatelgu @camilleoudot


1hella 959

Just a heads up, you're probably going to need to rebase this because of the merge conflicts.

Thanks for the link. I'm pretty new to this stuff so I'll give it a try.
I asked Quincy directly whether I should branch off master or staging and he said master because there was the big update in staging. That's probably what caused the merge conflicts trying to merge into staging.


translate of the windows page to spanish

Signed-off-by: JOSE ALONSO LOPEZ ROMO<EMAIL_ADDRESS>Description
Litteral translation of the windows page to spanish, in the docs/pages/es/installation
This PR fixes #
Notes for Reviewers
@jesuslerma tag for review... thanks
Signed commits

[X] Yes, I signed my commits.

Sorry, this looks duplicated #1790

You're right...I'm sorry! I didn't notice it!!!


fixed issue of Normal user shouldn't able to see accounts, contacts, leads, opportunities, cases assigned to other users, displaying all the records based on loggedin user profile, displaying no records message when there are no items, no displaying closed accounts & leads in create/edit pages

fixed issue of Normal user shouldn't able to see accounts, contacts, leads, opportunities, cases assigned to other users, displaying all the records based on loggedin user profile, displaying no records message when there are no items, no displaying closed accounts & leads in create/edit pages

Coverage decreased (-1.2%) to 63.892% when pulling e331fbe7a3cbb43aa5bbf8f49e149f9eb5581291 on alpha_issues into 65db196826751686d5482dc52053d160d52199fb on master.


last 10 did not load up my last several calls.

did a call for N41 and another I think.   they do not show.

Steps to reproduce? Seemed to be sturdy this morning.

Log into dev as admin demo.  You will see last 2 missing
Sent from my iPhone

On May 17, 2020, at 5:35 PM, Braden Mars<EMAIL_ADDRESS>wrote:

Steps to reproduce? Seemed to be sturdy this morning.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Install error

Tried to install with sudo pip3 install pibooth[dslr]
Console output:
    ERROR: command "pkg-config --modversion libgphoto2" failed
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-rdm_o440/gphoto2/setup.py", line 38, in <module>
        cmd, stderr=FNULL, universal_newlines=True).split('.')
      File "/usr/lib/python3.7/subprocess.py", line 395, in check_output
        **kwargs).stdout
      File "/usr/lib/python3.7/subprocess.py", line 487, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command '['pkg-config', '--modversion', 'libgphoto2']' returned non-zero exit status 1.
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-rdm_o440/gphoto2/

System:
Raspi3B+ with raspian buster
software completly updated

The obove problem is
 Failed building wheel for Pillow
and can be solved by a previous
sudo apt-get install libjpeg-dev
But if i now start
pibooth
pygame 1.9.4.post1
Hello from the pygame community. https://www.pygame.org/contribute.html
[ INFO    ] pibooth           : Generate the configuration file in '/home/pi/.config/pibooth/pibooth.cfg'
[ INFO    ] pibooth           : Generate the translation file in '/home/pi/.config/pibooth/translations.cfg'
[ INFO    ] pibooth           : Starting the photo booth application...
Traceback (most recent call last):
  File "/usr/local/bin/pibooth", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pibooth/booth.py", line 741, in main
    app = PiApplication(config)
  File "/usr/local/lib/python3.7/dist-packages/pibooth/booth.py", line 447, in __init__
    config.getboolean('CAMERA', 'delete_internal_memory'))
  File "/usr/local/lib/python3.7/dist-packages/pibooth/controls/camera/__init__.py", line 37, in get_camera
    raise EnvironmentError("Neither Raspberry Pi nor GPhoto2 nor OpenCV camera detected")
OSError: Neither Raspberry Pi nor GPhoto2 nor OpenCV camera detected

A gphoto2 suppurted camera via usb is used

Solved


Document performance interactions with MSAA and depth prepass

I've found that disabling the depth prepass can be worth it more often when MSAA is enabled.
Testing project: distance_fade.zip (if you want to verify this on your end)

I'm not sure the advice that disabling depth prepass when using MSAA is a good idea. It's going to be a very context sensitive decision and a note in the docs like this makes it sound like it should be disabled when MSAA is used.
For complex scenes with a lot of overlapping geometry and many lights, the benefit of depth pre-pass will likely still far outweigh the cost of the MSAA depth resolve.

Rebased. I changed the wording a little since the depth prepass should always be beneficial in very complex scenes (even at high MSAA levels).

I think its too soon to do these kind of judgements when work regarding optimization is pending.

Closing due to lack of consensus as per the above discussion and due to how old this PR is. A new PR with up to date information is of course eventually welcome :)


Flake8 rule 'E901' reported an invalid point

Flake8 reported an invalid point for the rule E901, with the messge SyntaxError: invalid syntax.
This is the beginning of my module:
"""Managing clustering, fnotching and cut application here."""
from __future__ import division, print_function

import importlib
import logging
from pathlib import Path

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from numpy.linalg import norm
from scipy.stats import circmean

from . import io, markings
from .dbscan import DBScanner, HDBScanner

importlib.reload(logging)
logpath = Path.home() / 'p4reduction.log'
logging.basicConfig(filename=str(logpath), filemode='w', level=logging.DEBUG,
                    format='%(asctime)s %(levelname)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')

matplotlib.style.use('bmh')

The error was shown at line 1, pos 1, as shown in screenshot.

Debug information:
Atom version: 1.12.7
Flake8 version: 2.5.1 (pep8: 1.7.0, pyflakes: 1.3.0, mccabe: 0.3.1) CPython 3.5.2 on Darwin

I had a broken syntax much further done, inside a function:
    def cluster_angles(self, filtered):
        # calculated value of euclidean distance of unit vector end points per degree
        dist_per_degree = 0.017453070996747883
        X =

Maybe related?

Please update your flake8 version (pip install -U flake8). This particular error should be fixed in flake8>=3.2.1.

Thank you! conda's default channel is still on 2.x that's how I came to that. Will ask them why they don't upgrade.


feat:Dynamic repo star count added using the github api

🎯[WEB Improvement] : Add Dynamic GitHub Stars Section #35
Closes #35
Description of changes :

I created a state for the GitHub stars of the repo.
fetched the repo data using the GitHub API.
set the state of stars as the repo's stargazers_count
displayed the stars.

Hello @South-IN, thank you for your pull request! We will review it shortly. 😇❣
Your contributions help us grow and improve our project. Please make sure you have read and followed our CONTRIBUTING GUIDELINES.
Your efforts are appreciated, and we value your participation in our community. Don't forget to ⭐ our repository!
Happy coding!✨

What is the issue with vercel ?
i cant see the details.
the changesshow no error locally.

can i see the logs @Puskar-Roy ?

@South-IN

@South-IN Great but please Push into dev branch


[New Feature]: adding amodal feedback form in home page #56

PR Description
Fixes #56
double clicking the cloud icon feedback page will pop out, I have added a modal feedback form which will take star rating as well and save the feedback form and submit it successfully.

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for review.

https://github.com/ChromeGaming/Formation-Absent/assets/158484284/11fb92e8-be49-4351-9527-c929f28e06d3

Thank you soo much for contributing to our repository 💗

@roy7077 please assign the pr to me and add levels to the pr


Add post-installation notes to brew info output

Feature Request
Given I install TCE with homebrew using brew install vmware-tanzu/tanzu/tanzu-community-edition
When I run brew info vmware-tanzu/tanzu/tanzu-community-edition
Then I should see the same output I see after installation:
==> Thanks for installing Tanzu Community Edition!
==> The Tanzu CLI has been installed on your system
==>

==> ******************************************************************************
==> * To initialize all plugins required by Tanzu Community Edition, an additional
==> * step is required. To complete the installation, please run the following
==> * shell script:
==> *
==> * /usr/local/Cellar/tanzu-community-edition/v0.9.1/libexec/configure-tce.sh
==> *
==> ******************************************************************************
==>

==> * To cleanup and remove Tanzu Community Edition from your system, run the
==> * following script:
==> /usr/local/Cellar/tanzu-community-edition/v0.9.1/libexec/uninstall.sh
==>

Maybe we can mention in the Caveats section like MySQL, PostgreSQL etc
https://github.com/Homebrew/homebrew-core/blob/49a025a7429cc4b216b60684b08d7b94a550a96f/Formula/postgresql.rb#L117-L127
https://github.com/Homebrew/homebrew-core/blob/49a025a7429cc4b216b60684b08d7b94a550a96f/Formula/mysql.rb#L164-L182

Looks like we also need to update the version in that path to be dynamic


Point export

For each course instance provide a button that exports points breakdown to csv
Something like this: https://tmc.mooc.fi/org/test/courses/301/points
From this table grouped by chapters: https://github.com/rage/secret-project-331-db-docs/blob/master/public.user_exercise_states.md
Should stream the results: https://github.com/rage/mooc.fi/blob/master/backend/api/completions.ts#L65
Downloads:
Change browser document.location to the download url -> triggers download.


Optimize indexes on prod DB

Will run this in the weekend when back from vacation. Please move to a later sprint (S5 ?)

Scheduled for this weekend.


[URL change]  URL changed due to carrier blocking

Source information
XXManhwa 1.4.3
Source language
Vi
Source new URL
https://s1.xxmanhwa1.top/
Other details
URL changed due to carrier blocking
about 1 to 3 months 1 time
#5562 fix it once and fix it again after a long time =))
Acknowledgements

[X] I have updated all installed extensions.
[X] I have opened WebView and checked that the source URL has not changed yet.
[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I will fill out all of the requested information in this form.

Thanks bro


Invalid TLS does not get updated when changed

When an ingress is created with an invalid TLS directive, and then is changed to the right one, it appears that the ingress is not reload correctly.
Here is a way to simulate this:

Create a TLS Secret for a specific namespace:

kubectl create secret tls tlstest1 --cert=xpto.com.crt --key=xpto.com.key --namespace=test1

Create an Ingress object for the same Namespace:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: foo-tls
  namespace: test1
spec:
  tls:
  - hosts:
    - xpto.com
    secretName: invalidsecret
  rules:
  - host: xpto.com
    http:
      paths:
      - backend:
          serviceName: nginx
          servicePort: 80
        path: /

Start the Ingress Controller

Change (edit) the ingress object, and change the secretName to the correct name created in step1 (in this case, tlstest1)

Verify on Ingress Logs that it doesn't get reloaded, and also the certificates aren't parsed:

W0125 02:01:32.119818       5 controller.go:882] secret test1/tlstest1 does not exists

Just restart the Ingress Controller, and it starts normally, including the corrected TLS Secret inserted in step 4.

Thanks!

Looks like you're talking about the nginx controller, correct?

@bprashanth Thats correct. Now something came into my mind. I have tested changing the secretName directive, but I didn't tested using some existent secretName and then changing the secret content.

changing secret content is actually pretty common (cert rotation), please give it a shot and report if it doesn't take

Sure. Will do this tomorrow at work, and inform here.


Move the publishing after the gpg signing

@mitchdenny do you remember why you did the publishing before the gpg signing? I have to test but it is possible that the artifacts directory doesn't contain the full gpg signed files either because they get published to a different folder, but at any rate it would be good to upload the exact signed and artifacts that were published.

Closing this PR as it doesn't really help much because we need to get the packages from the local deployed location in order to get the matching gpg signed bits. I may pick-up this work more in the future.


[Service Bus] RuntimeInfo -> RuntimeProperties

This PR renames the interfaces *RuntimeInfo to *RuntimeProperties as the first step towards the renames and edits being tracked in https://github.com/Azure/azure-sdk-for-js/issues/10081

/azp run js - servicebus - tests


Cache forkDataRoot

Feature request
Currently we compute forkDataRoot every time we need to verify a signature. We could compute all forkDataRoots for the known forks after genesis is known, and cache them.
We could even cache the domains as we compute them.
Proposal
Expose somewhere an interface like
export interface IDomainCache {
  getDomainAtSlot(domainType: DomainType, slot: Slot): Buffer;
}

EDIT: Note: I have not data to prove that this is an actual performance issue, it was just an idea that would be nice to de-duplicate work but maybe it has a negligible impact.
One may browse the issues with the performance label which are proven to have a serious impact on the node performance https://github.com/ChainSafe/lodestar/labels/Performance

it's worth to cache domains:
@@@ finish 10000 state.blockRoots[100] in 151 ms
@@@ finish 10000 state.slot in 53 ms
@@@ finish 10000 state.currentJustifiedCheckpoint.epoch in 173 ms
@@@ finish 10000 getDomain 798 ms

getDomain is 5 times slower than state.blockRoots and caching block roots could save us 0.5s in epoch transition as in #2528

Then let's do it!

on a node with full attestation subnet subscriptions, getDomain takes more than 2% of total time


New version: Neovide.Neovide version 0.13.2

Created by 🥟 Dumplings in workflow run #2786.
Logs
Updated: 0.13.1 → 0.13.2
Cannot validate argument on parameter 'ChatID'. The argument is null, empty, or consists of only white-space characters. Provide an argument that contains non white-space characters, and then try the command again.
Submitting WinGet manifests
Cannot validate argument on parameter 'ChatID'. The argument is null, empty, or consists of only white-space characters. Provide an argument that contains non white-space characters, and then try the command again.

Microsoft Reviewers: Open in CodeFlow

For moderators or/and anyone else

[!Caution]
As a result of several personal problems I've had over the last few months + my final exams coming up very soon, I'm currently unable to look at my GitHub notifications every day and maintain my executions correctly.
If you detect a certain problem on a certain pul request:

Either you can close the pull request directly without mentioning me.
Or you can send me a message on X (Twitter): @Exorcism0666

Thank you for your understanding, and I'm sorry if some pull requests can't be approved due to the situation I'm in.

This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping Exorcism0666.

[!warning]
With the new version of Komac, numerous Pull Requests may contain bugs or unwanted elements. If such issues arise, please tag russellbanks so that these bugs can be addressed in future updates.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

Automatic Validation ended with:

Installation failed with exit code -1978335187
2024-07-13 02:40:54.490 [FAIL] Installer failed security check. Url: https://github.com/neovide/neovide/releases/download/0.13.2/neovide.msi Result: 0x80004005

Automated error analysis suggests -1978335187 may mean Installer failed security check. Another script should retry this every 18 hours.
(Automated response - build 886.)

/azp run