Add new balancer implementation called EnumeratedDistribution Balancer

Description

EnumeratedDistribution Balancer
I have implemented a new BalancerStrategy implementation called EnumeratedDistribution. This Balancer Uses org.apache.commons.math3.distribution.EnumeratedDistribution to decide what servers to load segments to and what server to move a segment to. For choosing which server(s) to drop a segment from, it does not use this probabilistic sampling, but instead just orders the servers by % utilized in order to drop from the most "full" candidate server first.
The overarching goal of the balancer is to drive a cluster's storage distribution towards uniform disk utilization % across historical servers.
It differs from the diskNormalized balancer in that this balancer is completely disconnected from the cost balancer. It is strictly assigning segment destinations by probabilistic sampling that EnumeratedDistribution uses.
Replicating a segment
Assign probabilities to every candidate server. The probability input for server s is a float between 0 and 1. The probability for a server correlates to it's utilization %. The most utilized server in the cluster has the lowest probability assigned and the least utilized server has the highest probability assigned.
This is where the impl gets a little funky compared to the other Balancers. The other balancers return an Iterator over all of the candidate servers after they have been sorted according to the balancer algorithm. For this new balancer, it is less straightforward. We sample the set of candidates with the aforementioned probabilities in mind (EnumeratedDistribution library handles all this for us) a number of times that is equal to the size of the provided candidate list. We then de-dup the list of sampled servers since it will likely - by design - have picked the higher probability servers multiple times. This means the return list to the caller is not going to have every candidate. The feelin is that this shouldn't be a problem when you have a meaningful number of historicals since the number of replicas is likely fairly low. However, the method signature could be changed to define a minimum number of servers returned if we needed to guarantee that N servers were in the iterable that the caller receives.
Moving a segment
Assign probabilities to every candidate server. The probability input for an individual server is a float between 0 and 1 that correlates to it's disk utilization %. The most utilized server in the cluster has the lowest probability assigned and the least utilized server has the highest probability assigned.
Sample from the set of candidate servers with the aforementioned probabilities in mind (EnumeratedDistribution library handles all this for us). Return the sampled server.
Dropping a segment
Order the candidate servers in descending order by segment cache space utilization % and return an iterable over them. This pushes the cluster to drop from the "most full" servers first, working towards the ultimate goal of converging on a uniform utilization % across historical servers.

Release note

Add a new BalancerStrategy called EnumeratedDistributionBalancerStrategy. This balancer uses org.apache.commons.math3.distribution.EnumeratedDistribution to make segment assignment, move, and drop decisions using probabilities that correlate to how much available segment storage a server has remaining. This balancer will converge historical servers to a uniform level of storage consumption (expressed as a % of available storage utilized on each server). To enable this balancer, set druid.coordinator.balancer.strategy to enumeratedDistribution.

Key changed/added classes in this PR

EnumeratedDistributionBalancerStrategy

This PR has:

[x] been self-reviewed.
[X] added documentation for new or modified features or behaviors.
[X] a release note entry in the PR description.
[X] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[X] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[X] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[X] been tested in a test Druid cluster.

Thanks for adding the new balancer strategy, @capistrant !

The overarching goal of the balancer is to drive a cluster's storage distribution towards uniform disk utilization % across historical servers.

Do you think the current strategies fail to achieve this in certain cases? It would be nice to know some real world scenarios where the new strategy does a better job of balancing servers as compared to the current strategies.
It would also be nice to have some tests based on the CoordinatorSimulationBaseTest that demonstrates how this strategy performs in a typical setup.

Thanks for adding the new balancer strategy, @capistrant !

The overarching goal of the balancer is to drive a cluster's storage distribution towards uniform disk utilization % across historical servers.

Do you think the current strategies fail to achieve this in certain cases? It would be nice to know some real world scenarios where the new strategy does a better job of balancing servers as compared to the current strategies.

From my experience running a large high segment count (over 6 million), high datasource count (over 12k) cluster with great variance in segment size (kb to gb) - the cost balancer creates a highly skewed environment when it comes to disk allocation. Maybe if cpu constraints were not a problem and we could balance many segments in short order - the algorithm would work its way towards having less storage skew. But in our environment even with a 90 cores on coordinator dedicated to balancing, we can not balance meaningful number of segments while also keeping coordination within reason. We had servers with nearly 90% utilization and others with under 50% with little to no progress towards balance over months and months of uptime.
Perhaps, an alternative for us could have been cachingCost, if that meaningfully drops cpu. But we had experienced odd behavior that we couldn't pinpoint in the past when testing it in lower envs, and thus abandoned the idea of using it in prod until exhaustive testing could be done.
That left us with the random balancer, which by nature leads to skew in an environment like ours where segment sizes vary so much. We did really like the performance in terms of how many segments we could balance though. And this was the trigger for us to write this balancer that uses simple weighting to avoid the pitfalls of random for us, while still allowing us to move many segments in a short amount of time.

It would also be nice to have some tests based on the CoordinatorSimulationBaseTest that demonstrates how this strategy performs in a typical setup.

I will look into this shortly, thanks for bringing it to my attention!

Thanks for adding the new balancer strategy, @capistrant !

The overarching goal of the balancer is to drive a cluster's storage distribution towards uniform disk utilization % across historical servers.

Do you think the current strategies fail to achieve this in certain cases? It would be nice to know some real world scenarios where the new strategy does a better job of balancing servers as compared to the current strategies.

From my experience running a large high segment count (over 6 million), high datasource count (over 12k) cluster with great variance in segment size (kb to gb) - the cost balancer creates a highly skewed environment when it comes to disk allocation. Maybe if cpu constraints were not a problem and we could balance many segments in short order - the algorithm would work its way towards having less storage skew. But in our environment even with a 90 cores on coordinator dedicated to balancing, we can not balance meaningful number of segments while also keeping coordination within reason. We had servers with nearly 90% utilization and others with under 50% with little to no progress towards balance over months and months of uptime.
Perhaps, an alternative for us could have been cachingCost, if that meaningfully drops cpu. But we had experienced odd behavior that we couldn't pinpoint in the past when testing it in lower envs, and thus abandoned the idea of using it in prod until exhaustive testing could be done.
That left us with the random balancer, which by nature leads to skew in an environment like ours where segment sizes vary so much. We did really like the performance in terms of how many segments we could balance though. And this was the trigger for us to write this balancer that uses simple weighting to avoid the pitfalls of random for us, while still allowing us to move many segments in a short amount of time.

It would also be nice to have some tests based on the CoordinatorSimulationBaseTest that demonstrates how this strategy performs in a typical setup.

I will look into this shortly, thanks for bringing it to my attention!

Now that I start to dig in more after looking at CoordinatorSimulationBaseTest I'm wondering if changes in coordination have made this new balancer less required for the case that I currently see. We are admittedly on an old major version of druid (24), and I only checked to see if any new balancers were added in new version(s) docs when deciding if I should contribute this back. For instance, SegmentToMoveCalculator is something I'm just now starting to learn about. I do wonder though, if we would still be compute constrained in an env like mine. The cost calculations are simply too expensive for us to move enough segments, so I don't know that any improvements in the logic to control the volume being moved makes a difference to us without significantly cheapening the balancer decision making

Now that I start to dig in more after looking at CoordinatorSimulationBaseTest I'm wondering if changes in coordination have made this new balancer less required for the case that I currently see.

Yes, I was thinking the same. There have been several major improvements to the Coordinator starting with Druid 27. I would recommend you to try out a newer Druid version and see if it solves the problems with your cluster. It would also be a nice validation of the latest changes made to the Coordinator.

I do wonder though, if we would still be compute constrained in an env like mine.

I shouldn't think so, because initial assignments are very fast thanks to RoundRobinServerSelector.
For balancing, the coordinator dynamically decides what it can take up without becoming too slow and balances only that.
Let me know what you think.

Now that I start to dig in more after looking at CoordinatorSimulationBaseTest I'm wondering if changes in coordination have made this new balancer less required for the case that I currently see.

Yes, I was thinking the same. There have been several major improvements to the Coordinator starting with Druid 27. I would recommend you to try out a newer Druid version and see if it solves the problems with your cluster. It would also be a nice validation of the latest changes made to the Coordinator. 🙂

@capistrant , just checking if you got a chance to try out the newer versions of Druid which have the above discussed coordinator improvements.

@kfaraz unfortunately no. We have been in a holding pattern with our supported Druid version at my company due to resource constraints. Undetermined when we will actually get upgraded. Probably not until 2025 Q1 at this point if I had to guess.

Ah, I see. 🙂 Thanks for the update.


[Parameter Request] Table 5771 OnBeforeSetTableView

Hi,
In order to make use of the 5771 record when applying filters, the Rec must also be exposed in this event.
Please make the following change to the Event declaration:
BEFORE:
LOCAL [IntegrationEvent] OnBeforeSetTableView(VAR WarehouseRequest : Record "Warehouse Request";VAR SalesHeader : Record "Sales Header";VAR SalesLine : Record "Sales Line";VAR PurchaseLine : Record "Purchase Line";VAR TransferLine : Record "Transfer Line"; VAR ServiceHeader : Record "Service Header"; VAR ServiceLine : Record "Service Line")
AFTER:
LOCAL [IntegrationEvent] OnBeforeSetTableView(VAR WarehouseRequest : Record "Warehouse Request";VAR SalesHeader : Record "Sales Header";VAR SalesLine : Record "Sales Line";VAR PurchaseLine : Record "Purchase Line";VAR TransferLine : Record "Transfer Line"; VAR ServiceHeader : Record "Service Header"; VAR ServiceLine : Record "Service Line"; Rec : Record "Warehouse Source Filter")
New publishing statement:
OnBeforeSetTableView(WhseRequest,SalesHeader,SalesLine,PurchLine,TransLine,ServiceHeader,ServiceLine,Rec);

