Clarify samples count between -e cpu and -e itimer

Hi,
thanks for this awesome profiler!
I cannot found any info on the doc re how to interpret samples count while using -e cpu and -e itimer. I wouldn't like it to became a blog about how sampling profilers (should) work, but I admit that writing 2 lines of doc there could help to understand the difference in samples count a user can expect depending on the context.
We can start a discussion here and I can send a PR to add it, if is welcome :+1:
thanks,
Franz

Hi Franz,
Thank you for your interest in async-profiler and its internals.
Both cpu and itimer mode measure the CPU time spent by the running threads. For example, if an application uses 2 cpu cores, each with 30% utilization, and the sampling interval is 10ms, then the profiler will collect about 2 * 0.3 * 100 = 60 samples per second.
In other words, 1 profiling sample means that one CPU was actively running for N nanoseconds, where N is the profiling interval.

itimer mode is based on setitimer(ITIMER_PROF) syscall, which [ideally] generates a signal every given interval of the CPU time consumed by the process.
cpu mode relies on PMU-based sampling capabilities (like Intel PEBS or AMD IBS). The idea is the same - to generate a signal every N nanoseconds of CPU time, which in this case is achieved by configuring PMU to generate an interrupt every K CPU cyles.

So, in ideal world, both itimer and cpu should collect the same number of samples. Typically the profiles indeed look very similar.
In some cases cpu profile appears a bit more accurate though, since the signal is delivered exactly to the thread that overflowed a hardware counter.

Thanks @apangin!
I've written a simple experiment to understand this:
public class SamplingExperiment {

    public static void main(String[] args) {
        final long targetNanos = TimeUnit.MILLISECONDS.toNanos(10);
        while (true) {
            spinWork(targetNanos);
            //I can measure latency of spinWork and use to sleep too
            sleep(targetNanos);
        }
    }

    private static void sleep(long nanos) {
        long remaining = nanos;
        while (remaining > 0) {
            final long start = System.nanoTime();
            LockSupport.parkNanos(remaining);
            final long elapsed = System.nanoTime() - start;
            remaining = nanos - elapsed;
        }
    }

    private static void spinWork(long nanos) {
        final long start = System.nanoTime();
        while (System.nanoTime() - start <= nanos) {

        }
    }
}

And I'm getting the same number of samples for itimer and cpu ie 493-494 that's expected, given that this should use 50% of a single core.
Obviously this code can work only for not too small targetNanos, but will try on a bigger machine to see hot it behaves there too.

Hi guys, it's a very interesting topic. If I understand correctly.
CPU mode: Every CPU calculates Process Time spent on CPU of all running threads and if the interval is reached then SIGPROF is propagated by the currently running thread to the process's signal-handler where hands over a stacktrace (PERF_SAMPLE_CALLCHAIN) with KERNEL and USER frames and call AGCT to match USER frames with Java/Native/JVM frames. Am I correct?
Does mean that all threads open perf_event_open into a single group?
    if (args._ring == RING_USER) {         attr.exclude_kernel = 1; } else if (args._ring == RING_KERNEL) {         attr.exclude_user = 1; } else if (!Symbols::haveKernelSymbols()) {         Profiler::_instance.updateSymbols(true);         attr.exclude_kernel = Symbols::haveKernelSymbols() ? 0 : 1; }
Does this mean that if I am not allowed to register receiving KERNEL stacks (because of paranoid, cap_sys_admin) I will receive at least USER frames to match it inside SIGPROF handler after 10ms on a single CPU (depending on an interval). However, busy-client from this example should still be discovered (https://github.com/apangin/codeone2019-java-profiling), Am I right?
Thanks a lot and great job in terms of AsyncProfiler! :)

hi @petrbouda
If I run the profiler with itimerI get

While with cpu

The amount of sample is a bit different too (for 5 seconds of profiling time):

itimer: 801 samples
cpu: 1787 samples

I hope that answer your question

I did absolutely the same test. However, the difference is significant I think. It's why I would like to understand CPU mode more, to figure it out how it works not only in this case but to be able to reason about it in general.

I believe the CPU mode is just relying on AGCT to check who is on stack and that means that we don't have kernel info if the native method is doing something for real or not..Not sure, I should check the code there @apangin knows it for sure

I think that SIGPROF signal determines who is currently on CPU (the guy who delivers the signal to the registered handler inside the process) and AGCT is just a tool to get a java stacktrace for the given thread (without a need to be at a safepoint) and then match the java stacktrace with USER part of stacktrace delivered by the thread.
This is what how I got understood when I was looking at AsyncProfiler's source-code, but I'm a very weak C-code reader :)

@petrbouda
Yep, but AGCT  doesn't have any mean to tell what's the native code (on top of the perceived stack) is doing or real, if consuming real cpu time or not

Discovered myself (through https://github.com/jvm-profiling-tools/async-profiler/discussions/466#discussioncomment-1394187) on Linux man pages:
ITIMER_PROF
              This timer counts down against the total (i.e., both user
              and system) CPU time consumed by the process.  (The
              measurement includes CPU time consumed by all threads in
              the process.)  At each expiration, a SIGPROF signal is
              generated.

the part re by the process is key ie its not "per-thread" as perf does.
But sthil the match isn't clear to me yet, indeed on https://github.com/jvm-profiling-tools/async-profiler/issues/272#issuecomment-725218272:
801 samples of itimer on 5 seconds of profiling at 100hz -> means max total 500 samples, now is possible is getting more then it?
@petrbouda if you have understood how itimer samples works

It looks that using setitimer can suffer from some biasing and the current existing tests accept a 20% variance in samples (!!): see https://github.com/google/gvisor/blob/master/test/syscalls/linux/itimer.cc#L240
I'll go deeper to understand what it means

See an old comment by @felixge on https://groups.google.com/g/golang-dev/c/LCJyvL90xv8

That being said, it's easy to get confused about this. E.g. if you have two CPU intense threads, and a single setitimer(ITIMER_PROF, ...), you'll see signals arrive at twice the rate of the configured interval. That's because you end up utilizing 2s of CPU time for every 1s of wall clock time.

It's stating that I can get more then the expected number of samples based on the number of active (on cpu) threads in the process, but I cannot see evidence on kernel code about it yet

Discovered myself (through #466 (reply in thread)) on Linux man pages:
ITIMER_PROF
              This timer counts down against the total (i.e., both user
              and system) CPU time consumed by the process.  (The
              measurement includes CPU time consumed by all threads in
              the process.)  At each expiration, a SIGPROF signal is
              generated.

the part re by the process is key ie its not "per-thread" as perf does.
But sthil the match isn't clear to me yet, indeed on #272 (comment): 801 samples of itimer on 5 seconds of profiling at 100hz -> means max total 500 samples, how is possible is getting more then it?
@petrbouda if you have understood how itimer samples works

I have no idea :) ... currently, I use AsyncProfiler inside Openshift. I always need to upload it to the container, execute and download the result. Unfortunately, our infra guys don't want to touch perf_event variables
sysctl kernel.perf_event_paranoid
sysctl kernel.kptr_restrict

It would be a security incident, they said :) ... At least, I can enjoy Java frames and after the long fight JVM's frames as well, I enforced  JDK with symbols inside containers :)

I've solved it @petrbouda
try compile this
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <pthread.h>
#include <sys/time.h>

	static void myHandler(int iSig)
	{
		printf("In myHandler with argument %d\n", iSig);
	}

	void* foo(void* p){
  		// Print value received as argument:
  		for (;;) {

		}
	}

int main(void)
{
	struct itimerval sTimer;
	signal(SIGPROF, myHandler);
	sTimer.it_value.tv_sec = 1; /* Send first signal in 1 second */
	sTimer.it_value.tv_usec = 0; /* and 0 microseconds. */
	sTimer.it_interval.tv_sec = 1; /* Send subsequent signals in 1 sec */
	sTimer.it_interval.tv_usec = 0; /* and 0 microsecond intervals. */
	setitimer(ITIMER_PROF, &sTimer, NULL);
	printf("Entering an infinite loop\n");
	pthread_t id;

  	int j = 1;
  	pthread_create(&id, NULL, foo, &j);
  	for (;;) {

	}
	return 0; /* Never get here. */
}

with
$ gcc -Wall testtimer.c -lrt -o testtimer

You will see that the SIGPROF handler is running twice as the "expected" rate (by me, and wrongly assumed now, I see).
It means that it's being fired according to the cpu time used by the whole process: here I'm fully using 2 threads (in busy loop)
so the CPU time spent is happening at twice the speed as by having a single thread doing it.
This is going to solve my problem with the number of samples mentioned on https://github.com/jvm-profiling-tools/async-profiler/issues/272#issuecomment-1092777444 but probably we're getting less then the one using perf because we're not considering cpu time spent only on kernel stack(s) - but it shouldn't be like that TBH, given that doc state
              This timer counts down against the total (i.e., both user
              and system) CPU time consumed by the process.

both user and system -> maybe it's async-profiler, given that it doesn't collect kernel stack traces it's missing to report samples that SIGPROF has correctly fired?
@apangin knows

@franz1981 you summoned me, so here are my two cents :)
If I skimmed this thread correctly, one issue is that setitimer sometimes delivers less samples than the perf events based cpu mode?
If yes, we observed the same issue in Go. It was fixed in 1.18 by using timer_create on Linux. See this article for details: https://felixge.de/2022/02/11/profiling-improvements-in-go-1.18/
Hope that helps?

Wow @felixge yes yes and yes. It knows totally makes sense ☺ many thanks and sorry for the ping!


CDB_Overviews(reloid REGCLASS) fails for org users

=> SELECT cartodb.CDB_DropOverviews('rtorre.yellow_tripdata_2015_pickups'::regclass);
ERROR:  relation "_vovw_19_yellow_tripdata_2015_pickups" does not exist
CONTEXT:  SQL function "cdb_overviews" statement 1
PL/pgSQL function cdb_dropoverviews(regclass) line 5 at FOR over SELECT rows

=> \dt rtorre.*yellow*                                                                                List of relations
 Schema |                 Name                  | Type  |                       Owner