Also include the VAR PurchaseHeader: Record "Purchase Header" as a parameter.
And add in the body the statement GetSourceBatch.SETTABLEVIEW(PurchHeader);


BUG: SampleData[AlphaDiversity] -> Metadata doesn't work with tuples

Bug Description
Some SampleData[AlphaDiversity] Artifacts contain tuples of numbers (for example, chao1). The transformer to qiime2.Metadata explodes when it sees this.
Steps to reproduce the behavior

Produce a Chao1 SampleData[AlphaDiversity] Artifact.
qiime metadata tabulate --m-input-file chao1_ci.qza --o-visualization chao1_ci.qzv
See error

Expected behavior
Transforming SampleData[AlphaDiversity] to Metadata should work.
Questions

Do we solve this in the transformer, or the format, or both, or neither?

References

Originating forum post

This is an old issue, and one I suspect has been documented somewhere else, so if we ever find the xref, let's merge here into this issue.


[SPARK-11269][SQL] Java API support & test cases for Dataset

This simply brings https://github.com/apache/spark/pull/9358 up-to-date.

Build triggered. sha1 is merged.

Build started sha1 is merged.

Test build #45248 has started for PR 9528 at commit f9279e1.

Build finished. No test results found.

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

jenkins, test this please

Merged build triggered.

Merged build started.

Test build #45253 has started for PR 9528 at commit f9279e1.

Test build #45253 has finished for PR 9528 at commit f9279e1.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  * case class GetInternalRowField(child: Expression, ordinal: Int, dataType: DataType)\n

Merged build finished. Test FAILed.


Sending multi-part email sends HTML part as an attachment

Expected Behavior
Expected behavior is to view e-mail as HTML, with buttons, links etc. But I also want to send text part as fallback, when html can't be displayed
Actual Behaviour
When I send e-mail with html and text in MultiPartBody the HTML part is sent as an attachment.
I'm using the code from guiide https://micronaut-projects.github.io/micronaut-email/latest/guide/#template
The same code sent HTML template as an attachement and in the e-mail is displayed the text part.
I'm using JavaMail API and template engine handlebars.
The content-type header is mixed/multipart
Steps To Reproduce
Setup EmailConfigProvider eg. for gmail
@Singleton
class EmailConfigProvider: MailPropertiesProvider {
    override fun mailProperties(): Properties {
        val emailProperties = Properties()
        emailProperties.put("mail.smtp.host", "smtp.gmail.com")
        emailProperties.put("mail.smtp.port", "587");
        emailProperties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
        emailProperties.put("mail.smtp.ssl.protocols", "TLSv1.2");
        emailProperties.put("mail.transport.protocol", "smtp");
        emailProperties.put("mail.smtp.auth", "true");
        emailProperties.put("mail.smtp.starttls.enable", "true");
        emailProperties.put("mail.debug", "true");
        return emailProperties
    }
}

Setup EmailSessionProvider and replace user and password with your credentials
@Singleton
class EmailSessionProvider(
    properties: EmailConfigProvider,
    @Property(name = "online-onboarding.smtp.user") user: String,
    @Property(name = "online-onboarding.smtp.password") password: String
) : SessionProvider {
    private val properties: Properties
    private val user: String
    private val password: String

    init {
        this.properties = properties.mailProperties()
        this.user = user
        this.password = password
    }

    @NonNull
    override fun session(): Session? {
        return Session.getInstance(properties, object : Authenticator() {
            override fun getPasswordAuthentication(): PasswordAuthentication {
                return PasswordAuthentication(user, password)
            }
        })
    }
}

Setup function for sending e-mails
@Singleton
class EmailService(private val emailSender: EmailSender<*, *>) {

    fun sendMail(email: EmailData): EmailException? {

        try {
            emailSender.send(
                Email.builder()
                    .from(email.from)
                    .to(email.to)
                    .subject(email.subject)
                    .body(
                        MultipartBody(
                            TemplateBody(BodyType.HTML, ModelAndView("email/purchase-created-html", email.variables)),
                            TemplateBody(BodyType.TEXT, ModelAndView("email/purchase-created-text", email.variables))
                        ) //TODO - when I add .html it sends html, but not text
                    )
            )
            return null
        } catch (exception: EmailException) {
            return exception
        }

    }
}

You need to create .html and .txt files under resources/views
Call this function and check for e-mail
Environment Information
micronautVersion=3.3.3
kotlinVersion=1.6.10
Example Application
No response
Version
3.3.3

@kopkaa Thanks for reporting this, hopefully we have a fix 👍


x/net/websocket: tls handshake EOF when using a goroutine

When using SSL and websockets (using either gorilla or golang.org's websocket lib), moderate connection load will result in clients not connecting properly, and this message:
2015/05/04 13:31:58 http: TLS handshake error from <IP_ADDRESS>:5253: EOF
2015/05/04 13:31:58 http: TLS handshake error from <IP_ADDRESS>:5254: EOF
2015/05/04 13:31:58 http: TLS handshake error from <IP_ADDRESS>:5255: EOF
2015/05/04 13:31:58 http: TLS handshake error from <IP_ADDRESS>:5256: EOF
2015/05/04 13:31:58 http: TLS handshake error from <IP_ADDRESS>:5257: EOF

This doesn't happen in my basic example (located here:  https://github.com/bbangert/ssl-ram-testing/blob/master/Go/golang.org/main.go) when it uses io.Copy to implement the echo server, but when it merely uses another goroutine to write the echo'd data back then the TLS handshake errors pop up.
I observed this using the latest Go 1.4.2, we have observed it in prior versions of Go in production, but this is the first time I have a minimal example of it (for testing SSL RAM overhead per connection, which is very very high in Golang, but that's a separate issue....).

Can you please provide instructions on how to reproduce the issue?  It sounds like you said the main.go file you linked does not demonstrate the problem.

The Go file I linked to has both types of echo in it, the default build of it will exhibit the EOF issue, passing the environ var "USE_COPY=true" will run the other echo handler using io.Copy that does not exhibit the EOF.
README for the Go code: https://github.com/bbangert/ssl-ram-testing/tree/master/Go/golang.org
To run the client tester, the directions are here: https://github.com/bbangert/ssl-ram-testing
You will need to increase the open file descriptors for the shell running the testing client and the Go binary as it attaches 1000 clients:
ulimit -n 4096

Then run the the Go code in its directory with: USE_SSL=true ./run
And the tester can be run from the project root dir: USE_SSL=true ./tester/client

I should note that the exact same error occured when using Gorilla's websocket implementation, so I believe this error is in the http TLS lib itself, not x/net/websocket.

I'm updating the title to reflect the least common denominator. Since this is reproducible using both gorilla's websocket library and code.google.com/p/go.net/websocket, it doesn't make sense to say that its an error in the websocket library.
They both use the net/http library however, and the behavior that is occurring is a direct result of when a goroutine besides the one initially spawned to handle the request utilizes the connection object to write to it. I have tried several other variants to try and rule out race conditions, ie, I tweaked it to use the channel in lock-step to prevent read/write at once:
func echoHandler(ws *websocket.Conn) {
	echoChan := make(chan string)
	defer close(echoChan)
	go func() {
		for data := range echoChan {
			websocket.Message.Send(ws, data)
			echoChan <- data
		}
	}()

	var d string
	for true {
		err := websocket.Message.Receive(ws, d)
		if err != nil {
			echoChan <- d
			<-echoChan
		}
	}
}

That doesn't help. However, if I have the new goroutine not write the data out, and instead it just passes it back, and the original goroutine handling the request does the write, no more TLS handshake problems.
My only theory at this point is that the connection has somehow mangled things in the system somewhere on being passed between the goroutine's, such that new clients get TLS handshake errors.

I just compiled Go tip, the TLS handshake errors are gone. Anyone using websockets (whether golang.org/net/websocket or gorilla) should be aware that prior to recent Go, using a connection from two goroutines will cause bad things to happen.
I was about to hit Comment on this, when I saw that the CPU usage had skyrocketed for the basic little websocket server, even though I dropped all the connections. So something still seems to be wrong in some way.
Any other versions of Go I should test this with?

Let's move this conversation to golang-nuts@ and come back here when there are concrete bugs to be worked on.
It's not clear what this issue is about anymore.

@bradfitz Have you tried running it the way I documented clearly so you could see what happens?

No, because you said it was fixed. Although I don't recall any relevant fixes during Go 1.5.
Please discuss this on golang-nuts@ where others might help identify a resource leak in your demo.

Ah, sorry, yes, 1.5 has fixed it, I forgot to close a goroutine on connection break, so my example somehow leaked super fast. After fixing it 1.5 seems to work properly, so having this closed is fine.


Implement Create/Update/Delete for UserGroup(s)

Want to add terraform resource for UserGroup(s) so we need this to support that first.
Here is the corresponding task in the terraform provider for click.

I would be interested in working on this, if there are no plans in place to do this, i will start on a PR for it.


initialization error

What does it mean?
I use GodotAppodeal.gd script, but on start my output says  initialization finished with message: [com.appodeal.ads.initializing.ApdInitializationError$InternalError$SdkConfigurationError]
My .gdap file equals to readme without admob:
[config]

name="GodotAppodeal"
binary_type="local"
binary="GodotAppodeal.3.0.0.release.aar"

[dependencies]

remote=[
"com.appodeal.ads.sdk:core:3.0.0",
"com.appodeal.ads.sdk.networks:adcolony:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:applovin:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:bidmachine:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:facebook:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:ironsource:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:my_target:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:unity_ads:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:vungle:<IP_ADDRESS>",
"com.appodeal.ads.sdk.networks:yandex:<IP_ADDRESS>",
"com.appodeal.ads.sdk.services:adjust:<IP_ADDRESS>",
"com.appodeal.ads.sdk.services:appsflyer:<IP_ADDRESS>",
"com.appodeal.ads.sdk.services:firebase:<IP_ADDRESS>",
"com.appodeal.ads.sdk.services:facebook_analytics:<IP_ADDRESS>",
]
custom_maven_repos=["https://artifactory.appodeal.com/appodeal"]

My consent manager behavior is strange. There are no any windows of agree show up. (they are must be, how i understand) Is it root of problem, maybe?
printConsentStatus() shows
GodotAppodeal: consent -> ZONE = UNKNOWN
GodotAppodeal: consent -> US_PRIVACY =
GodotAppodeal: consent -> STATUS = UNKNOWN
GodotAppodeal: consent -> IAB_CONSENT =

even if i use this code before init:
updateGDPRUserConsent(ConsentType.NON_PERSONALIZED)
updateCCPAUserConsent(ConsentType.NON_PERSONALIZED)

I'm currently in research about ApdInitializationError callback, but you shouldn't be afraid of this message. Even though Appodeal throws this error, it works as intended and shows ads. Maybe it has something to do with it's current beta status.
I will push an update to at least make these callback messages more verbose when I have time for it. But if you don't want to wait, you can inspect what Appodeal throws into console via adb.

Set LogLevel to DEBUG or VERBOSE
In terminal, run adb shell
Run logcat | grep Appodeal

When doing adb shell logcat | grep Appodeal with DEBUG or VERBOSE log levels, you can see that Appodeal throws warnings about everything - for example, if you don't have some adapters like AdMob, it pushes warnings. Maybe this is where this ApdInitializationError comes from. Regardless, I experienced no issues with showing ads on my live games.
As per the consent status, it's interesting. Appodeal summons consent manager IF NECESSARY, meaning that for some regions (e.g. Europe) it will summon consent manager and for other (e.g. Russia) it won't. This can be easily tested if you use VPN and seems to depend on whether the given country has some specific data protection laws like GDPR or CCPA. Consent Manager gets summoned (if Appodeal SDK thinks it has to) when calling initialize() function and it's summon is directly handled by the Appodeal SDK, my plugin doesn't have anything to do with that.
The other thing about Appodeal that I noticed is that it looks like if you get consent from user via Appodeal Consent Manager, this type of consent seems more trusted than a consent that you force-define via updateGDPRUserConsent and updateCCPAUserConsent. Seems like Appodeal Consent Manager generates some certificates and other stuff that we can't create and it probably has something to do with ads quality and eCPMs, hence you probably want to let Appodeal collect consent on their own (as opposed to collect it by your own).

UPD: the reason it throws ApdInitializationError$InternalError$SdkConfigurationError is because I was trying to stringify the object that is responsible for SDK initialization errors, but there was no method to stringify it. So basically plugin was throwing ApdInitializationError$InternalError$SdkConfigurationError even if the error object was null, which stands for the successful init according to the docs. I will update the plugin when I get to it, but this basically means that this initialization message is nothing to worry about.

Interesting, but i recieve _load_failed errors 😢
I try to set up logcat for look deep

These have nothing to do with the plugin, all happens under the hood of Appodeal SDK. It happens a lot due to how mediation waterfall works. If you want to know possible reasons for this, I'd suggest to read more about how ad mediation works.
In short, it doesn't fail to load ads because of some technical unavailability, but rather because no ads can be served from a given provider. Info to look up: "mediation waterfall", "fillrate" and "mediation bidding".
Also AFAIK SDK 3.0.0 always fails to load ads if in testing mode. Back in SDK 2.x.x it worked differently.

I have updated the way plugin handles SDK initialization callbacks so I close this.


MacOS 11.0 Big Sur builds not starting

Description
MacOS Big Sur builds are not starting and failing.
Area for Triage:

Question, Bug, or Feature?:

"Bug"
Virtual environments affected

[ ] Ubuntu 16.04
[ ] Ubuntu 18.04
[ ] Ubuntu 20.04
[ ] macOS 10.15
[x] macOS 11.0
[ ] Windows Server 2016 R2
[ ] Windows Server 2019

Expected behavior
A description of what you expected to happen.
It should start.
Actual behavior
A description of what is actually happening.
Builds are not starting.
Repro steps
A description with steps to reproduce the issue. If your have a public example or repo to share,
please provide the link.
https://github.com/kumaraditya303/umarkdown/actions/runs/466046639

Duplicate of #2381

Duplicate of #2381

Closing as duplicate of #2381

Closing as duplicate of #2381


add sys/select.h to includes

add sys/select.h to includes

your commit message describes what you're doing, but not why you're doing it. missing critical info.

well... because termbox.c uses select().

it's still missing in the commit message. (hint: some ppl try to figure out what happened in a repo by reading commit messages. in your case they have the look at the code additionally to figure out why)

oh I see it now, I used github's web editor

rebased the commit message to be single-line, hopefully now you'll be able to read it

the problem is not that it wasn't single line (albeit the first line "update foo.c" was a bit too generic). it's that it's missing the rationale, still.
so a good commit message would tell a good summary what it's doing in the first line,
and then go on to explain the changes and the rationale for the changes in the next lines.

wait, you want me to explain the rationale between adding a dependency?

i don't want you to do anything, since this is not my repo. however if it was mine, i'd request a commit message explaining the "why".
for example:
foo.c: add missing include sys/select.h

the code uses select(), but the header defining it was not included.
this broke compilation on AIX.

well, let's hope the author isn't as autisticly pedantic as you are.


Disable failing onnx models from the backend tests

Based on the information available from onnx, access to these has been lost for the moment (possibly forever?). Until there's a better solution, disable them to unblock everyone.
See https://github.com/onnx/onnx-mlir/issues/2001 and https://github.com/onnx/onnx/issues/4857 for more information
Signed-off-by: Stella Stamenova<EMAIL_ADDRESS>

Jenkins Linux amd64 Build #9577 [push] Disable failing models (... started at 17:39

Jenkins Linux ppc64le Build #8642 [push] Disable failing models (... started at 18:44

Jenkins Linux s390x Build #9596 [push] Disable failing models (... started at 18:39

Jenkins Linux amd64 Build #9577 [push] Disable failing models (... passed after 1 hr 39 min

Jenkins Linux ppc64le Build #8642 [push] Disable failing models (... aborted after 1 hr 39 min

Jenkins Linux s390x Build #9596 [push] Disable failing models (... aborted after 1 hr 40 min


Handle intro,elim,dest as Global Attributes

"Global Attribute on Unnamed Lemma" wasn't considering the attributes
intro, elim and dest. Since these can be modified with "?" or "!", the
attribute parser also needed to be tweaked, since it previously only
parsed identifiers (e.g. simp or cong), which didn't cover "?!" because
they're keywords.
Closes #6

LGTM!


Flink-13405 Translate "Basic API Concepts" page into Chinese

All nouns are singular
All Tuple are untranslated and capitalized
All Case Classes are untranslated and capitalized
@klion26 @xccui @wuchong PTAL

Please avoid using git merge in the git history

Sorry, should I close this pr and open a new one?

You can make a clean history and force push to this branch.
If this is not easy, then close and create a new pr is fine.

Thank you very much.


NTR: Case and control participant roles

This is in reference to case-control study design. I propose 2 subclasses of 'participant under investigation role' to distinguish case and control subjects in a case-control study. I would need some suggestions for labels; for the moment I'll use 'case-control case role' and 'case-control control role'.
Definition of case-control case role: a participant under investigation role that inheres in a bearer of a disease specified in a case-control study design.
Definition of case-control control role: a participant under investigation role that inheres in an organism that does not bear a disease specified in a case-control study design.

The labels are awkward, but I can't come up with something better. I agree with the need to not just use 'case role' and 'control role', which could be all kinds of things. maybe 'case-control study case role' ? Not convincing myself
Regarding the definition, one thing I was wondering if there always is a disease. Looking at the wiki definition, they refer to 'outcomes' beyond diseases. I have yet to see a good example though. https://en.wikipedia.org/wiki/Case–control_study

It seems Wikipedia and other sources use 'outcome' to denote something more general than 'disease'. Perhaps for the definition, generalizing up one level to 'disposition' would be more appropriate; that would also allow the bearer to be a group rather than only an organism.
As for the label: 'case role in case-control study' seems a bit smoother.

Discussed on OBI July 15, 2019. May want to be broader than disposition to include phenotypes and symptoms. Also have a textual definition that is more natural language.

Mark touch base with @johnwjudkins

Discussed today.  Goals:  clear (and compatible) logical and textual definitions.  Phrase the textual definition in terms of a process that "generates" the role?  A selection process?  (Then we don't have to talk about a disease, outcome etc.)
For example, a woman with a multiple live birth pregnancy or a person with an amputation illustrate outcomes that aren't "diseases" or "conditions"
Agreed that these roles should be borne by individuals, not populations, but those individuals shouldn't be limited to people with diseases, ie a case role could be borne by a lake with a high turbidity quality.

I don't have an updated definition quite yet, but here's an update on my progress:
The roles are distinguished by some process that is part of the history of the participant under investigation preceded by some ‘exposure event or process’ that is the bearer of the case role that is not part of the history of the participant under investigation that is the bearer of the control role.
'exposure even or process' in RO won't work for this since it refers to an organism, but can work with an adjusted version of the definition that e.g. replaces organism with 'material entity'.

Update on progress:
The roles are distinguished by some process. This process is part of the history—which is preceded by some exposure event—of the participant under investigation that bears the case role. Yet this process is not part of the history of the participant under investigation that bears the control role.
A modified definition of 'exposure event or process' in RO may be useful to include here; that definition is limited to organisms rather than any material entity.

Discussed on OBI call 9/9/2019 - @johnwjudkins action item: proposed definitions for the new role terms.

In addition to the role definitions, I'm submitting a case-control study design definition. There are at least 2 such terms in OBO, but I found them too vague to use as a basis for the associated role definitions. I especially welcome suggestions on how to make these sound more natural without sacrificing any meaning.
case-control study design:
A study design that involves the creation of two types of roles, one of either to be assigned to each participant under investigation. These roles are distinguished by a type of process that is hypothesized to be an outcome of an exposure event, such that a participant having the case role has this process in its history, while a participant having the control role does not.
case role in case-control study:
A role borne by a case-control study design participant under investigation that has the process as part of its history that is hypothesized to be an outcome of the exposure event.
control role in case-control study:
A role borne by a case-control study design participant under investigation that does not have the process as part of its history that is hypothesized to be an outcome of the exposure event.
Note that I’m understanding "outcome" as a process (a la 'disease outcome'] and using 'history' as it's defined in BFO. In the lake example from a previous comment in this thread, turbidity is a quality, but the definition still works for this example because the outcome is an increase in turbidity, which is a process. (It also works for disease if we understand the disease course to be the outcome.)

Update based on last week's discussion:
case-control study design:
A study design that entails the creation of two types of roles, such that each participant under investigation bears one or the other. What distinguishes the two types of roles is a type of quality or process, which is hypothesized to be an outcome of an exposure event. A participant having the case role has this process in its history or bears this quality, while a participant having the control role does not.
case role in case-control study:
A role borne by a case-control study design participant under investigation such that this participant has participated in the process or bears the quality hypothesized to be an outcome of the exposure event
control role in case-control study:
A role borne by a case-control study design participant under investigation such that this participant has not participated in the process or does not bear the quality hypothesized to be an outcome of the exposure event

Here’s Bjoern’s revised definition for the study, and I’ll add new definitions for the roles.
A study design that entails the creation of two types of roles, such that each participant under investigation bears one or the other. What distinguishes the two types of roles is an 'outcome' which is associated with participant that have a control, while a participant having the control role do not.  A case control study examines the hypothesis that the presence of the outcome in case participants is associated with an exposure event.
case role in case-control study:
A role that is borne by a case-control study design participant under investigation that is associated with the outcome mentioned in the study design.
control role in case-control study:
A role that is borne by a case-control study design participant under investigation that is not associated with the outcome mentioned in the study design.

There are two mentions of 'control' in the write-up, which seems wrong, and
is very possible to be my fault. The first mention should be the 'case'. So
something like the below.
A study design that entails the creation of two types of roles, such that
each participant under investigation bears one or the other. What
distinguishes the two types of roles is an 'outcome' which is associated
with participants that have the case role, while participants having the
control role do not. A case-control study examines the hypothesis that the
presence of the outcome in case participants is associated with an
'exposure' that is not associated with control participants.
On Sun, Oct 6, 2019 at 2:56 PM John Judkins<EMAIL_ADDRESS>wrote:

Here’s Bjoern’s revised definition for the study, and I’ll add new
definitions for the roles.
A study design that entails the creation of two types of roles, such that
each participant under investigation bears one or the other. What
distinguishes the two types of roles is an 'outcome' which is associated
with participant that have a control, while a participant having the
control role do not. A case control study examines the hypothesis that the
presence of the outcome in case participants is associated with an exposure
event.
case role in case-control study:
A role that is borne by a case-control study design participant under
investigation that is associated with the outcome mentioned in the study
design.
control role in case-control study:
A role that is borne by a case-control study design participant under
investigation that is not associated with the outcome mentioned in the
study design.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/obi-ontology/obi/issues/1037?email_source=notifications&email_token=ADJX2IW3SZJ6BNPYUBHWCCDQNJNJ5A5CNFSM4H4TUUVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAOVBCA#issuecomment-538792072,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADJX2IVIVKGFXTMQGDMW6JDQNJNJ5ANCNFSM4H4TUUVA
.

--
Bjoern Peters
Professor
La Jolla Institute for Allergy and Immunology
9420 Athena Circle
La Jolla, CA 92037, USA
Tel: 858/752-6914
Fax: 858/752-6987
http://www.liai.org/pages/faculty-peters

Minor change to first part of study design defintion, discussed on OBI dev call 10/7/19:
A study design that entails the creation of two types of roles, such that each participant under investigation bears either a 'case' or a 'control' role.


Why we always pick first entry from array?

Hey,
Sorry if title is bit misleading, but I've been getting my hands dirty in Cloud functions today, and notice a pattern of extracting first argument from result array. Did I missed something in docs?
Sorry if this was brought up already, I searched SO and issues here, but could not find any answer.
Thanks a lot!

It's because API responses sometimes have more than one result but you can
only resolve a promise with a single value, so we decided to be consistent
and always make the promise resolve with an array, even if sometimes the
array only has one item.
On Sun, Oct 15, 2017, 2:08 PM Krzysztof Borowy<EMAIL_ADDRESS>wrote:

Hey,
Sorry if title is bit misleading, but I've been getting my hands dirty in
Cloud functions today, and notice a pattern of extracting first argument
from result array
https://github.com/googleapis/nodejs-storage/blob/master/samples/files.js#L230.
Did I missed something in docs?
Sorry if this was brought up already, I searched SO and issues here, but
could not find any answer.
Thanks a lot!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/googleapis/nodejs-storage/issues/60, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABKERkx6nmLeHBgQfedcLnrBBvSDP3cUks5ssnRUgaJpZM4P55Um
.

Fair enough, thanks!


Converting GS blob datetime to timestamp

This should be a quick fix to convert the GS blob timestamp (when last updated) to an int (since epoch time) so we can compare. This will fix https://github.com/snakemake/snakemake/issues/572. Here is how I quickly tested:
blob.updated
datetime.datetime(2020, 6, 2, 10, 56, 4, 988000, tzinfo=<UTC>)

# float
blob.updated.timestamp()
1591095364.988

# int
int(blob.updated.timestamp())
1591095364

Signed-off-by: vsoch<EMAIL_ADDRESS>

whoa this is definitely not based off the right branch!


Fix dropped targets

#12647 introduced a bug: the zero value of keep_dropped_targets kept none of them.
I extended the test to check both zero and nonzero values.

Whoops! :+1:


docs: improve visibility of scaffolds

Motivation
Scaffolds are like project starters that made on top of the scaffolding system provided by at webpack-cli. These scaffolds will also be supported by webpack-ui Currently, there are not so many scaffolds so this might help to get more scaffolds to npm.

To get an idea of how scaffolds would be working (kind of PoC) rishabh3112/webpack-ui

Further Plans

Add webpack-scaffold-starter under writing a scaffold (section if it makes sense).
Adding available webpack scaffolds under Starter Kits section.

cc @evenstensberg

cc @EugeneHlushko

Makes sense to list it there, despite the fact that scaffolds arent widely used, there is no counterargument against that.

Thanks!

Well yes, Currently they aren't used at all I must say!
Although as webpack ecosystem lacks offering default configurations for projects officially, this can be a great addition to the webpack ecosystem in future when we build tools over scaffolds (like we have UI under development) so as to make sure it actually increases the efficiency of the users!


FIX: Improve handling of the approximate parameter to TreeExplainer for consistency, and deprecate the argument in the explainer's init method

Overview
Closes #3764
Description of the changes proposed in this pull request:

make use of parameter approximate consistent for the deepexplainer, which means deprecating approximate in the constructor and only supporting it in the shap_values and __call__ functions
adding type hints to various methods in the treeexplainer

Checklist

[x] All pre-commit checks pass.
[x] Unit tests added (if fixing a bug or adding a new feature)

I'll edit the title to something more descriptive, to help with generating release notes.

@connortann implemented your suggestions. Note that this is not breaking, just if we remove the parameter in an upcoming version it will be

@CloseChoice looking back at this, I noticed the approximate argument to TreeExplainer.__init() now has no effect. Usually I would understand "Deprecated" to mean "it still works but will not work in future", but in this case it looks like this parameter is already ignored.
Do we need to:

Update the warning to clarify the passed parameter has no effect, or
Update the code to still use the parameter for now?

Apologies for not picking up on this when I reviewed the PR!


parameterized-routing example does not deploy with now

Examples bug report
Example name
parameterized-routing
Describe the bug
Deploying the parameterized-examples results in a directory listing rather than the example. See https://parameterized-routing-app-50jj5mf6h.now.sh/
To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
(Assume now cli installed)
npx create-next-app --example parameterized-routing parameterized-routing-app
cd parameterized-routing
npm install
now deploy

Expected behavior
When deploying you should see the blog post listings and be able to navigate to them.

This is expected because of serverless vs custom server, however I think we can add a link to the guide / example in now-examples for this 👍


wrong env var name in README

Under "List of provided environment variables by SageMaker Containers"
a)
The code example for SM_INPUT_CONFIG_DIR seems to be wrong, it says
SM_INPUT_DIR=/opt/ml/input/config
instead of
SM_INPUT_CONFIG_DIR=/opt/ml/input/config
b)
The first sentence of the explanation text reads:

The path of the input directory, e.g. /opt/ml/input/config/.

I guess this is also a copy&paste error and should instead read:

The path of the input configuration directory, e.g. /opt/ml/input/config/.

@Henriii,
Thanks for bringing this to our attention.
Let me add a PR to fix this right away.


Admin>>CMS>>Pages>>Unbale to see new page in data grid

Login as a admin
Go to CMS from left menu>>Pages
Click on new page and enter valid details then click on save

Unable to see newly created page. Not working as expected


Fast switch for imageclock and iconlaunch

Launcher -> Clock works fast on 2v15, the other way around only works for 2v15.20 upwards.
Diff seems to be gigantic, but it's mostly whitespace changes by indention of the surrounding blocks for GC and var->let.

Great - thanks!


Typo fix in plan_memory relase -> release.

Typo fix in plan_memory relase -> release.

merged. Thanks!


rmfm: Update to 1.5.0

Changelog:

Fixed reloading in a deleted directory resulting in a crash
Append /opt/bin to PATH if not already included[^1]
The installation instructions, license and e-mail address were updated/changed

Commits/diff: https://forgejo.sny.sh/sun/rmFM/compare/1.4.0...1.5.0
[^1]: I also updated path_fix.patch accordingly

Just to warn you, but from what I understand, Unlicensed reverts to All Rights Reserved in places like Germany. You may want to stick with MIT.


Improve wording surrounding workflow_dispatch

This pull request improves the wording surrounding workflow_dispatch.
Why:
To me as a reader, it was not clear earlier that this event needs to be set in order for a workflow to be triggered manually. I only found this out on another guide somewhere else in the documentation, here.
What's being changed (if available, include any code snippets, screenshots, or gifs):
Change to one of the sentences used to describe the workflow_dispatch event.
Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

24575


Fixed File Naming Conventions

Pytests pass locally. May need to push to main to update test files.


Specialize Prefix/Suffix Match for Like/ILike between Array and Scalar for StringViewArray

Which issue does this PR close?

Parts of #5951.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

Bench from my dev machine
# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [11:42:12] C:130
$ uname -a
Linux arch-dev 6.10.3-zen1-2-zen #1 ZEN SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:47:21 +0000 x86_64 GNU/Linux

# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix x [11:37:47] C:130
$ critcmp master optimize_prefix
group                               master                                 optimize_prefix
-----                               ------                                 ---------------
like_utf8view scalar complex        1.00    173.4±2.43ms        ? ?/sec    1.03   178.9±29.87ms        ? ?/sec
like_utf8view scalar contains       1.01    128.3±1.02ms        ? ?/sec    1.00    127.1±2.73ms        ? ?/sec
like_utf8view scalar ends with      1.01     37.3±0.29ms        ? ?/sec    1.00     36.9±1.41ms        ? ?/sec
like_utf8view scalar equals         1.00     26.0±0.25ms        ? ?/sec    1.02     26.6±0.63ms        ? ?/sec
like_utf8view scalar starts with    1.88     33.1±2.11ms        ? ?/sec    1.00     17.6±0.92ms        ? ?/sec

Notablely this PR is just for startwith/istartwith like between array and scalar. Array vs array is more ticky, I am looking into some feasible options...

I read through the conditions here. Ideally, when the lhs is a scalar and rhs is an array, use op_scalar with reversed order should be faster than making a scalar iterator?
https://github.com/apache/arrow-rs/blob/a693f0f9c37567b2b121e261fc0a4587776d5ca4/arrow-string/src/like.rs#L204C1-L221C14
CC @alamb @XiangpengHao

Bench from my dev machine
# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [11:42:12] C:130
$ uname -a
Linux arch-dev 6.10.3-zen1-2-zen #1 ZEN SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:47:21 +0000 x86_64 GNU/Linux

# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [12:33:29] C:130
$ critcmp master optimize_prefix optimize_prefix_boxed_iter
group                               master                                 optimize_prefix                        optimize_prefix_boxed_iter
-----                               ------                                 ---------------                        --------------------------
like_utf8view scalar complex        1.01    172.7±1.45ms        ? ?/sec    1.00    170.3±1.47ms        ? ?/sec    1.00    171.0±1.55ms        ? ?/sec
like_utf8view scalar contains       1.04    129.3±6.07ms        ? ?/sec    1.01    126.2±1.46ms        ? ?/sec    1.00    124.9±1.44ms        ? ?/sec
like_utf8view scalar ends with      1.02     37.6±0.45ms        ? ?/sec    1.00     36.7±0.38ms        ? ?/sec    1.02     37.6±0.39ms        ? ?/sec
like_utf8view scalar equals         1.01     26.2±0.42ms        ? ?/sec    1.02     26.5±0.38ms        ? ?/sec    1.00     26.0±0.27ms        ? ?/sec
like_utf8view scalar starts with    1.90     32.8±1.58ms        ? ?/sec    1.00     17.2±0.45ms        ? ?/sec    1.89     32.5±0.45ms        ? ?/sec

Bench from my dev machine
# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [11:42:12] C:130
$ uname -a
Linux arch-dev 6.10.3-zen1-2-zen #1 ZEN SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:47:21 +0000 x86_64 GNU/Linux

# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [12:33:29] C:130
$ critcmp master optimize_prefix optimize_prefix_boxed_iter
group                               master                                 optimize_prefix                        optimize_prefix_boxed_iter
-----                               ------                                 ---------------                        --------------------------
like_utf8view scalar complex        1.01    172.7±1.45ms        ? ?/sec    1.00    170.3±1.47ms        ? ?/sec    1.00    171.0±1.55ms        ? ?/sec
like_utf8view scalar contains       1.04    129.3±6.07ms        ? ?/sec    1.01    126.2±1.46ms        ? ?/sec    1.00    124.9±1.44ms        ? ?/sec
like_utf8view scalar ends with      1.02     37.6±0.45ms        ? ?/sec    1.00     36.7±0.38ms        ? ?/sec    1.02     37.6±0.39ms        ? ?/sec
like_utf8view scalar equals         1.01     26.2±0.42ms        ? ?/sec    1.02     26.5±0.38ms        ? ?/sec    1.00     26.0±0.27ms        ? ?/sec
like_utf8view scalar starts with    1.90     32.8±1.58ms        ? ?/sec    1.00     17.2±0.45ms        ? ?/sec    1.89     32.5±0.45ms        ? ?/sec

I did the

2x faster on starts_with. not bad!

Here is an updated benchmark for the latest code. It indicates the optimizations only work on the first 4/12 bytes. Any time it reaches the buffer, the perf is down. Given the result, I suspect it won't work on complex cases like regex. I will test them though.
xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli1/optimize_prefix o [22:23:48]
$ critcmp master optimize_prefix
group                                                 master                                 optimize_prefix

like_utf8view scalar complex                          1.00    174.5±2.43ms        ? ?/sec    1.01    176.0±2.07ms        ? ?/sec
like_utf8view scalar contains                         1.00    129.2±1.50ms        ? ?/sec    1.02    131.6±5.38ms        ? ?/sec
like_utf8view scalar ends with                        1.01     38.0±0.68ms        ? ?/sec    1.00     37.7±0.38ms        ? ?/sec
like_utf8view scalar equals                           1.00     26.2±0.34ms        ? ?/sec    1.00     26.2±0.37ms        ? ?/sec
like_utf8view scalar starts with                      1.63     32.6±0.40ms        ? ?/sec    1.00     20.0±0.29ms        ? ?/sec
like_utf8view scalar starts with more than 4 bytes    1.07     33.8±0.38ms        ? ?/sec    1.00     31.7±0.28ms        ? ?/sec

I am hoping to find time to review this in more detail tomorrow

I got some better results on other string view predicates. Will update them in batch tonight.

I got some better results on other string view predicates. Will update them in batch tonight.

Updated the latest benchmark, by handling string views in bytes instead of string.
group                                                 master                                 prefix_v2
-----                                                 ------                                 ---------
like_utf8view scalar complex                          1.01    175.4±4.92ms        ? ?/sec    1.00    173.8±2.69ms        ? ?/sec
like_utf8view scalar contains                         1.00    130.5±3.64ms        ? ?/sec    1.00    130.0±1.65ms        ? ?/sec
like_utf8view scalar ends with                        4.31     37.9±0.73ms        ? ?/sec    1.00      8.8±0.15ms        ? ?/sec
like_utf8view scalar equals                           1.00     26.3±0.55ms        ? ?/sec    1.00     26.3±0.43ms        ? ?/sec
like_utf8view scalar regex                            1.00     26.8±0.45ms        ? ?/sec
like_utf8view scalar starts with                      3.19     32.8±0.70ms        ? ?/sec    1.00     10.3±0.19ms        ? ?/sec
like_utf8view scalar starts with more than 4 bytes    1.22     34.0±0.68ms        ? ?/sec    1.00     27.9±0.33ms        ? ?/sec

Seems the previous result are generated by falut code. Let me do more iterations for this.

Updated the Benchmark results for the latest version.
# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli/prefix_v2 o [17:19:13]
$ uname -a
Linux arch-dev 6.10.4-zen2-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Sun, 11 Aug 2024 16:18:46 +0000 x86_64 GNU/Linux

# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli/prefix_v2 o [17:19:19]
$ critcmp master_08_19 optimized_prefix_suffix
group                                                 master_08_19                           optimized_prefix_suffix
-----                                                 ------------                           -----------------------
like_utf8view scalar complex                          1.05   184.5±15.76ms        ? ?/sec    1.00    175.2±7.53ms        ? ?/sec
like_utf8view scalar contains                         1.03    130.7±3.52ms        ? ?/sec    1.00    127.1±1.97ms        ? ?/sec
like_utf8view scalar ends with                        1.07     37.8±0.54ms        ? ?/sec    1.00     35.3±0.50ms        ? ?/sec
like_utf8view scalar equals                           1.00     26.4±0.59ms        ? ?/sec    1.01     26.6±0.35ms        ? ?/sec
like_utf8view scalar starts with                      1.62     32.8±0.55ms        ? ?/sec    1.00     20.2±0.39ms        ? ?/sec
like_utf8view scalar starts with more than 4 bytes    1.08     34.0±0.53ms        ? ?/sec    1.00     31.7±0.52ms        ? ?/sec

Observations Based on Changes:

The inline implementation of start_withs resulted in notable performance improvements.
Switching from &str to &[u8] showed only marginal performance gains (a few milliseconds), with a trade-off in flexibility and readability. Since str is essentially a byte container, the benefits do not justify the loss in code clarity.
There is no significant performance difference between using BooleanArray::from::<Vec<bool>> and BooleanArray::fromUnary.

Some minor improvements after use &[u8] directly.
like_utf8view scalar complex
----------------------------
optimized_prefix_suffix_bytes     1.00     171.9±2.78ms       ? ?/sec
optimized_prefix_suffix           1.02     174.7±2.58ms       ? ?/sec
master_08_19                      1.07    184.5±15.76ms       ? ?/sec

like_utf8view scalar contains
-----------------------------
optimized_prefix_suffix_bytes     1.00     124.7±1.66ms       ? ?/sec
optimized_prefix_suffix           1.02     127.5±2.69ms       ? ?/sec
master_08_19                      1.05     130.7±3.52ms       ? ?/sec

like_utf8view scalar ends with
------------------------------
optimized_prefix_suffix_bytes     1.00      33.6±0.52ms       ? ?/sec
optimized_prefix_suffix           1.02      34.3±0.56ms       ? ?/sec
master_08_19                      1.12      37.8±0.54ms       ? ?/sec

like_utf8view scalar equals
---------------------------
master_08_19                      1.00      26.4±0.59ms       ? ?/sec
optimized_prefix_suffix_bytes     1.01      26.7±0.56ms       ? ?/sec
optimized_prefix_suffix           1.03      27.2±0.94ms       ? ?/sec

like_utf8view scalar starts with
--------------------------------
optimized_prefix_suffix_bytes     1.00      20.4±0.27ms       ? ?/sec
optimized_prefix_suffix           1.01      20.6±0.65ms       ? ?/sec
master_08_19                      1.61      32.8±0.55ms       ? ?/sec

like_utf8view scalar starts with more than 4 bytes
--------------------------------------------------
optimized_prefix_suffix_bytes     1.00      31.8±0.35ms       ? ?/sec
optimized_prefix_suffix           1.00      31.9±0.44ms       ? ?/sec
master_08_19                      1.07      34.0±0.53ms       ? ?/sec

🤔  the benchmarks fail now for me like

Benchmarking eq scalar StringViewArray: Warming up for 3.0000 sthread 'main' panicked at arrow/benches/comparison_kernels.rs:196:50:
called `Result::unwrap()` on an `Err` value: InvalidArgumentError("Invalid comparison operation: Utf8 == Utf8View")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: bench failed, to rerun pass `-p arrow --bench comparison_kernels`

🤔 the benchmarks fail now for me like

Benchmarking eq scalar StringViewArray: Warming up for 3.0000 sthread 'main' panicked at arrow/benches/comparison_kernels.rs:196:50:
called `Result::unwrap()` on an `Err` value: InvalidArgumentError("Invalid comparison operation: Utf8 == Utf8View")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: bench failed, to rerun pass `-p arrow --bench comparison_kernels`

This issue could be repro on the master branch... I looked into the history the benchmark shouldn't work at the time it was checked in.
https://github.com/alamb/arrow-rs/blob/8941cbf5325b380bf70ea1ee5950f570a102c873/arrow-ord/src/cmp.rs#L235-L239

🤔 the benchmarks fail now for me like

Benchmarking eq scalar StringViewArray: Warming up for 3.0000 sthread 'main' panicked at arrow/benches/comparison_kernels.rs:196:50:
called `Result::unwrap()` on an `Err` value: InvalidArgumentError("Invalid comparison operation: Utf8 == Utf8View")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: bench failed, to rerun pass `-p arrow --bench comparison_kernels`

This issue could be repro on the master branch... I looked into the history the benchmark shouldn't work at the time it was checked in. Comment out this bench and everything works then...
https://github.com/alamb/arrow-rs/blob/8941cbf5325b380bf70ea1ee5950f570a102c873/arrow-ord/src/cmp.rs#L235-L239

This would be a more complex fix than expected. The following functions, including appy, apply_op* are expected the lhs and rhs are of the same data type. How about doing conventions beforehead?

This issue could be repro on the master branch... I looked into the history the benchmark shouldn't work at the time it was checked in. Comment out this bench and everything works then...

Thanks @xinlifoobar  -- indeed this does appear to be an issue on the master branch. I filed https://github.com/apache/arrow-rs/issues/6283 and will fix it shortly

New benckmark results.
# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli/prefix_v2 o [13:29:59]
$ uname -a
Linux arch-dev 6.10.4-zen2-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Sun, 11 Aug 2024 16:18:46 +0000 x86_64 GNU/Linux

# xinli @ arch-dev in ~/source/repos/arrow-rs on git:dev/xinli/prefix_v2 o [13:30:07]
$ critcmp master_08_22 optimized_like_08_22
group                                        master_08_22                           optimized_like_08_22
-----                                        ------------                           --------------------
like_utf8view scalar complex                 1.01    175.9±6.78ms        ? ?/sec    1.00    173.7±3.55ms        ? ?/sec
like_utf8view scalar contains                1.02    131.7±1.71ms        ? ?/sec    1.00    128.6±2.73ms        ? ?/sec
like_utf8view scalar ends with 13 bytes      1.07     33.1±0.54ms        ? ?/sec    1.00     30.9±0.54ms        ? ?/sec
like_utf8view scalar ends with 4 bytes       1.16     37.1±0.65ms        ? ?/sec    1.00     32.0±0.74ms        ? ?/sec
like_utf8view scalar ends with 6 bytes       1.21     38.4±0.57ms        ? ?/sec    1.00     31.8±1.08ms        ? ?/sec
like_utf8view scalar equals                  1.00     27.2±0.88ms        ? ?/sec    1.01     27.6±1.25ms        ? ?/sec
like_utf8view scalar starts with 13 bytes    1.00     30.7±0.53ms        ? ?/sec    1.00     30.7±0.67ms        ? ?/sec
like_utf8view scalar starts with 4 bytes     1.56     34.5±1.64ms        ? ?/sec    1.00     22.1±0.40ms        ? ?/sec
like_utf8view scalar starts with 6 bytes     1.11     34.9±0.62ms        ? ?/sec    1.00     31.3±0.53ms        ? ?/sec

🚀  -- thanks again for sticking with this @xinlifoobar


Updated dark color palette

Description
Dark color palette updated as per issue assigned.
Checklist

[✅] I am making a proper pull request, not spam.
[✅] I've checked the issue list before deciding what to submit.

Related Issues or Pull Requests
Enhance dark theme color palette #222
Add relevant screenshot or video (if any)

@0b51d14n217 i have updated the dark theme color palette. you can raise pr in hacktoberfest branch, i'll merge it.

@0b51d14n217 i have updated the dark theme color palette. you can raise pr in hacktoberfest branch, i'll merge it.

sure


Not working with express 3.1.0

Hi Sir,
I have followed all installation steps, but not getting api trace.
How can i figure out what is going wrong ?

Our support for express starts at version 4 (https://github.com/GoogleCloudPlatform/cloud-trace-nodejs#what-gets-traced). We do not currently have plans to extend support back to version 3 but we are happy to accept pull requests adding support to our agent for new module versions. We are also working on an API that would allow other modules to provide tracing support for modules/versions that our trace agent does not instrument.

We do not currently intend to extend support for our trace instrumentation back to version 3.x. You are welcome to try out the new plugin api to build your own plugin. If you do try out the plugin api, please let us know if you have any questions/feedback.


Update the game over message

Update the game over message so people know how to play again!

You could add more information about the project


Add support for storage resource

Add support for generic storage blob resource.
Add implementation for gcs as of now, resource declaration
includes bucket location(url), type params to configure credentials for private
bucket.
If storage resource is added as input resource then updated build steps to pull
the blob storage. Params of resources are set as environment variables
for private buckets.
If storage is added as output resource then build step is added to
update the blob to the bucket after execution of build steps.
Add documentation how to use declare resource
Refactor design output resources

Co-authored-by: Maria Ntalla<EMAIL_ADDRESS>Fixes #124
cc @bobcatfish @pivotal-nader-ziada

@pivotal-nader-ziada : I have addressed all your comments. Ready for another round of review.

It should be noted that the implementation for S3 is almost exactly the same except for the image and a very small difference in the command line arguments. Basically the initialize and the two Container Spec functions will be different.
I may follow this PR with an S3 implementation that may move some of the common functions to storage_resource.go.

/test pull-knative-build-pipeline-integration-tests
/test pull-knative-build-pipeline-go-coverage

@vdemeester I have addressed your comments. Let me know 👍

/test pull-knative-build-pipeline-integration-tests

I think we need to add the new image to our release scripts? (or maybe just update this comment if this happens automatically...)

There is nothing to add.

In the case of creds-init and git-init separate base image is used so comment is about building base image for that.
-.ko.yaml declares busybox and google/cloud-sdk:alpine as base image(no custom image to be built) so this should just work (from my understanding)

/test pull-knative-build-pipeline-integration-tests
Helm deploy is flaky. Retesting as new changes was doc related.

@bobcatfish : I have added developer docs. At this point I am dumping my thoughts about inputs/outputs contract. It is obviously not well framed. We can iterate on docs in further PR if you don't mind.

Helm deploy is flaky

/me shakes fist

. At this point I am dumping my thoughts about inputs/outputs contract. It is obviously not well framed. We can iterate on docs in further PR if you don't mind.

That's great!! Thanks so much for getting these started :D :D :D

I added another question about the bash image and another doc request :innocent: :pray: :innocent: thanks for your patience @shashwathi !!


[WIP] Look at moving permissions onto the echo handlers (as middleware)

Now I have come back to this after a while out, I feel like having to define the exact API route of each permission is fragile and not very flexible.
With this change I have played around with moving the permissions (RBAC) onto the echo hanlders instead. While it pollutes the echo handlers a little bit more, its much more flexible since we don't have to manually write out the API endpoint into each permission role.

Codecov Report

Merging #244 into master will increase coverage by 0.10%.
The diff coverage is 92.38%.

@@            Coverage Diff             @@
##           master     #244      +/-   ##
==========================================
+ Coverage   62.82%   62.92%   +0.10%
==========================================
  Files          48       49       +1
  Lines        3844     3871      +27
==========================================
+ Hits         2415     2436      +21
- Misses       1028     1031       +3
- Partials      401      404       +3

Impacted Files
Coverage Δ

handlers/user.go
39.68% <ø> (ø)

handlers/auth.go
82.92% <66.66%> (-5.79%)
:arrow_down:

handlers/rbac.go
74.07% <74.07%> (ø)

handlers/handler.go
90.90% <100.00%> (+0.49%)
:arrow_up:

handlers/permission.go
100.00% <100.00%> (ø)

helper/rolehelper/role.go
100.00% <100.00%> (ø)

workers/scheduler/gaiascheduler/scheduler.go
60.05% <0.00%> (+0.27%)
: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 ec28241...69e98f7. Read the comment docs.

@Skarlso this is actually a great idea. I take it you're thinking similar to an AWS IAM role/policy?
Happy to look into a solution like that.
So, thinking about this... an action could be what we map in the code. This is where we could apply an 'action' check to the echo handlers to make sure a user has the required permission. This would obviously have to be something defined by us.
Its then a user defined policy/role that can include/exclude this actions?

@speza Sounds about right. Keep in mind that Gaia is a long running process, so instead of making a lookup on every request, use a role cache on the name or something like that which we update every 5-10-15 minutes or so with a polling mechanism using the time.Ticker. :)
Yes the actions would have to be defined by us. Correct.

Closing. Working on a better solution :)