--------+---------------------------------------+-------+---------------------------------------------------
 rtorre | _vovw_0_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_10_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_11_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_12_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_13_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_14_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_15_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_16_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_17_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_18_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_19_yellow_tripdata_2015_pickups | table | cartodb_user_uuid-lalala
 rtorre | _vovw_1_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_2_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_3_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_4_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_5_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_6_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_7_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_8_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | _vovw_9_yellow_tripdata_2015_pickups  | table | cartodb_user_uuid-lalala
 rtorre | yellow_tripdata_2015_pickups          | table | cartodb_user_uuid-lalala
(21 rows)

=> show search_path;                                                                                search_path
------------------------------------
 "$user", public, cartodb, topology
(1 row)

Actually this is the problem:
=> select * from cdb_overviews('rtorre.yellow_tripdata_2015_pickups'::regclass);
ERROR:  relation "_vovw_19_yellow_tripdata_2015_pickups" does not exist
CONTEXT:  SQL function "cdb_overviews" statement 1

known problem: https://github.com/CartoDB/cartodb-postgresql/blob/aff7ae3e2e155de00958a8bbc7b95203ba9ffb8e/scripts-available/CDB_Overviews.sql#L103

the problem is the cdb_usertables::regclass AS overview_table sub-expression in the select

I wouldn't use CDB_UserTables cause the implementation looks faulty to me: https://github.com/CartoDB/cartodb-postgresql/blob/aff7ae3e2e155de00958a8bbc7b95203ba9ffb8e/scripts-available/CDB_UserTables.sql
(getting just the name of the table (with no schema) and casting to an infamous name type, which is a tricky one).
See http://www.postgresql.org/docs/current/static/datatype-character.html

Apart from the questionable use of CDB_UserTables, the problem can be fixed with:
CREATE OR REPLACE FUNCTION CDBX_Overviews(reloid REGCLASS)
RETURNS TABLE(base_table REGCLASS, z integer, overview_table REGCLASS)
AS $$
  DECLARE
    schema_name TEXT;
    table_name TEXT;
  BEGIN
    SELECT * FROM cartodb._cdb_split_table_name(reloid) INTO schema_name, table_name;
    RETURN QUERY SELECT
      reloid AS base_table,
      cartodb._CDB_OverviewTableZ(cdb_usertables) AS z,
      (schema_name||'.'||cdb_usertables)::regclass AS overview_table
      FROM cartodb.CDB_UserTables()
      WHERE cartodb._CDB_IsOverviewTableOf((SELECT relname FROM pg_class WHERE oid=reloid), cdb_usertables)
      ORDER BY z;
  END
$$ LANGUAGE PLPGSQL;

the shortest line to reproduce the problem as it's happening:
SELECT '_vovw_19_yellow_tripdata_2015_pickups'::name::regclass AS overview_table;

buuut, the trick is that from other places the search path is set to something like this (e.g: when querying from the sql api:
search_path: "rtorre, cartodb, cdb_dataservices_client, public"

and actually the query does not fail from the sql api, but it returns no rows.

I'm reopening this because CDB_Overviews can still fail for organization users under some circumstances:

Several organisation members have a table with the same name and it has overviews
Not all the tables have the same overview levels
We execute CDB_Overviews with postgres user (i.e. with privileges to access the tables from the various users)

In that case CDB_overviews will fail for some of the users's tables (when trying to cast to regclass the name of an overview table that the owner of the table doen't have).
To solve this the use of CDB_UserTables should be replaced.
The problem is not urgent, as the mentioned conditions are not met under the normal use of CDB_Overviews from the tiler or the editor.

Solved in #224, Version 0.15.1 of the extension includes the fix.


openzipkin.github.io displays the default page

I somehow ended up on http://openzipkin.github.io/ and found it to be the default page. Maybe we should redirect it to http://twitter.github.io/zipkin/ or delete it entirely

interesting. agreed.
though http://openzipkin.github.io/zipkin/ or better zipkin.io


Update Readme to reflect final code

@bernokl: Updated the plugins configmap in namespace default at cluster default using the following files:

key plugins.yaml using file plugins.yaml

In response to this:

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.


Video stream not working after changing Tello IP Address

I connected my Tello with my own WiFi connection and changed the Tello's IP Address everywhere inside the codes.
After running the tello_driver_node.py through the tello_node.launch, the code successfully connects to the Tello but the video stream gives an error.
Tello: 16:37:38.797:  Info: start video (cmd=0x25 seq=0x01e4)
Tello: 16:37:39.799: Error: video recv: timeout
Tello: 16:37:39.800:  Info: start video (cmd=0x25 seq=0x01e4)
Tello: 16:37:40.803: Error: video recv: timeout
Tello: 16:37:40.803:  Info: start video (cmd=0x25 seq=0x01e4)
Tello: 16:37:41.807: Error: video recv: timeout
Tello: 16:37:41.807:  Info: start video (cmd=0x25 seq=0x01e4)
How to solve this?

Hi, are you using a virtual machine? I ran into the same issue some time ago when I used a VM with Ubuntu 18.04 on it and ROS Melodic. When I switched to Ubuntu 20.04 with ROS Noetic (without using a VM) I could fix this. If this is not your case, pls read through the Issues here on github. It seems that many people have problems with that. You also could try a firmware update via tello App. Hope it helped.

Yes I am using a VM, but this problem occurs only when I connect my Tello to my home WiFi.
Otherwise, using Tello's own WiFI, I am able to get the video stream.
Is it the case that we cannot get the Tello's stream when we connect it to any other WiFi?
If not, if I switch to Ubuntu without a VM and connect my Tello to my home WiFi, will I be able to get the video stream?

okay, I saw that these  guys also had problems with the connection when using a VM. Read the article from "Archictecture". They were overcoming this issue by using a USB wireless antenna before they switched to native Linux machines. So, you also could try that.

So summarizing the discussion, you are suggesting that I try using a USB wireless antenna to connect my laptop to my home WiFi, and also connect my Tello to my Home Wifi, and then the video stream should work, right?

Just give it a try. And if it works, pls post your solution here because it may help other people.

I didn't try this.
For what I wanted to do, I kept using Tello's WiFi for the video stream and found workaround for the other tasks.
Thanks anyways.

okay. no problem, you're welcome


API frontend link

Call the backend API with axios.
For now we should use a plugin for the web browser to disable cross origin block.
TODO
Use axios in /api to create API calls and store the response in models (stored in /models).

https://github.com/dhost-project/dhost/pull/165#pullrequestreview-763035583


Error creating connection to peer address

When I run "docker-compose -f four-peer-ca.yaml up"
In logs I can see

Error handling message: Peer FSM failed while handling message (DISC_HELLO)

vp0_1         | 12:52:00.429 [peer] chatWithPeer -> ERRO 6e3 Error creating connection to peer address <IP_ADDRESS>:7051: grpc: timed out when dialing
vp2_1         | 2017/03/04 12:52:00 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp <IP_ADDRESS>:7051: getsockopt: connection refused"; Reconnecting to {"<IP_ADDRESS>:7051" }
vp3_1         | 2017/03/04 12:52:00 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp <IP_ADDRESS>:7051: getsockopt: connection refused"; Reconnecting to {"<IP_ADDRESS>:7051" }
vp3_1         | 2017/03/04 12:52:01 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp <IP_ADDRESS>:7051: getsockopt: no route to host"; Reconnecting to {"<IP_ADDRESS>:7051" }
vp3_1         | 12:52:01.126 [peer] chatWithPeer -> ERRO 73b Error creating connection to peer address <IP_ADDRESS>:7051: grpc: timed out when dialing
vp3_1         | 2017/03/04 12:52:01 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp <IP_ADDRESS>:7051: getsockopt: connection refused"; Reconnecting to {"<IP_ADDRESS>:7051" }
vp3_1         | 12:52:01.127 [peer] chatWithPeer -> ERRO 73c Error creating connection to peer address <IP_ADDRESS>:7051: grpc: timed out when dialing
vp2_1         | 12:52:01.301 [peer] chatWithPeer -> ERRO 6e7 Error creating connection to peer address <IP_ADDRESS>:7051: grpc: timed out when dialing

what OS are you running?

Ubuntu 16.04

Same error, The containers were running perfectly yesterday. Today its throwing this error without me changing any images or committing. Something similar is happening with hyperledger-fabric images.
I'm also running Ubuntu 16.04.

Same error....Is there any way to fix it?

This project is no longer under development. please look at https://ibm-blockchain.github.io for new fabric deployment instructions.


add latex version

In the latex folder, there is a beamer theme to create cheatsheet in latex.
The Base-r cheatsheet is given in the base-r folder.

Thank you very much @mpelleau! This must have been a lot of work.


Google drive links down when using cloudsen12.load()

Hello,
I am trying to download partially the dataset using cloudsen12.load() based on the example here:
https://colab.research.google.com/github/cloudsen12/examples/blob/master/example01.ipynb#scrollTo=IOFCyi_4EE0y
However, it seems that the google drive links are down (error 404). This can be checked by clicking any google drive link in the example.

I'm having the same issue. Did you manage to solve it?

If ended up downloading .dat files from huggingface:
https://huggingface.co/csaybar/cloudSEN12v1.1/tree/main
Be aware that there is now a newer version of cloudsen12, which includes the older with corrected labels
https://cloudsen12.github.io/
https://huggingface.co/datasets/isp-uv-es/CloudSEN12Plus


[Task]: RegExp community call preparation (May)

Description
$subject
https://github.com/wso2-enterprise/marketing-ballerina/issues/137
Describe your task(s)
No response
Related area
-> Compilation
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response

Please find the suggesting agenda for the RegExp community call
1. Overview of Ballerina's new regular expression support
2. Demo
3. Future Developments
4. Q&A


Question: How to post date in ISO format

Hi guys, how are you ?
I really liked this datepicker, it has been a hard work trying to find something good for angular..
But, It does not fullfill my needs.. I'd like to work with a specific locale (pt-BR) and to format date like this "dd/MM/yyyy" but when I try to use model value it is formatted and not in ISO format, so I'm facing problem posting data to the server..
Any Ideas ?

You could take advantage of both the locale and format settings included. Something like this:
<moment-picker="foo"
format="LLLL"
locale="pt-br">
or if you want it to display UTC dates
<moment-picker="foo"
format="moment.ISO_8601"
locale="pt-br">