XEM support

Hi. Thanks for a great tool. XEM has recently been added to Trezor but as far as I can tell there's no way of extracting XEM private keys from the 24 word Trezor seed.
No other XEM wallets support seeds and there's no way to display a private key on the Trezor so no Trezor, no XEM. Is adding support for XEM a possibility?
Trezor support pointed me to this tool when I asked them, but as far I can tell it can't be done as is. I might be missing something obvious.
Thanks a lot.

The xem community can add their coin by submitting a pull request.


Windows relative symlinks falling back to junction don't work.

If a windows symlink fails (usually because of non-admin terminal), gulp-symlink falls back to using junctions.  However, if trying to create a relative symlink, this will fail for junctions as well (http://ss64.com/nt/mklink.html).
A nicer error message would help diagnose this issue.  Perhaps, if there is a permission issue and relative, report just that: "Relative symlinks require admin privileges."

I can't test on Windows (beyond running CI) so I would appreciate any help on this.

I think I might be running into this issue.
@BSick7 Does this mean if I do this .pipe(symlink('../../.git/hooks/pre-commit', {force: true}));, it will break for Windows?

@jdaudier I can't confirm this, but it appears that symlink creates a relative symlink by default.  This would break on windows if the command is not run in an admin context.

@BSick7 Can you explain what you mean by if the command is not run in an admin context? Noob question, sorry.

@jdaudier By default, a new command prompt is not run under admin rights.  Usually, a user has to right click on command prompt and click Run as Administrator.

Since

This is a gulp plugin and there's basically no justification for ever wanting to run gulp as an administrator
The 'type' argument for fs.symlink is ignored on platforms other than windows
Directory junctions are essentially equivalent to directory symlinks (except in exotic cases like crossing remote filesystems)

…I would recommend that this gulp plugin, in order to be cross-platform, should:

Only support directories, not files
Always specify 'junction' as the type (instead of 'file' or 'directory')

This module has now been deprecated. https://github.com/ben-eb/gulp-symlink#deprecation-notice


[wip] Live stream chat

What
This adds chat functionality to live streams. It's a WIP but I'm going to be on a ✈ for the next two days so it'd be nice to get some 👀 on this!
Apologies
For the size of this. It was meant to be three separate PR's but some design changes along the way and the resultant refactoring just made working on 3 separate branches too complicated so I resolved conflicts and merged back into one.
Things to review

In order to auth chat we hit a KSR api endpoint for a hash which we then pass to the Live api when fetching the LiveStreamEvent. This then adds additional values to the LiveStreamEvent which we use for chat auth to Firebase.

This adds liveAuthToken to the AppEnvironment for persistence between sessions so that it's not necessary to fetch each time.

LiveStreamContainerViewController was refactored to be a container of the LiveStreamViewController positioned at the top, then a LiveStreamContainerPageViewController which contains a tab strip switching between LiveStreamEventDetailsViewController and LiveStreamChatViewController.

Previously this entire view was scrollable but this made interacting with the chat table view difficult so the container view controller is now static with the paged children view controllers being scrollable.

LiveStreamViewController still houses all of the Firebase listeners and thus handles all of the observation of chat messages and writing of messages back to Firebase. I've stuck this behind a protocol LiveStreamChatHandler in anticipation that we may want to move it to the LiveStreamService in order for us to test it with the AppEnvironment. I'll chat through this with @mbrandonw (this could also be a separate PR).
Due to the way in which Firebase initially loads (hundreds of new message events may occur) we buffer these for 500ms and reload the chat table view if an amount of messages above a threshold is received in that time. Alternatively we animate the new messages in. This buffering logic is in LiveStreamViewModel and the reloading in LiveStreamChatViewModel.
I'll add some in-line comments for the rest.

Still needed

Koala tracking (separate PR when I get a list of events for tracking).
VC tests. I temporarily commented out VC tests for LiveStreamContainerViewController to get a ✅ until we can fix them. Having trouble getting the chat input view to layout correctly and also need to create a means to inject the LiveStreamChatHandler for testing.
Provide LiveStreamChatHandler or similar via AppEnvironment.

What does it look like?

Great, thanks for going through all of that, let me make changes!

In testing sign-in I noticed that this output i causing the RootTabBarViewController to reload all of its view controllers when the user session starts. This is a problem for chat because the chat and live stream disappears after sign-in.
Any ideas on how we can handle this?

In testing sign-in I noticed that this output is causing the RootTabBarViewController to reload all of its view controllers when the user session starts. This is a problem for chat because the chat and live stream disappears after sign-in.
Any ideas on how we can handle this?

i'm not sure why that would happen with chat. we do something similar for the pledge flow. the reward screen is a modal presented over the project page and you can login during the flow.
can you think of something different about those two use cases?

i'm not sure why that would happen with chat. we do something similar for the pledge flow. the reward screen is a modal presented over the project page and you can login during the flow.
can you think of something different about those two use cases?

Oh, interesting, let me investigate a bit more


Ui/Ux issue

Description :
when I creating a channel and search for users then dropdown list is not showing full list of users. it's showing when we decrease browser Structure.I have attached some ScreenShots for reference. Same issue in desktop App.
My Setup

Operating System: windows 10
App Version:3.8.0
Installation type: .exe

Current Behavior:

Expected Behavior:

Thanks, @ggazzo


560 support rendering inline images

https://trello.com/c/ZYFBN0ns/560-support-rendering-inline-images
These changes relate to supporting inline images in a way that supports both preview and payload contexts.

@kevindew I think I've addressed all your comments (including the commit typo). With the refactoring, I feel that what we have now is better than pushing all the adapter logic into one class; @kgarwood also commented that they feel the tests are now in a better state, after taking the options approach.
Is there an alternative approach you would have taken?

@kevindew I think I've addressed all your comments (including the commit typo).

Awesome thanks

With the refactoring, I feel that what we have now is better than pushing all the adapter logic into one class; @kgarwood also commented that they feel the tests are now in a better state, after taking the options approach.
Is there an alternative approach you would have taken?

I'm intrigued because we've separated a file that could be understand as a whole into 4 files with inheritance to consider and the justification has entirely been around that it makes the tests better. So I was wondering whether you felt it benefits the code as a whole or just the testing?

@kevindew I agree there's a compromise on the number of files and the inheritance, but I think the new approach also offers a few advantages over the old one:

The GovspeakDocument class is now smaller, bringing us closer to removing the confusion between GovspeakDocument and Govspeak::Document.
The new options classes concentrate on a single context (in-app or payload); having all the code in one class made it harder to concentrate on the context of interest.

Another approach I considered was splitting GovspeakDocument into multiple classes, but this wouldn't allow for sharing the logic to determine the contact options.
Taken together with the reduced duplication in the tests, I'm just about happier with the new approach. I also reckon this will continue to benefit us as we add more options.


HOW TO change colors in the dist_bar

the default color is pink  in the dist_bar ,it not suitable in the commerical report,so how to change the default color?

Here's the palette.
https://github.com/airbnb/superset/blob/master/superset/assets/javascripts/modules/colors.js#L5
You can alter it an make your own build.

these colors seem something about airbnb's culture , the street of the aribnb?

how to make it effect  using new js file?

Indeed those are colors out of the Airbnb palette.
To learn how to make your own build check out the CONTRIBUTING.md in the repo.
I wouldn't be against making this configurable and using d3's category20 by default instead


Added quiet flag (Correct code)

Verified that @sujaygarlanka has signed the CLA. Thanks for the pull request!


logrotate: add design and api for logrotate

Describe what this PR does
api for the csi pods logrotate
Provide some context for the reviewer
Check the API flow
Is there anything that requires special attention
Do you have any questions?
Is the change backward compatible?
Are there concerns around backward compatibility?
Provide any external context for the change, if any.
For example:

Kubernetes links that explain why the change is required
Ceph-CSI spec related changes/catch-up that necessitates this patch
golang related practices that necessitates this change

Related issues
Mention any github issues relevant to this PR. Adding below line
will help to auto close the issue once the PR is merged.
Fixes: #issue_number
Future concerns
List items that are not part of the PR and do not impact it's
functionality, but are work items that can be taken up subsequently.
Checklist:

[ ] Commit Message Formatting: Commit titles and messages follow
guidelines in the developer
guide.
[ ] Reviewed the developer guide on Submitting a Pull
Request
[ ] Pending release
notes
updated with breaking and/or notable changes for the next major release.
[ ] Documentation has been updated, if necessary.
[ ] Unit tests have been added, if necessary.
[ ] Integration tests have been added, if necessary.

[rider@localhost ceph-csi-operator]$ make generate
Downloading<EMAIL_ADDRESS># runtime/cgo
In file included from /usr/include/features.h:489,
                 from /usr/include/bits/libc-header-start.h:33,
                 from /usr/include/stdlib.h:25,
                 from _cgo_export.c:3:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
    7 | # include <gnu/stubs-32.h>
      |           ^~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:180: /home/rider/go/src/github.com/ceph-csi-operator/bin/controller-gen-v0.14.0] Error 1

Not able to build the crds

@parth-gr The way this API change is written assumes log rotation is always enabled if you want to change the log level which I think is a mistake. We need to make a decision:

either we have log rotation always which means we need good defaults
or we separate the rotation params to LogRotationSpec which is an optional field under LogSpec (via a pointer)

@Madhu-1 @nb-ohad good for final round of review, once this has the green flag, I can work on the follow up subtasks(Prs)

@parth-gr I already asked in a prev comment to call the field Rotation and not 'LogRotationbecause we do not need the reputation: Driver.Spec.Log.LogRotation->Driver.Spec.Log.Rotation`
As this one was already merged by @Madhu-1. Please issue another PR for the API fix

@nb-ohad I did updated it before, but with your recent suggestions I did change it back https://github.com/ceph/ceph-csi-operator/pull/37#discussion_r1680998605
I can open a follow PR to address this ;)

You are correct!!!
When I wrote the comment you are pointing to, I was thinking about the field in isolation, not as part of the entire spec. The point I was trying to make was that we need Spec in the struct name, and we call the field itself LogRotation instead of Rothation was just a simple oversight.
My bad. And yes let's have a follow up PR to fix this.


ensure the config.js code gets the right id

Currently it only checks if the ID has length of 35 characters. Other properties within the file may have another ID with exactly the same length and chances is the regexp match will fetch the last occurrence.
It may be necessary to pull a fixed reference to the beginning of the file.