Hi, tks but maybe I didn't make myself clear..
I have no problem "formatting" or "localing", they are working fine..
My problem here is to use model value when posting because at this moment I need a ISO format date so server can't understand..
I have used in another project the 'parsers' and 'formatters' inside directive so, model has a 'model value' and a different 'view value'.. I thought it could be the same here, when I choose a date, I have a Javascript date object which I can send to the server, but for presentation purposes, the "format" attribute takes place..
Do you guys know if that is possible whith this datepicker ?

I'm not quite sure what your use case is, but I'm actually in a similar scenario. I have dates coming to me from the server in UTC, which I then need to display in the picker and send back to the server in UTC. I do something like this:

and your controller would have something like:
$scope.sendDate(newDate, oldDate){     var isoDate = fooMoment.toISOString()    $http.post(...) }
What this does is keeps an up to date moment object in fooMoment. The format property is in essence the "viewValue" format and the moment is the "modelValue". Of course you don't have to send the date every time it changes, that was just an example. All you need to do is reference fooMoment and you will have the moment object.
This doesn't however solve the problem of parsing ISO dates you get. For that you'll probably want to update fooMoment manually, this example is with a watch, but it could be in the get function:
$scope.$watch('response', function(newVal){ fooMoment =  moment(newVal)}
I hope this helps!

Hi @gsonego, what @ChrisGarber-Medlever said is correct!
You can handle with Moment.js object dates in the way you want just by adding ng-model aside with moment-picker. This will allow use both formatted date string and Moment.js object date. So, in your case you can simply parse the date from ISO to Moment when initializing the Controller and format back to ISO string when submitting the form.
Let's say you have an app that shows a calendar with a list of Events.
app.controller('MyController', ['eventService', function (eventService) {
    var ctrl = this;

    // format used in the view
    ctrl.dateFormat = 'DD/MM/YYYY';

    // init event
    eventService.getEvents().then(function (events) {
        // get just first event
        ctrl.event = events[0];
        ctrl.event.momentDate = moment(ctrl.event.date, moment.ISO_8601, 'en');
    });

    // listen date changes (sync moment date with string date)
    ctrl.onDateUpdate = function () {
        ctrl.event.date = ctrl.event.date = ctrl.event.momentDate.format(ctrl.dateFormat);
    };

    // submit updated event
    ctrl.onSubmit = function () {
        eventService.updateEvent(ctrl.event.id, ctrl.event.name, ctrl.event.date);
    };
}]);

<div ng-controller="MyController as ctrl">
   <!-- ... -->
   <input moment-picker
          ng-model="ctrl.event.date"
          ng-model-options="{ updateOn: 'blur' }"
          format="ctrl.dateDormat">
</div>

Hope this helps, feel free to reopen this thread for any issue. :)


Switch to GH Actions for build and deploy?

Currently the MEI website is build through gh-pages which is enabled by the gh-pages gem in our Gemfile. However, this has the disadvantage that we can only use gems that are whitelisted and are limited to the fixed versions supported by GitHub.
Another possibility for building jekyll sites is through GH Actions, as described on the official jekyll site. Switching to GH Actions would allow to rely on the newest version of jekyll available as well as to include basically any gem we might want. This workflow is also quite common, as there are e.g. various GH Actions already available on GitHub marketplace. This might also solve the discussion/problem around the Gemfile.lock in the context of building the site locally, see #93.
I'm not entirely sure if this approach would be feasible for MEI and if reusing an existing GH Action would be the best approach here. Maybe our GH Actions master @musicEnfanthen does have some advice?

Thank you @doerners for the proposal and pointers. I think that is something that could be seriously taken into consideration, as it would allow, for instance, inclusion of jekyll-scholar for bibliographic references (which is not white-listed with the standard gh-pages approach).
In any case, we should fully understand all the consequences first before implementing such a step. E.g., what security reasons are meant, when the official jekyll site says
When building a Jekyll site with GitHub Pages, the standard flow is restricted for security reasons and to make it simpler to get a site setup.
(and how are these security issues addressed (or not) in the GH Actions workflows). Also, it would be good to have a test-repo that allows to test the build process from all perspectives.
If you don't mind, I propose to collect some further opinions for the discussion both here and at the next ODD meeting this week.

Since building through gh-pages currently works and switching to GH Actions would be one more layer to maintain, I would not change to it unless there is clear need for it. Local issues with the Gemfile.lock does not sounds like one in my opinion. Just my 2 cents...

Thank you both @musicEnfanthen and @lpugin for your comments/insights. To me it sounds like a brilliant idea to discuss this during the next ODD meeting.

Thanks for bringing this up! As I'm not aware of the possibilities this would bring us for our website, e.g. by using other gems, could you illustrate some usecase, please?

So one advantage I see is that we could use the current jekyll version which is 4.2.2 while with the current approach the jekyll version is fixed at 3.9.0. Although I'm not sure how necessary it really is to always be up to date with the version, there have been some bug fixes and enhancements introduced with the newer versions as you can see from the changelog, so it might be worth considering.
Currently our bibliography on the website is build with BibBase. To my knowledge there is still no support for different citation styles implemented (this applies to the rendering of the references as well). When dealing with BibBase a while back I had trouble with formatting the BibTeX file, because BibBase behaved differently than I expected and the documentation seemed insufficient to me. Thankfully @musicEnfanthen could fix the mess I made, but it might be worth discussing if switching to another bibliography tool might be an advantage. For jekyll there is this tool called jekyll-scholar which at least supports different CSL styles. We could use this if we decide that it offers the best functionalities, but only if we don't rely on gh-pages.
Furthermore I think it might be a good idea to discuss if we want to offer search capabilities for the whole website to our users. From a usability perspective I think this might really be something to consider. There are some gems out there that are tailored to jekyll like jekyll-lunr-js-search. However, all of those gems I found are not supported by gh-pages.
I think these are the three main points I would think of from the top of my head.

The website content is pretty basic. Which enhancements do you have in mind?
Using plugins can be quite useful, I agree. Having a website search would be useful too. However, on that topic I would suggest to have the guidelines search working again first. This seems to be of a much higher priority.

tbh I didn't have any enhancements in mind. I just wanted to illustrate that the changelog lists enhancements and bug fixes that have been introduced with newer versions of jekyll but I haven't really checked them out. However, switching to a newer version of jekyll might be necessary if we decide to use other gems. (not sure if this is what you meant)

Thanks @doerners for this great proposal. I don't think it would add a new layer to maintain – on the contrary. If everything is set up, we'll have definitive versions of the used gems pinned in the lock file, so we're independent of the quite unpredictable update behavior GitHub shows on their side. Here the lock file actually makes sense. And if there are some security issues in the gems, dependabot will most likely jump in and save the day.
But I agree with @lpugin that the current situation with the search has highest priority.

Since @musicEnfanthen and @doerners kindly asked to leave this note...
As I mentioned in the ODD meeting, I was able to switch in a GH-Pages deployed website from the gh-pages gem to a vanilla Jekyll gemfile and the site is still deployed via standard GH pages: see here.
I tried that after receiving a dependabot vulnerability for cmark-gfm. The fixed version of the gem wasn't available with gh-pages gem.

To not forget about this issue I want to point to this recent update: https://github.blog/changelog/2022-07-27-github-pages-custom-github-actions-workflows-beta/

As mentioned in #93, there are reasons for sticking with the Gemfile.lock.


ci: Require version bump if SDK breaking change

Description:

This PR adds a CI check to make sure that any breaking changes on the SDK level require a minor bump (add ! to the PR title)
Is this change user facing?
NO

References (if applicable):

Closing this; will re-open if needed!


Fix handling of Debian files with trailing slash

Fixes #26022

Fix handling of files with trailing slash
Fix handling of duplicate package file errors
Added test for both

I moved the slash testing into the /modules/packages/debian unit test.


Turn the final product into an interactive CLI

This but more like an interactive dashboard where you can monitor your account, check performance, see and override scheduled trades, input more money, retrain the model, export graphs, and other cool shit.

this is gonna be lit. I'm really excited to do this.

Right?? And there isn't anything like this out there.. closest thing I could find is this.

https://github.com/graylog-labs/cli-dashboard
https://github.com/FormidableLabs/webpack-dashboard
https://github.com/yaronn/blessed-contrib
https://medium.com/@teddylun/bitcoin-dashboard-on-cli-dbd7b34910e6
https://github.com/m110/grafcli
Glances is written in Python

The dashboard should showcase the following data:

Performance statistics: total amt. of capital, returns (%), net profit ($), sharpe ratio, total buys, buy accuracy (%), total sells, sell accuracy (%), total trades
Technical indicators: name, value, associated buy/sell signal
Fundamental indicators: name, value
Twitter data: sentiment score (aggregate), tweet volume
Coindesk data: headlines, sentiment scores
Scheduled trade: countdown, type (buy/sell), size ($)
Line graph of current exchange rate

And should have the following functionality:

Cancel/edit a scheduled trade
Place your own trade
Deposit or withdraw money from your GDAX account
Export a graph of the ML strategy vs. a buy-and-hold strategy

@alichtman I'll let you figure out how all of this is going to be displayed, just let me know what data you need from me, how you want it formatted, and how you want it delivered :)


Name collision