This has hit an issue now where the ID had 34 characters. In theory, the ID can vary from 33 to 35 chars in length.
The way the script currently gets the ID is prone to compromise with other id properties throughout the file, so something should be done to improve it.

Fixed with 31c0994, now using Node JS commandline tool to evaluate the config.js file and ensure it is getting the topmost id property of the object. Assumes config.js will always be a valid, standalone JavaScript file that just defines an object.


feat(Kokoro): run E2E tests for Cloud Run presubmits

This PR aims to help fix flaky nightly Cloud Run tests. Conversation can be found on issue #1989

This test shows that the Cloud Run samples with run E2E tests on presubmit and pass (failures are from other samples). No beta command install errors are seen. The Eventarc directory may need to be added to this logic as well. I am going to now remove the forced change to the helloworld sample.

Fixes #1989
Fixes #1964
Fixes #1956
Fixes #1949
Fixes #1944
Fixes #1934
Fixes #1933

cc @grayside

=== RUN   TestDataproc
    retry.go:44: FAILED after 3 attempts:
        dataproc_test.go:68: createCluster got err: CreateCluster: rpc error: code = AlreadyExists desc = Already exists: Failed to create cluster: Cluster projects/PROJECT/regions/us-central1/clusters/go-dp-test-golang-samples-tests-10
--- FAIL: TestDataproc (236.30s)

@bradmiro

That test is failing consistently and is unrelated to this PR, so I'm going to push this through.


tile-size values over 2048 have no effect

I can get at most around 1200MB of VRAM allocated to the app by using -t 2048
Greater values, like 8192 for example have no effect and neither does increasing load:proc:save
This is with a 8GB Vram GPU and with using 1920x1080 resolution images.

Now I didn't program this and basically have no clue, however, it sounds to me if you enter a tile of 2048(x2048), that tile would cover the entire full HD frame. In other words, running bigger tiles wouldn't help/increase anything as the full frame is already covered by 1 single tile.

Now I didn't program this and basically have no clue, however, it sounds to me if you enter a tile of 2048(x2048), that tile would cover the entire full HD frame. In other words, running bigger tiles wouldn't help/increase anything as the full frame is already covered by 1 single tile.

Mhh. Sure it makes sense. But the reason it got me confused was because
dain-ncnn-vulkan uses much more VRam with a smaller tile-size.

Judging by the model files, cain has one but dain has four models so that's probably why it uses so much more vram

tile support dropped for faster speed
since https://github.com/nihui/cain-ncnn-vulkan/commit/fb9746a9021e81a6f39c131d7d35f4f95c2e644e


When Zooom out fully in PlotXY it shows marker