This package uses the same name as the inbuilt punycode package in node.js.
While this might work with the default loader (haven't tried), it can cause an annoyance for package builders (some seem to ignore it as a build in).
Any chance of being able to alias it?

Currently I am facing the same issue. Although I have installed the package through npm i punycode, but eslint continues to tells me that 'punycode' module was deprecated since v7.
And I have found this: https://www.npmjs.com/package/punycode.js . punycode.js is exactly the same as punycode which could avoid the case.

Unfortunately npm i --save-dev @types/punycode.js fails so there is no way to get proper typing with punycode.js

https://www.npmjs.com/package/punycode

Note that userland modules don't hide core modules. For example, require('punycode') still imports the deprecated core module even if you executed npm install punycode. Use require('punycode/') to import userland modules rather than core modules.
const punycode = require('punycode/');


Add compatibility with zeitwerk

Same fix as this one https://github.com/schneems/derailed_benchmarks/commit/88b33a0c9cdecc4b77c27d9f52aec39b5025a695
H/t to @engwan
I'm honestly not 100% the full chain of events that cause this. Some other history is:

https://github.com/schneems/derailed_benchmarks/issues/128

@engwan do you know of a way I could make this fail in a similar way without Rails so I could add a test?

Hmm.. I'm not really sure why it's causing the private method error.
I don't understand how require / load would affect Kernel#warn 🤔

Hmm.. I'm not really sure why it's causing the private method error.
I don't understand how require / load would affect Kernel#warn 🤔


Make client-side pagination a true recommendation

I heard from k yesterday that they thought pagination via offset/limit was slow and were looking for recommendations on what to do for large result sets.
I spoke with @jordanlewis and he recommended:
"Doing “client-side pagination” by retrieving a set of records with a limit, and then checking the index key of the last row, using that as an index constraint, and then running the query again
this is normal - not specific to cockroach"
Our current docs: https://www.cockroachlabs.com/docs/stable/selection-queries.html#limiting-row-count-and-pagination actually suggest the wrong solution for pagination.
The reason is that "offset doesn’t know anything smart - it has to get the same data as before, just skips the first n. You have to participate as a client by remembering the index key of the last result set you saw."
We should also reference that some databases offer a feature called cursors to do this. @andy-kimball mentioned that "cursors are generally not a great architecture as well b/c they force server to keep state. client side is way to go for pagination. server pagination just doesn't scale well"
Jordan also mentioned that "you run into trouble with a scale out system like cockroach - if your load balancer moves you to a different server for example the cursor will be lost"
Andy also mentioned that "sql server has cursors, and we spent a lot of time recommending customers not use them"
This way we can make it clear that client-side is the way to go and its not just because we don't have cursors.

I sent the recommendations to kai from kindred and he replied:

What devs usually do (I think) is to use what Spring Data JPA or Spring Data JDBC provides. It has a simple pagination API which does basic limit/offset traversal by default, but you can create own custom queries.```

Let's make sure to recommend the right course of action here.

Thanks Andy for collating things together. After reading this I concur with Jordan and Andy K's opinions. We could implement cursors technically but the PK values + LIMIT (and thus not OFFSET) are a better solution. This needs to be combined with AS OF SYSTEM TIME for reliable pagination.
I think the product is ready for clients to do effective pagination, however I also think it's not actually trivial for clients to achieve so we need ample guidance in docs. This will be an interesting / worthy doc project.

With "client-side" pagination I assume you actually mean keyset pagination?
Since you also closed #1067, without catching important bits from it, it should be noted that with cockroachdb currently only quite ineffecient keyset pagination can be done (assuming utilizing UUIDs which pretty much everyone does today.) Should there be something new in cockroachdb I missed, please let me know.
However what could be a valuable feature for cockroach would be to have AFTER and BEFORE keyword which could be used instead of offset. Cockroachdb could optimize this way better, by using the index on the column and start retrieving records after that, than this very nasty subquery solution.

@wzrdtales, I don't understand what you mean. If you have a table with UUID primary key, which is I think what you're talking about, you should be able to select all of the rows that come after a given row with a > constraint. UUIDs still have order, after all. Are you having problems with that?

@jordanlewis Nope, they are ordered, but not, well ordered in the order they're created.

That's true that UUIDs aren't well-ordered in their creation order, but IMO that's entirely separate from the discussion we're having here, which is about the recommendation we give to users for how to paginate a table by the order of its primary key.

well pagination is about a predictable outcome of pagination. Which is basically the issue of LIMIT and OFFSET. they're not quite predictable. However > with UUID is less predictable than LIMIT, OFFSET, since LIMIT, OFFSET at least have an order in that case.

Actually also adding to this, especially this is unpredictable since new records can appear after and before the record you're comparing against without any deterministic outcome. So yeah may be still a different discussion, but just adding this here since you closed the other issue.

Thomas with CockroachDB you can use AS OF SYSTEM TIME to make the scrolling deterministic. I am still confident there is a way to obtain what you desire.
Sent from my Android device with K-9 Mail. Please excuse my brevity.

@knz I guess you meant me with Thomas? In that case: AS OF SYSTEM TIME was also discussed in the closed issue. It is not appropriate since this is a snapshot of reality and not the reality itself. Changes just disappear and new things do not appear. As said above the best solution would be something like AFTER and BEFORE keywords that could be easier translated by cockroachdb itself. Doing search over outdated data is almost at no time an option though.

So the best option is still doing this https://github.com/cockroachdb/docs/issues/1067#issuecomment-377714164, but with questionable performance. Which is sad, b/c mostly keyset pagination tends to be faster than others, but not quite in this case.

This isn't going to get done for 19.1. Moving to 19.2.

As another datapoint, a customer recently linked the existing pagination recommendation that we'd prefer people not follow.
In addition, the existing pagination docs provide this query:
SELECT id, name
FROM accounts
LIMIT 5
OFFSET 5;

But the set of records this query returns is actually somewhat undefined, since there's no ORDER BY.

Just to leave a suggestion here again. The best case for a pagination implementation provided by cockroachdb, that would create true value for your users would be:
SELECT * FROM table WHERE "somethingDate" >= NOW() ORDER BY "createdAt" DESC LIMIT ${amount} AFTER KEY id = ${item}

There is a lot of potential to optimize this query on the db side (requiring an index on the sorting column, in this case createdAt and the actual search column, in this case id) and totally avoid any temp tables to be build up and totally avoid the need for a row number.
Currently the most efficient (but still worst) way you can do this is (it is optimized by passing in the known date from the before pagination to reduce the size of the subquery):
SELECT * FROM table
        ORDER BY "createdAt" DESC LIMIT ${amount} OFFSET (
          SELECT rn FROM (
            SELECT id, row_number() OVER (ORDER BY "createdAt" DESC) AS rn
            FROM table WHERE "createdAt" >= ${date} AND "somethingDate" >= NOW()
            ORDER BY "createdAt" DESC
          ) WHERE id = ${item}
        );

I really would love this to become reality and I haven't seen this being done by any database yet though. Which makes me wonder why actually, b/c keyset pagination is really a standard way of paginating through search results, if you want it to be with a reasonable UX and live data instead of snapshotting.

This came up again from another customer. https://cockroachlabs.slack.com/archives/CFR37CA4A/p1571798249033800.
@jordanlewis or @knz i assume the recommendations outlined in this doc still hold true. If so, I will work with docs to fast track this work.

Talked it over with Jordan and we continue to stand by this recommendation.

Also, it seems like this has come up a few times with Hibernate/Spring so we should make sure to mention that in this documentation.

mhm unfortunate, I thought something would move forward in this issue, but I guess keyset pagination just will stay slow forever :/

@wzrdtales, I'm sorry this hasn't gotten done yet, but it's not risen above a lot of other docs work we've being doing for 19.2. I do hope we'll get to it soon.
@awoods187, it'd be great if you could coordinate with @ericharmeling and @rmloveland.

@ericharmeling, @rmloveland, another pagination-related issue from a user, this time on our new community slack:

Hi all, nice to be here. Just a shoutout and a TIL (actually yesterday) - Ordering by timestamp and LIMIT/OFFSET may trip you up! There's probably good information about this somewhere, but we spent all day yesterday trying to find out why pagination was missing entries - inconsistently on different machines.

Just to leave a suggestion here again. The best case for a pagination implementation provided by cockroachdb, that would create true value for your users would be:
SELECT * FROM table WHERE "somethingDate" >= NOW() ORDER BY "createdAt" DESC LIMIT ${amount} AFTER KEY id = ${item}

This suggestion from @wzrdtales would be an extremely welcome addition.

Huh I don't understand why can't this be written as
WHERE "somethingDate" >= NOW()
  AND id > ${item}

which is arguably simpler?

@knz I don't mind explaining it again :)
Your query does not work with cockroachdbs official recommendations of using UUIDs.  Your suggestion would violate the recommendation since you would ask to use serialized integer increments (all already discussed before https://github.com/cockroachdb/docs/issues/3743#issuecomment-422548965). The suggested function eliminates this, by stating instead:
Hey, in that sorted key createdAt, please return me everything after the key xyz. The >= NOW() would be just an optimization in doubt to have a smaller dataset to scan (even in the indexed case).

@wzrdtales What about:
SELECT * FROM table
  WHERE ((created_at, id) > (${time}, ${id}))
  ORDER BY (created_at, id)
  LIMIT ${amount}

This should result in the correct page as Tuples are ordered Lexicographically, and we only care about the UUID order if the TimeStamps are equal.
The After syntax is then syntactic sugar for WHERE ${order_tuple} {comparison} ${cursor tuple}, with comparison being either < or > based on whether the ordering is ASC or DESC

Sry, I am getting a bit tired to answer the same answer all the time... . So I will skip the explanation this time, it doesn't change the outcome.

@wzrdtales, I've read your comments, and am still unclear on exactly what you're looking for. Are you trying to build a "feed", where you are guaranteed to always see the newest values, in the order they were committed?
Also, can you give a specific example where @brendan-hall's suggestion does not work? It would be very helpful to see a concrete set of values that would fail, as it would help me to understand exactly what you're looking to do.

@brendan-hall @andy-kimball
I see two problems.
Outcome of the query
SELECT * FROM table
  WHERE ((created_at, id) > (${time}, ${id}))
  ORDER BY (created_at, id)
  LIMIT ${amount}

is deterministic because of ordering. But it's not useful, if the id isn't monotonic. The UUID isn't monotonic. Imagine situation (already ordered):
Time  | UUID
10:00 | 10
10:01 | 60
10:02 | 20
10:03 | 15

If you start with no page and $amount = 2, then you page item is (10:01, 60). So, next page would be:
SELECT * FROM table
  WHERE ((created_at, id) > (10:01, 60))
  ORDER BY (created_at, id)
  LIMIT 2

But you get nothing, because id of third and fourth items is less than 60.
Second problem with the query is, when you have situation like this:
Time  | UUID
10:00 | 10
10:01 | 50
10:01 | 60
10:02 | 20
10:03 | 15

With the page size of two you see (10:01, 50), but never (10:01, 60).

Thank you @Bessonov I am glad not to argue alone into an emtpy room...

@Bessonov
Except that that's not how < on Tuples works.
Your claim is that (a, b) < (x, y) is implemented as (a < x) AND (b < y)
Instead (In pseudo code), it works like so
switch (compare(a.time, b.time)) {
  LT -> LT
  GT -> GT
  EQ -> compare(a.id, b.id)
}

Assuming tuples of (time, id)

Select First Page
WITH t(time,id) as (VALUES (10.00, 10), (10.01, 60), (10.02, 20), (10.03, 15))
SELECT * FROM t
  ORDER BY (time, id)
  LIMIT 2

time
id

10.00
10

10.01
60

Select Second Page (after (10.01, 60))
WITH t(time,id) as (VALUES (10.00, 10), (10.01, 60), (10.02, 20), (10.03, 15))
SELECT * FROM t
  WHERE (time, id) > (10.01, 60)
  ORDER BY (time, id)
  LIMIT 2

time
id

10.02
20

10.03
15

Select Second Page with both (10.01, 50) and (10.01, 60) (after (10.01, 50))
WITH t(time,id) as (VALUES (10.00, 10), (10.01, 60), (10.01, 50), (10.02, 20), (10.03, 15))
SELECT * FROM t
  WHERE (time, id) > (10.01, 50)
  ORDER BY (time, id)
  LIMIT 2

time
id

10.01
60

10.02
20

R.E. usefulness, my argument is that if your created_at timestamps are equal, then you no longer care, nor have the ability to care, about the order the rows were inserted. So what does it matter that uuid's aren't monotonic?
I'm just including ids to make sure that the sort order doesn't change in 5 minutes because a chunk of the underlying data got reversed.
If you absolutely need to know the order a row was inserted, then you're going to have to either implement your own higher resolution timestamps, or fall back on auto-incrementing ids or row_number()

Another related thing to understand is that timestamps aren't guaranteed to be in strict commit order. The now() function is evaluated at the beginning of a transaction. Imagine you have two concurrent transactions both running this query:
INSERT INTO (id, time) VALUES (gen_random_uuid(), now())

It's possible that transaction B commits first:

id
time

id2
10.02

and a split second later transaction A commits:

id
time

id1
10.01

Therefore, if you're trying to use timestamps to implement a "feed", this behavior will cause you to miss items. This is not specific to CRDB. Every database I know of would behave this way for current time and auto-incrementing ids as well. Auto-incrementing ids also would not follow strict commit order in the case of concurrent transactions.

Assuming that concurrently committed transactions are not a concern for your particular application, here is another trick I've used in the past to further simplify pagination:
CREATE TABLE t (created_at TIMESTAMPTZ PRIMARY KEY);
INSERT INTO t (created_at) VALUES (now());

I put a retry loop around the INSERT statement to retry cases where concurrent transactions insert the same timestamp (because they're inserted in the same microsecond). Having a guarantee of no duplicates allow this simplified pagination pattern:
SELECT * FROM t
  WHERE created_at > ${time}
  ORDER BY created_at
  LIMIT ${amount}

One big caveat: using timestamp columns indexed by the current time creates "hot spots" in your database, because all INSERT transactions will write to the same machine repeatedly (i.e. whatever machine contains the page containing the highest timestamp value). This can have the effect of preventing scale-out of your database beyond a single machine if you try to do this with a high-volume INSERT transaction that is a bottleneck in your application. There are techniques to address this problem, such as using hybrid hash/range partitioning, but it does tend to get complex. We'll be adding support to upcoming versions of CRDB to make this easier.

Hey all--we have a pr in process to address the concerns here https://github.com/cockroachdb/docs/pull/6114. Let us know if you think it is missing something important!

bit late as a comment, but @awoods187 this didn't touch the topic at all. This is about the problems generated by UUIDs concerning pagination, which this docs didn't touch at all and didn't presented a solution to the user. Even the tuples mentioned here, which also don't solve it completely, were not mentioned there.
I by the time now went for critical tables on a different route. The database is not trusted anymore as a source of truth for such assets, since the implementation just lacks at too many corners. I implemented a logic that spans across services for each domain that needs absolute time critical sorting. Everything else, less important will in doubt go by the timestamp and loose precision.

Sorry to hear that the recommendations didn't meet your needs, @wzrdtales. Are you aware of any other database that solves this problem in a way that meets your needs? Do you have any links to blogs, doc pages, or other resources showing what you want and how some other system solves it in a way that works for you?
The only examples I've seen were outlined by @Bessonov above, and @brendan-hall pointed out why those actually work fine. I have yet to see examples of cases where @brendan-hall's method doesn't "solve it completely", except in cases where the paging is racing with newly committed values, as I explained above.
Separately, we can look into adding documentation that describes the best keyset pagination pattern to use for current timestamp columns (like created_at type columns). I agree that the docs don't seem to cover that.


How can we find swift 2.3 version?

I need this library in Swift 2.3 & below version Or Objective-C version? Please help to me get it...

I think it could be used in swift projects. I don't really have time to write a swift version of this. sorry.


static pages content is not postable please fix and add video button on editor please

static pages content is not postable please fix and add video button on editor please

I can not understand the issue or new request. Please elaborate.


Sample websites and API documents cannot be inserted, 404

Sample websites and API documents cannot be inserted, 404

API, examples are temporarily unavailable. It's "under construction".

API, examples are temporarily unavailable. It's "under construction".

Okay, thank you. I'll just look at the source code example

@Tingfenghhh glad to see you at openglobus. We are currently trying to improve our site and the process of uploading it. As a stopgap measure, I have made the documentation available on the github pages. Are you setting face property in the label instance?

I can now display my custom font, but it seems that it cannot be rendered correctly. The recommended msdf bmfont xml used does not seem to convert the font correctly

Please describe in more detail how you generate the atlas. describe the commands and attach a font if possible. Is this iransans this rtl font correct?

Please describe in more detail how you generate the atlas. describe the commands and attach a font if possible. Is this iransans this rtl font correct?

Thank you for your help. We can now render the normal font, but the basic character set of Chinese characters is over 3500, which cannot be fully rendered onto a single image. We can only render a small amount of our own custom text haha

Hey @Tingfenghhh you can enlarge the font atlas image size to 4096 is the maximal texture size for WebGL. Check ./fonts/run.cmd, there is a few parameters you could play with...I see 1024 is the size of texture, and 32 is the character size, so say you have 3050 characters, the matrix size sqrt(3050) = 56. 1024 / 56 = 18, too small I guess, 33 * 56 = 1848 - the size of the atlas you need. Try to set 2048x2048:) Cheers! Don't forget to fill charset.txt with, it could be a nice test for texture atlas! Cheers!

Thank you for replying to my question. I have tried to change the size of the image, but the msdf bmfont xml tool converted Chinese characters and rendered them garbled. Then I tried this online conversion tool, msdf bmfont web, which can render the font I want normally (● '◡' ●). Happy

Let's close the issue, btw we are going to fix documentation in terms of new homepage task.


Postinstall script fails on windows

The current postinstall script
npx install-peerdeps @wfcd/eslint-config@latest -S
in package.json fails on windows with the error
err spawn einval
It can be bypassed by installing with scripts disabled and then manually installing the es-lint config. I believe it's something to do with this security patch, but I couldn't figure out how to pass the parameter.

yes, it's caused by https://github.com/nathanhleung/install-peerdeps/issues/125
given that our CI is on not-Windows, and this doesn't fail in WSL, i'd recommend using WSL (generally i recommend using it over barebacking windows anyway)


Update documentation for chainer.backends.cuda

This PR depends on #3974.
Update documentation to follow the change chainer.cuda -> chainer.backends.cuda.
(I separated this PR because it should not be backported, whereas #3974 could be.)

Rebased and added a note about the rename.

LGTM except for comments.

@niboshi Could you remove the upgrade guide part from this PR? LGTM otherwise!

Changes to upgrade guide removed.

Conflict resolved.

Conflict resolved.

Jenkins, test this please.

LGTM!


having error

**Why this error ??### ### ******

Did you import aamarpay?

yesterday i cant even import the package..  today i import successfully but a new problem arrived...

problem solved .. thank u


Update Go versions and vendor using Godep (and fix the build)

Vendor latest versions of dependencies using Godep.
Update supported Go versions and move to the native "context" package
Regenerates the language using the latest version of peg
Don't check licenses in vendor/
Workaround to fix a Cassandra startup bug in Travis CI

All of this to get the build to pass...

@drcapulet I guess we could import the peg library somewhere (maybe in parser.go?), otherwise I don't think it'll work with Godep.

Godep will only vendor imported packages, not commands. I wouldn't want to roll something on our own here just to get a stable copy of peg. Checking in generated source code will work well enough.
That Travis CI build issue you mentioned is from 2015. How has this project not run into this problem before?

Looking at previous builds, it looks like Cassandra has always failed to start up, but the tests still passed somehow. Maybe something in the newer versions of Go causes the tests to fail.


experiment: run NpeFix in fully automated manner for X patches

idea: run in fully automated manner for X patches, only with NpeFix (x=1, 5 10 in the beginning)
prerequisites:

[x] https://github.com/Spirals-Team/npefix/issues/10
[x] add support for automated pull request #30
[ ] write template of pull request title and body; see #704

in the autonomous mode, we need an option "stop after N submitted pull-request".
in the first trials, we will have N=1

Ongoing PR is https://github.com/Spirals-Team/npefix/pull/15

We need to change npeifx and then small stuff in maven-repair.

Per our conversation today
Four main milestones:

send email
create pull request
integration with the scanner
automatic stop after first pull-request

Example:
# exits after the first pull-request
# the rest of the configuration is either in shell script or as environment variable
./repairnator-autonomous.sh --max-pull-requests 1

# for testing, we can focus on a single repo
./repairnator-autonomous.sh --max-pull-requests 1 --repo https://github.com/btellstrom/failingProject

# next with a repo list
./repairnator-autonomous.sh --max-pull-requests 1 --repo-list repo-list.txt

# finally with the RTScanner
./repairnator-autonomous.sh --max-pull-requests 1 --repo-mode RtScanner


sparse input

does this work with sparse input as well?
thank you very much!

Hi David, it only works for sparse kernel, but not input, since the purpose for this program is for deep learning pruning. Sorry about that..

I understand. However, since the convolution operator is commutative (up to a mirroring), I could swap kernel and input.
Thus the kernel becomes the input becomes the kernel.
do you think that having a kernel that changes at every image kills the speed improvements?
in other words, do you have a kernel processing step that is computationally heavy? (and thus not convenient if done at every image)
thank you very much!

Gotcha! As I mentioned in the TODO list, for now, the conversion of dense to sparse tensor is inside the operation, which means that for each time of calling the operation, it needs to process the conversion every time. Therefore, it is the same as the case you mentioned that processing kernel at every image and it wouldn't kill the current performance. However, the speed also depends on the size of input, since I only implemented multi-threading for convolution along the width, height, channel of the input tensor, but not kernel channels. So if the input size is small comparing with kernel, the operation will be slow (even slower than the build-in operation, since their convolution program is more robust to this situation :P).

That's why in the last plot figure the improvement is mediocre when the input size is less than 128.

if I have an input of 300x300 and a kernel of 3x3 and I invert, I have an input of 3x3 and a kernel of 300x300. However, the input needs to be heavily padded, to more than 600x600, so you will still have a big input. do you think that the performance would still be good?
I would have tried by myself, but I'm not able to compile your code with Tensorflow 1.4

That's a really good question! I just tested the case you mentioned, the result of sparse convolution is 5272ms while the build-in one is 379ms. However, the time for the actual convolution computing from the sparse one is only 89ms and the rest of time (5183ms) is for dense to sparse conversion. Therefore, in this case, the sparse operation is still faster, but the overall performance is not good.
Regarding the issue of TF1.4, according to the issue, it seems TF1.4 has some problem for op customization with GPU. I'll compile 1.4 later to see if there is a solution for this. By the way, could you please tell me the error when you compile the code?

my idea is to work directly on sparse input/kernel, so I don't actually need a dense to sparse conversion.
there are several issues with TF1.4, first it doesn't find cuda.h, but I fixed that and I have other issues.

Yea, this implementation assumes the input sparse tensor is in dense format; I'll separate the conversion and convolution parts later, but for now, it seems this program is not suitable in your case. Sorry about that.

no problem, thank you very much for the help!


Problem with collapsed menu bar when page is 980px wide

There is a problem with the operation of the collapsed menu bar when the page width is exactly 980px wide. Clicking on the 'btn-navbar' will expand the menu but clicking again causes the menu to close then open immediately.
This seems to be caused by a problem in 'responsive.less' where there are conflicting definitions for 'max-width: 980px;' and 'min-width: 980px'
I have tested a solution by changing the 'max-width' to 979px, so that <980px uses the collapsed menu and >=980px uses the normal menu bar.
Before I submit a pull request the question is - is the policy that 980px wide displays use the collapsed menu form or the standard form?

Resolved the media query issue in 2.0.1-wip.
At present, 980px and below collapses the navbar as most folks go to town on what they can place in there :).


Documentation for Stream

What should eoi be in Stream::from_iter?

eoi should be an 'End Of Input' span, i.e: a span that might be used when there are no items left in the stream. It's required for things like map_with_span to work properly for parsers that consume no input, among other things.
As in example, the default implementation for &str just uses str.len()..str.len() (i.e: a zero-width span starting and ending at the end of the string).


After ducking, volume doesn't return to normal

When I'm playing OCP audio through VLC and I interrupt with a request, the audio ducks down (I think you said to 30%). However, it does not come back up. Not sure why, and it's not clear which volume setting to adjust.


Add utility functions for reading project/collection files and casting to a Project/Collection type

Done here https://github.com/hypercerts-org/oss-directory/pull/4


TextEmbedding crashes when both Mean Pooling and compile opts is specified

If the output pool is set to :mean_pooling and batch_size/sequence_length are specified, the dimensions for the mean pooling don't match, as can be seen from the example below. I've tested on the HEAD of the main branch today and it still crashes.
Mix.install(
  [
    {:kino, "~> 0.12.0"},
    {:nx, "~> 0.5"},
    {:bumblebee, "~> 0.4.2"},
    {:exla, "~> 0.6.4"}
  ],
  config: [
    nx: [default_backend: EXLA.Backend]
  ]
)

model_repository = {:hf, "sentence-transformers/all-MiniLM-L6-v2"}
{:ok, model_info} = Bumblebee.load_model(model_repository)
{:ok, tokenizer} = Bumblebee.load_tokenizer(model_repository)

serving =
  Bumblebee.Text.text_embedding(model_info, tokenizer,
    output_pool: :mean_pooling,
    compile: [batch_size: 16, sequence_length: 128]
  )

Nx.Serving.run(serving, "Cats are cute.")

Result:
** (ArgumentError) cannot broadcast tensor of dimensions {16, 384} to {16, 128, 1}
    (nx 0.6.4) lib/nx/shape.ex:345: Nx.Shape.binary_broadcast/4
    (nx 0.6.4) lib/nx.ex:5500: Nx.devectorized_element_wise_bin_op/4
    (bumblebee 0.4.2) lib/bumblebee/text/text_embedding.ex:56: anonymous fn/6 in Bumblebee.Text.TextEmbedding.text_embedding/3
    (nx 0.6.4) lib/nx/defn/compiler.ex:158: Nx.Defn.Compiler.runtime_fun/3
    (nx 0.6.4) lib/nx/defn/evaluator.ex:83: Nx.Defn.Evaluator.precompile/3
    (nx 0.6.4) lib/nx/defn/evaluator.ex:61: Nx.Defn.Evaluator.__compile__/4
    (nx 0.6.4) lib/nx/defn.ex:305: Nx.Defn.compile/3
    /Users/.../Library/Application Support/livebook/autosaved/2023_12_13/20_48_6ddh/untitled_notebook.livemd#cell:csdm2pjr6ugsry4ylprjvwh36kkq6vlj:10: (file)

The model outputs several tensors, and by default the serving pick :pooled_state, which is already pooled (in a different way). I improved the error in b374fa6a0761df98397df723ae517fa64d96b043.
So in this case what you want is output_attribute: :hidden_state and output_pool: :mean_pooling :)

Nice, thank you!


KeyError: 'locale' in _extract.py

Describe the bug
After logging in and downloading attempts to start, the program crashes on a 'locale' key error.
To Reproduce
Steps to reproduce the behavior:

udemy course url: https://www.udemy.com/course/deep-learning-tensorflow-2/'
python .\udemy-dl.py https://www.udemy.com/course/deep-learning-tensorflow-2/
I tried both with and without the trailing slash.
See error

`  File ".\udemy-dl.py", line 1441, in
main()
File ".\udemy-dl.py", line 1280, in main
udemy.course_download(path=options.output, quality=options.quality, unsafe=options.unsafe)
File ".\udemy-dl.py", line 436, in course_download
course = udemy.course(url=self.url, username=self.username, password=self.password, cookies=self.cookies)
File "G:\CourseDownloads\Udemy\udemy_udemy.py", line 38, in course
return Udemy(url, username, password, cookies, basic, callback)
File "G:\CourseDownloads\Udemy\udemy_internal.py", line 44, in init
super(InternUdemyCourse, self).init(*args, **kwargs)
File "G:\CourseDownloads\Udemy\udemy_shared.py", line 62, in init
self._fetch_course()
File "G:\CourseDownloads\Udemy\udemy_internal.py", line 56, in _fetch_course
self._info              =       self._real_extract(self._url)
File "G:\CourseDownloads\Udemy\udemy_extract.py", line 493, in _real_extract
'subtitles' : self._extract_subtitles(tracks),
File "G:\CourseDownloads\Udemy\udemy_extract.py", line 277, in extract_subtitles
lang = track.get('language') or track.get('srclang') or track.get('label') or track['locale'].get('locale').split('')[0]
KeyError: 'locale'`

@illuzioner you should update to recent repo


Vehicular identification & recognition

Is your feature request related to a problem? Please describe.
It is unrelated to a specific problem, I just would like to get more information provided in the triggers, to expand possible reactions to events.
Describe the solution you'd like
I'm looking to have additional information being supplied in the triggers, like, make & model of the vehicle, or being able to recognize if it's an emergency services vehicle, or delivery truck (UPS/FedEx/Purolator/DHL/etc...)
Describe alternatives you've considered
I haven't actually looked at other alternatives, as I wasn't able to find anything else that does this, I just felt that this project might be a good foundation to try and build upon to the featureset of the AI here
Additional context
Feature Request, it's not broken, but we can still fix it, right?

Unfortunately the only info available is what Deepstack provides. You can see what they have available at https://nodejs.deepstack.cc/object-detection, scroll down to "Classes". It's just general object classes and nothing more.
This project just interfaces with Deepstack and doesn't do any AI processing of its own.


GitHub Status API description to be set to in progress or found n issues

Include the happy gopher \ʕ◔ϖ◔ʔ/ when three's 0 issues that I originally saw at
https://www.reddit.com/r/golang/comments/28igp8/go_13_is_out_ʕϖʔ/

Coverage decreased (-0.2%) to 58.518% when pulling 156ba013af800e00b6c83dc1c384f73e1d125f7f on msgs into 06f90a05ab4ac9ca2c55b2b726752e9646169b13 on master.


error when trying to merge embeddings

When I try to merge 2 embeddings I get this error (on ubuntu wsl on windows 11):
Traceback (most recent call last):
File "merge_embeddings.py", line 56, in
manager = EmbeddingManager()
File "/home/user/textual_inversion/ldm/modules/embedding_manager.py", line 59, in init
get_embedding_for_tkn = partial(get_embedding_for_clip_token, embedder.transformer.text_model.embeddings)
File "/home/user/anaconda3/envs/ldm/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1177, in getattr
raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'BERTTokenizer' object has no attribute 'transformer'

Are you working with the stable diffusion code or with the LDM code? The embedding merger has not been updated for the (still unofficial!) Stable Diffusion code. I'll probably get to it over the weekend.

Ok thanks, I was using stable diffusion, other than that it works very well

I got this same error running merge_embeddings.py trying to merge two pt files produced by Textual Inversion, running on Amazon Linux 2. Same error in Windows 11.

For now wit this coed you can use multiple embeddings without merge : https://github.com/AUTOMATIC1111/stable-diffusion-webui

This should now be working. To merge SD checkpoints just add the -sd flag to the merge command. Feel free to re-open if you have more issues.


Barrett's visualise tab doesnt show drag and drop variables

On the esquisse drag and drop graph there should be variables visible that can be dragged on to the graph. I cant see these

Also the variables are not visible for the customisable table on the bottom right of the tab


Express: Link to source on github.

Link to the latest commit on github at the bottom of the page on the express server. #148

How about we embed this git information in an html comment, not in a visible link?
It might take some experimenting to figure out what kind of links are and aren't clickable in show-source. I was waiting to pull this until I had some time to match it in sinatra. But I see there is another commit I don't want to hold up.

I probably should have done that git stuff in a branch, I'll take a look for an easy way for the developers to get to a link but not users later today.

I took a look at this and didn't see any consistently good way to do it.  What is a clickable link depends both on which browser you're using and how you are looking at the source  You can even click on a console.log('url as a string') in chrome which is pretty slick, but no such luck in firebug.


Add Conesnsus Exchange Types, and Move into NodeImplementation

Will close: https://github.com/EspressoSystems/HotShot/issues/927

Double-checking a minor thing: I noticed that there were many error! to info! changes. Were they intentional? Or maybe changed for the convenience of debugging but supposed to be changed back?

Apparently the new version of rust causes a new lint error which I couldn't see locally.  Updated rustc locally and fixed it, but now I need another review :(


fix(userspace/libscap): scap_log macro

What type of PR is this?
/kind bug
Any specific area of the project related to this PR?

/area libscap

Does this PR require a change in the driver versions?
What this PR does / why we need it:
Even if nobody is using scap_log for now, I happened to use it with some local changes and I noticed it was wrong.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
NONE

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: deepskyblue86
Once this PR has been reviewed and has the lgtm label, please assign gnosek for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, deepskyblue86
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: c4374238624388f11af14cf002d0cbbd6919512f

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, deepskyblue86, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Added church modes and note constants

Just added the rest of the diatonic scale modes, as well as constructors for scales. Also added associated constants for all the natural notes like Note::C because I think the ergonomics of always typing Note::from(Natural::C) leave something to be desired. I changed many of the functions to be const since I needed at least new() to be const to make the constants, and for the rest there wasn't much reason not to. From can't be const at the moment unfortunately, but I figured this was a fine start.
After implementing the constants, I also had the idea of making functions flatten() and sharpen() that take a &self and then return a changed version like so: Note::C.sharpen(). This could even work for notes that already have accidentals. My original thought was to change flat() and sharp() but that would both be a breaking change and not entirely clear what would happen when used multiple times. I thought that was a bit out of the scope of a pretty routine PR, but I'd be happy to implement those as well.

Sorry this took me so long to get back to, this looks great!
flatten and sharpen seem like great additions. I do wonder if we could impl the ops traits instead though, to enable Note::C + Interval::HALF_STEP for more flexibility but I'd be happy to accept either for now


Release v0.5.7 missing build assets?

The most recent release, 0.5.7, appears to be missing binary assets.
Compare 0.5.7 which only contains a zip and tar file, with 0.5.6 which contains builds for linux / darwin amd64 / arm64.

vs

We noticed this because the CircleCI aws-eks orb attempts to download the binary asset for the most recent release. See their documentation.
Apologies if this is a planned change in the build/release process, in which case just close this issue and we'll figure out how to fix it in our build.

Closing as a dupe of #449


Doesn't download descriptions of images

Sometimes half of the information in the image is the description like stories. The description should be downloaded.

Downloading descriptions was added a while ago (see image), is there a specific submission that this doesn't work on?

so wait it was supposed to be added to the image metadata?

I see the issue. I totally missed the fact I needed to install eyed3 and exiftool.
Since I run Arch Linux the packages I needed were.
pacman -S python-eyed3 perl-image-exiftool

I'm sorry for the confusion, seems to work now.

Actually it's missing a lot of my gallery when I try to get description
https://furaffinity.net/gallery/shapeshifter499

./furaffinity-dl -c ../../cookies.txt -o ../../ShapeShifter499 gallery/ShapeShifter499

Ok it does work but some metadata GUI viewers don't show it.
exiftool  works


Error downloading org.scalameta:semanticdb-scalac_2.12.19:4.8.3

steps
set build.properties sbt version to 1.10.0-RC1
problem
Start sbt from project directory; error in issue title happens.
expectation
Latest version of semanticdb-scalac (4.9.3) is downloaded.
notes
I blew away all top level bloop, bsp, metals directories, as well as releated config files in project directory. Additonally I cleaned out applicable files to in ~/.sbt/1.0/ to rule out global config pulling in the apparently non-existent 4.8.3 version of semanticdb-scalac.
1.10.0-M1 didn't have this issue. Perhaps I jumped the gun and related deps to 1.10.0-RC1 need to catch up??

After clearing out project/project and project/target for each subproject in the application, sbt session started successfully.
That's a lot of house cleaning to workaround the issue, someone new to Scala wouldn't even know where to begin :)

For what it's worth Scala 2.12.19 seems to have semanticdb support for a bunch of versions - https://repo1.maven.org/maven2/org/scalameta/semanticdb-scalac-core_2.12.19/. It's possible that sbt's invalidation logic is somehow buggy, or it could even be one of the plugins (I don't think hand-rolled cache logic would remember to put Scala version into the input key)? We will keep an eye out for similar reports.


Update templates for ServiceDiscovery API changes

#3211
Microsoft Reviewers: Open in CodeFlow

/backport to release/8.0-preview5


BUG: Improve Newsletter Title Visibility in Dark Mode

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Under the dark background, the dark grey "Newsletter" text is not very legible. The low contrast makes it difficult to read. I suggest changing the text to lighter shades to improve readability.

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Under the dark background, the dark grey "Newsletter" text is not very legible. The low contrast makes it difficult to read. I suggest changing the text to lighter shades to improve readability.

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

assigned!


[NSE-955] implement lower function

What changes were proposed in this pull request?
This patch implement lower.
How was this patch tested?
unit tests

Jenkins UT passed.

Please add the below code to indicate whole stage code is not supported by now.
  override def supportColumnarCodegen(args: java.lang.Object): Boolean = {
    false
  }

Jenkins UT & TPC-DS passed. +1.


Add: Make Ganache Startup Timeout Configurable.

Motivation
Ganache-CLI takes longer than the default startup time in Ether-rs Ganache when forking chains, causing a panic.
/// How long we will wait for ganache to indicate that it is ready.
const GANACHE_STARTUP_TIMEOUT_MILLIS: u64 = 10_000;

...

if start + Duration::from_millis(GANACHE_STARTUP_TIMEOUT_MILLIS) <= Instant::now() {
                panic!("Timed out waiting for ganache to start. Is ganache-cli installed?")
}

Solution:
Make startup_timeout_millis configurable.

PR Checklist
[x] Added Tests
[x] Added Documentation
[ ] Updated the changelog

I think it is getting timed out little too early for me.


Class self scope error

class User {

	static func = User

}

console.log(User.func) // undefined

Its error
Example, a  use ORM and i cant declarate database structure types
class User extends Model {

	static schema = {
		name: String,
		age: String,
		friends: [User], // User is undefined
	}

	// this code will be located in constructor
	name = User.createRandomName() // i cant call this

}

This is the same issue as https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy/issues/17 so closing as a dup, but happy to try to have more of a discussion.


validate for column/table names not being reserved keywords

FWIW, there's a lot of StackOverflow/GitHub issues about people who used one of many SQL's reserved keywords in their ORMs:
https://stackoverflow.com/questions/20798240/doctrine2-sqlstate42000-syntax-error-or-access-violation-1064
https://stackoverflow.com/questions/35154203/sqlstate42000-syntax-error-or-access-violation-1064-symfony-2-7-3-applicatio
https://stackoverflow.com/questions/23446377/syntax-error-due-to-using-a-reserved-word-as-a-table-or-column-name-in-mysql
https://stackoverflow.com/questions/19147073/why-sqlstate42000-syntax-error-or-access-violation
https://stackoverflow.com/questions/14437031/syntax-error-on-a-doctrine-query-symfony2
https://github.com/doctrine/common/issues/165
https://github.com/doctrine/doctrine2/issues/3281
https://github.com/nextcloud/server/issues/3140
etc. etc.
The list of SQL's reserved words https://www.drupal.org/docs/develop/coding-standards/list-of-sql-reserved-words is quite extensive, and some are extremely obscure. I've already hit three of those by accident in two days. The simplest solution IMO would be for Doctrine to actually make column/table names that are colliding with SQL's RW's simply fail validation. doctrine:schema:validate, "column name can't be an SQL reserved keyword; either change or quote with backticks" reported, et voila, instead of the ugly and cryptic "SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax".

The idea for 3.x is to break BC with case sensitivity issues and always
quote identifiers, so the issue would disappear when that's implemented.
On 5 Dec 2017 05:58, "FyiurAmron"<EMAIL_ADDRESS>wrote:

FWIW, there's a lot of StackOverflow/GitHub issues about people who used
one of many SQL's reserved keywords in their ORMs:
https://stackoverflow.com/questions/20798240/doctrine2-
sqlstate42000-syntax-error-or-access-violation-1064
https://stackoverflow.com/questions/35154203/
sqlstate42000-syntax-error-or-access-violation-1064-symfony-
2-7-3-applicatio
https://stackoverflow.com/questions/23446377/syntax-
error-due-to-using-a-reserved-word-as-a-table-or-column-name-in-mysql
https://stackoverflow.com/questions/19147073/why-
sqlstate42000-syntax-error-or-access-violation
https://stackoverflow.com/questions/14437031/syntax-
error-on-a-doctrine-query-symfony2
doctrine/common#165 https://github.com/doctrine/common/issues/165
#3281 https://github.com/doctrine/doctrine2/issues/3281
nextcloud/server#3140 https://github.com/nextcloud/server/issues/3140
etc. etc.
The list of SQL's reserved words https://www.drupal.org/docs/
develop/coding-standards/list-of-sql-reserved-words is quite extensive,
and some are extremely obscure. I've already hit three of those by
accident in two days. The simplest solution IMO would be for Doctrine
to actually make column/table names that are colliding with SQL's RW's
simply fail validation. doctrine:schema:validate, "column name can't be
an SQL reserved keyword; either change or quote with backticks" reported,
et voila, instead of the ugly and cryptic "SQLSTATE[42000]: Syntax error or
access violation: 1064 You have an error in your SQL syntax".
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/doctrine/doctrine2/issues/6863, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJakNxlTUc_Hh0tbZZHzcw212APrZS2ks5s9M18gaJpZM4Q1vJB
.

@Ocramius well, it's good hear that. Still, wouldn't issuing a warning be sensible even then? I'd say that the list of reserved keywords in SQL is a source of constant WTFs for people around the globe, so having a simple validator built into Doctrine would simplify the validation process anyway (so that people won't be surprised that their names, which would work perfectly in regular Doctrine 3 use cases, wouldn't work unquoted e.g. with raw SQL queries etc.)

Still, wouldn't issuing a warning be sensible even then?

If 3.0 achieves full SQL compliance with auto-quoting, I don'tthink it's needed, it would be unnecessary to warn people against something that works. But it should be noted in documentation.

The list of SQL's reserved words

Just for precision, the list on Drupal site you referenced is not accurate, it is compiled all-into-one and also contains non-reserved keywords - not ideal. Keywords are platform- and version-specific, this is something where we can leverage DBAL's platform keywords.


Add "Logo" field in Site settings

Add Image in General site setting for a site logo that we can use in the themes.

Site logo like a profile picture but for the site.


[FEATURE] [DRAFT] Virtual event URL needs to be made required if the user chooses a virtual event

Is your feature request related to a problem? Please describe.
Currently, users can select that the event is virtual, but not provide a virtual event URL.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

What about those issues you must register to get the virtual vent URL? - this and other edge cases need to be discussed.


Compat Layer Version Issues

RFTools most recent version wants Compat Layer 0.1.7 or above but XNet wants version 0.2.5, but when I put the higher version in my Mods Folder I get the message that RFTools doesn't recognise Compat Layer version 0.2.5. Please help & advise.

Found out what the real Issue was, the Compat Layer file offered by some Minecraft Forum sites is incomplete or corrupted for all version use.


R8G8_UNORM Incorrect Bitmasks in PixelFormat

I was doing some testing (printing out the PixelFormat struct for each DXGI_FORMAT), and noticed what seems to be an error. I looked at both R8G8_UNORM and R8G8_SNORM, which should have the same bit masks, but instead have this:

Format
Red
Green
Blue
Alpha

R8G8_UNORM
0xff
0x0
0x0
0xff00

R8G8_SNORM
0xff
0xff00
0x0
0x0

What source file are you looking in? (code line would help).

I haven't looked at the source code, I just downloaded the latest release (January 31, 2023) and ran the tool using a Python script that converts and prints the resulting PixelFormat struct.

As in the DDS file header?

Correct, the PixelFormat struct inside the DDS Header.
This is the command I used: .\texconv.exe -o .\output\ -f R8G8_UNORM .\sublime_text.png
The command output:
reading .\sublime_text.png (512x512 R8G8B8A8_UNORM_SRGB 2D) as (512x512,10 R8G8_UNORM 2D)
writing .\output\sublime_text.dds

I've attached the resulting DDS file. (Zipped because Github doesn't like the .dds extension)
sublime_text.zip

OK. So the behavior you are seeing is due to the way modern DXGI_FORMAT values are 'mapped' to the legacy Direct3D 9 era DirectDraw PixelFormat header in a DDS. DirectXTex has a 'DX10' extension header that directly expresses the DXGI_FORMAT, but there are issues with that as well. See this blog post. The array of legacy formats are in DDS.h.
The DXGI_FORMAT_R8G8_UNORM format is mapped to the Direct3D 9 D3DFMT_A8L8 format. In DDS files, this is:
DDSGLOBALCONST DDS_PIXELFORMAT DDSPF_A8L8 =
{ sizeof(DDS_PIXELFORMAT), DDS_LUMINANCEA, 0, 16, 0x00ff, 0, 0, 0xff00 };

The DXGI_FORMAT_R8G8_SNORM format is mapped to the Direct3D 9 D3DFMT_V8U8 format. In DDS files, this is:
DDSGLOBALCONST DDS_PIXELFORMAT DDSPF_V8U8 =
{ sizeof(DDS_PIXELFORMAT), DDS_BUMPDUDV, 0, 16, 0x00ff, 0xff00, 0, 0 };

IOW: You need to look at the pixel flags and bit size, not just the channel masks.


servo control

sets 50 hz pwm with pulse output, from 500us to 2500us

RC sevos suffer from lack of standard and confusing/conflicting info. 50Hz seems to be pretty universally accepted. The main source of confusion being the PWM timing range and resulting amount of servo rotation. 1000-2000us seems to be the accepted safe range with anything beyond those limits being servo dependent. Also some confusion on what 1000-2000us produces in servo output, with some info saying 90deg and other saying 180deg.
So maybe make the timing limits user configurable, but with default values of 1000-2000us.

could vargs it so default is us timing, and angle=90 is like, degrees but i agree i prefer passing in timing not angle

Done in f4d2736d307d6bcda00debf686bd9a7d7a7c43ed. Thanks @brentru


I can't install ROCm v4.3 on Kali Linux Kernel 5.10.0-kali9-amd64

I want to install ROCm for my AMD GPU (5700XT) and use Hashcat on Kali Linux.
Hashcat requirements: AMD GPU ROCm v3.3 and above.
I followed this guide that show you how to do it on Ubuntu (Debian). I failed to install ROCm after all the gpg.key and the sudo update. I used the v4.3 Ubuntu release.
──(kali㉿kali)-[~]
└─$ sudo apt-get update
Hit:1 http://kali.cs.nctu.edu.tw/kali kali-rolling InRelease
Hit:2 https://repo.radeon.com/rocm/apt/4.3 ubuntu InRelease
Reading package lists... Done

┌──(kali㉿kali)-[~]
└─$ sudo apt install rocm-dkms
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 llvm-amdgpu : Depends: libstdc++-5-dev but it is not installable or
                        libstdc++-7-dev but it is not installable
               Depends: libgcc-5-dev but it is not installable or
                        libgcc-7-dev but it is not installable
               Recommends: gcc-multilib but it is not going to be installed
               Recommends: g++-multilib but it is not going to be installed
 openmp-extras : Depends: libstdc++-5-dev but it is not installable or
                          libstdc++-7-dev but it is not installable
                 Depends: libgcc-5-dev but it is not installable or
                          libgcc-7-dev but it is not installable
 rocm-gdb : Depends: libpython3.8 but it is not installable
E: Unable to correct problems, you have held broken packages.

Sources:
Guide
https://rocmdocs.amd.com/en/latest/Archived_Documentation/4_1_Installation_Guide.html

Thanks @yuukiAme for reaching out.
I certainly understood the problem.
We do not support Kali linux with ROCm, please look at supported OSes section @ https://github.com/RadeonOpenCompute/ROCm#Supported-Operating-Systems
And also we do not support 5700XT with ROCm, please look at supported hardware @ https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support
So I am closing this ticket with above reasons. Thank you.


some improvements for examples + docs build

Make it a bit easier to build the examples with CMake, also add some more documentation on how to build individual examples.

Thanks.  But please read https://libcsp.github.io/libcsp/git-commit.html

I can improve the commit message. Would it be okay to squash the 2 commits (the second one was a little fix) or do you want me to be strict about keeping local changes in separate PRs? Because then, I would put the removal of the target_include_directories in a separate PR with a better explanation.

Would it be okay to squash the 2 commits

Yes.

@robamu, are you still working on this?

I will update this after the other PRs were merged


Going full bignumber

Nice work, LGTM.
Just a few formatting errors.
If haven't already, I recommend you to install these extensions. They will help you catch any formatting / lint error. Prettier will format files using shared formatting settings.

TSLint
Prettier


Mod compatibility issues

Describe the bug
PlayerRenderMixin makes the mod crash when used along any other mod that redirects / injects into and cancels renderNameTag (a pose will be left hanging in PoseStack, making the checkPoseStack fail in LevelRenderer#renderLevel).
To Reproduce
Install any mod that has the same mixin, like Artemis.
Expected behavior
The mod should not crash.
Additional context
https://hst.sh/mosavokuca

A "simple" way to fix this would be to do the same thing I did, in Artemis. Yes, it is still bad from compatibility standpoint, and mods might render text over each other. BUT, will the mod crash? No, it won't. I think that is a fair compromise to make.

Another alternative might be to change the mixin priority so that other mixins run first, if the cancelling of renderNameTag happens at head. That way they cancel before our code even runs

I changed the priority to 2000 in dev, which should make it run after other mixins (the default priority is 1000, and higher priority runs later. See https://github.com/2xsaiko/mixin-cheatsheet/blob/master/mixin-priority.md)

I changed the priority to 2000 in dev, which should make it run after other mixins (the default priority is 1000, and higher priority runs later. See https://github.com/2xsaiko/mixin-cheatsheet/blob/master/mixin-priority.md)

Well, that probably fixes it. Yeah, it is a weird fix, but probably the best we can do.

that's what happens with higher priority. Greater priority makes it run later, according to that doc anyway. Don't worry: I also never remember which way around it is. I have to check the cheatsheet every time i mess with priority

It would be really weird that high priorities run later.

It isn't that weird if you consider that often the code that runs later gets the final say in what happens

Imagine you have three mixins that set the same field and don't cancel, all at the same location. It is the final mixin that gets the final say in setting the field

if it turns out that the doc is wrong and higher priority runs first, I'll change it again. I'll stick with the doc for now though

@valoeghese If you give me a jar, I can test it with Artemis (or you just put artemis as a mod in your dev env runs/mod folder)

If you want a jar lmk what version you're on

1.18.2. Have you had a release since this fix?

it should be fixed in the latest update

closing this issue as it should have been fixed
feel free to reopen if the issue persists