Describe the bug
Dear swharden,
I am using your Scottplot.Demo.Winform Demo, I noticed below points.
When Zoom out fully in PlotXY, it shows marker
But in Plotsignal full Zoom out there is no marker.
Screenshots
PlotXY Plot
When Zoom in fully, it shows marker

When zoomout fully it is also showing marker

PlotSignal
When Zoomin fully it shows marker

When Zoomout fully there is no marker

Thank you
Regards
GOBI.K

Hey @gobikulandaisamy thanks for reporting this!
I just fixed this (related to #374) and the change will make it into the next release 👍

Dear Swharden,
Thank you very much👍
Regards
GobiKulandaisamy
On Tue, May 19, 2020 at 12:22 AM Scott W Harden<EMAIL_ADDRESS>wrote:

Closed #402 https://github.com/swharden/ScottPlot/issues/402.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/swharden/ScottPlot/issues/402#event-3348671923, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AFYRT5Y5ONMSJEKDRWTKC3TRSF7XXANCNFSM4NEKEFXA
.

--
Thank You,
Regards,
K.Gobi
9600912940
9092357418


Basic question 'bout reactphp

Hi,
Sorry, for this - again - basic question about reactphp
To make my question more clear, I use this DNS lookup example:
<?php
$result = [];
$domains = ['domain1.com', 'domain2.xyz'];

foreach ($domains as $domain) {
    $result[] = dns_get_record($domain);
}

var_dump($result);

Can above example executed in parallel (to make it faster) with reactphp or not (and if yes, how with async? or event-loop? can you give me an additional hint)?
If I understand this stackoverflow post correctly, it can not (but I do not think so).
Thank you again.

That's easy, use react/dns

Hi @WyriHaximus,
I know react/dns ... DNS was just an example ... it is more about a general question: how to execute make functions etc. in parallel with reactphp

Keep in mind that non of these functions can block, you'd still have to use non-blocking I/O functions for anything you do in here, but it comes down to:
$promises = [];
foreach (range(1, 13) as $i) {
    $promises[] = (async(function (int $i) {
        return $i;
    }))($i);
}

var_export(await($promises));

thank you for the example
regarding "non of these functions can block": i do not fully understand because "dns_get_record" (in my example) blocks the next one/ones (because of waiting of the response) - or did you mean your example (then it is clear)

I meant functions like dns_get_record will block the event loop and thus everything else running in it. Which is why I suggested using react/dns. Let me rewrite your initial code with it, maybe that's clearer:
<?php
$result = [];
$domains = ['domain1.com', 'domain2.xyz'];

foreach ($domains as $domain) {
    $result[] = (async(function (string $domain) {
        return await($dns->resolve(domain));
    }))(domain);
}

var_dump(await($result));

That could be done simpler like this:
<?php
$result = [];
$domains = ['domain1.com', 'domain2.xyz'];

foreach ($domains as $domain) {
    $result[] = $dns->resolve(domain);
}

var_dump(await($result));

Thank you again @WyriHaximus
That means the stackoverflow-post is correct? So reactphp is not forking processes to make it faster in general?

ok maybe i should check react/dns how it is done there to make it possible for all functions?

We provide react/child-process to do such things, and I have a package or two allowing you to use child processes to run functions outside the current process. But that is not performant compared to staying in the current process alternatives that hook directly into the event loop.
The whole goal of reactphp is doing these things non-blocking at such a speed it looks like they are run in parallel.

As @WyriHaximus pointed out, you can execute all blocking functions in a separate child process to avoid blocking the main process. For instance, you can use https://github.com/clue/reactphp-pq to execute the dns_get_record() function like this:
$executor = new Clue\React\Pq\Executor();
$dns_get_record = $executor->fun('dns_get_record');

$dns_get_record($domain)->then(function ($result) {
    var_dump($result);
}, function (Exception $e) {
    echo 'Error: ' . $e->getMessage() . PHP_EOL;
});

That said, I agree that this should usually be used as a last resort only as execution in child processes incurs some noticeable overhead (YMMV). For many common APIs, ReactPHP provides async alternatives that are implemented in pure PHP (see https://github.com/reactphp/reactphp/wiki/Users). For DNS queries, this would be the DNS component as suggested above.
I believe this has been answered, so I'm closing this for now. Please come back with more details if this problem persists and we can always reopen this :+1:


'scroll' is computed in a weird place

Problem:	'scroll' is computed in a weird place.
Solution:	Compute 'scroll' when window size is set.
Although it doesn't actually solve an issue here, I see no reason to call win_comp_scroll() at the end of scroll_to_fraction() rather than when actually setting the size in win_new_height(). This change happens to fix an issue occurring for neovim floating windows: https://github.com/neovim/neovim/pull/20685.

Of course it's possible I'm just missing the reason why it was in scroll_to_fraction() in the first place. If so, I would like to know, then I'll look for another solution to https://github.com/neovim/neovim/issues/20684.

Of course it's possible I'm just missing the reason why it was in
scroll_to_fraction() in the first place. If so, I would like to
know, then I'll look for another solution to
https://github.com/neovim/neovim/issues/20684.

It must have been there for a long time.  So long as it was the only
function being called after moving around it was probably OK, but after
the split to win_fix_scroll() it was doubled.
The value only depends on w_height, and you moved it to the only place
where w_height is changed, looks like that is OK.  Perhaps it makes the
verbose info about where it was set more accurate.
--
So when I saw the post to comp.editors, I rushed over to the FTP site to
grab it.  So I yank apart the tarball, light x candles, where x= the
vim version multiplied by the md5sum of the source divided by the MAC of
my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights,
wave a dead chicken over the hard drive, and summon the power of GNU GCC
with the magic words "make config ; make!".
[Jason Spence, compiling Vim 5.0]
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///