fix(test) : update creator and link tests to run against prod-preview

Note: If there are pending changes to the PR, prefix the PR title with "WIP" and add the label "DO NOT MERGE"
Mandatory

[x] What does this PR do?

This PR fixes the Creator image tests for the prod-preview test account and link tests

Added selector for Plan, Backlog, and Board Tab.

[ ] What issue/task does this PR references?

[x] Are the tests Included?
Yes

Optional

[ ] Is the documentation Included?

[ ] Are the Release Notes included?

[ ] @mention(s) to expected reviewer(s) included

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.

[test]

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.

@Raunak1203 Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2725 and visit http://localhost:5000 to access it.


create a config to include readonly relay (caching relay)

this will allow to integrate with cache relays like https://github.com/PrimalHQ/primal-caching-service, they don't receive publish, it just cache data from other relays.
Suggestion:
const ndk = new NDK({
    explicitRelayUrls: ["wss://a.relay", "wss://another.relay"],
    explicitReadonlyRelayUrls: [ "wss://caching.relay" ]
});```

or

```typescript
const ndk = new NDK({
    explicitRelayUrls: ["wss://a.relay", "wss://another.relay"],
    explicitCachingRelayUrls: [ "wss://caching.relay" ]
});```

It does make sense, but I think this is a hack because relays are not able to communicate these things in the protocol; not sure what to do here because I really want to fix the spec but that's going to take some time.

I'm inclined to think it's worth adding something like this; I'll think about it some more and how to structure it properly

This configuration should create a relay pool that does not write events, read only. You can allow your user to configure cache relays. The protocol is guaranteed by the signature in the event, not by the relay's structure. I can save a signed nostr event in a QR code or in a file, the nsec signature guarantees guarantees the authorship of the event.
Check primal, it uses cache services:

This configuration significantly affects the user experience in a positive way, check https://primal.net/.


Question about IP Address

Thanks for great VPN!
I have question!
If the internet IP address change how I can update the server to the new IP address?
Thanks

Just change .ovpn files to match the new IP address ... or use a dynamic dns and change the .ovpn files to look for your ddns domain.
https://github.com/pivpn/pivpn/wiki/FAQ#my-isp-doesnt-give-me-a-static-external-ip-address-so-my-servers-ip-address-keeps-changing


Add openssh to rstudio-session-complete image

Could you add openssh to the rstudio-session-complete images. This would allow users to create SSH keys and it is also required for git clone.
i.e. add the following to the bionic image:
RUN apt-get update && apt-get install -y openssh-server

This is an interesting proposal, thanks! This definitely seems useful. I suspect we would only want to install the client utilities, not the full "openssh-server" 😄

Yeah, that makes perfect sense. Thanks for the response @colearendt!

Related to #503


Proposal to use python-slim instead of python-alpine

Description
Use the python-slim Docker image as a base instead of the python-alpine variant.
Rationale
I believe you guys switched to the Alpine image to reduce space, but the python-slim variant is about the same size. Alpine does not support manylinux wheels from Pypi, so many packages have to be built from source, including cython, numpy, pandas (which takes FOREVER), and others. This is further complicated by the fact that Alpine doesn't contain undocumented build dependencies of some pip packages such as gcc , g++, etc.
Further justification can be found here https://pythonspeed.com/articles/base-image-python-docker-images/

I can't talk for everyone else, but I'm +1 on this one.

It's Okay to me. A pull-request is welcome.
Em qui, 19 de dez de 2019 07:59, Bruno Alla<EMAIL_ADDRESS>escreveu:

I can't talk for everyone else, but I'm +1 on this one.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/pydanny/cookiecutter-django/issues/2373?email_source=notifications&email_token=AAGFFL2WW7APOPVE5FIUVITQZNHZBA5CNFSM4J5AFBZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHJHUYI#issuecomment-567442017,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGFFL5ZNIEBQ7OGPC7SDVDQZNHZBANCNFSM4J5AFBZQ
.

+1


add default tags to all lattice resources

Note:
Add default tags to all lattice resources (managers). Major change in managers. Test changes are mostly layout and cloud mock removal.
closes #392

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

5 of 5 (100.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 45.162%

Totals

Change from base Build<PHONE_NUMBER>:
0.01%

Covered Lines:
3827

Relevant Lines:
8474

💛  - Coveralls


Reading files with HTTP fails if range headers are not supported

Uproot fails to read files from servers that don't support range requests. Example traceback with extra debugging print out and without this fix applied:
Got response of size 20166303 chunksize is 1048576
-1765915941 -30694 -1671616656<PHONE_NUMBER> -7813 16221 -118717542 708660270
self._compressedbytes, self._uncompressedbytes = -1765908128 -1671616656
cursor.index - start 0
self._compressedbytes -1765908128
self._uncompressed = None
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "uproot/rootio.py", line 60, in open
    return http(path, httpsource=httpsource, **options)
  File "uproot/rootio.py", line 89, in http
    return ROOTDirectory.read(openfcn(path), **options)
  File "uproot/rootio.py", line 154, in read
    streamerinfos, streamerinfosmap, streamerrules = _readstreamers(streamerkey._source, streamerkey._cursor, streamercontext, None)
  File "uproot/rootio.py", line 556, in _readstreamers
    tlist = TList.read(source, cursor, context, parent)
  File "uproot/rootio.py", line 949, in read
    out = cls._readinto(out, source, cursor, context, parent)
  File "uproot/rootio.py", line 1455, in _readinto
    start, cnt, self._classversion = _startcheck(source, cursor)
  File "uproot/rootio.py", line 426, in _startcheck
    cnt, vers = cursor.fields(source, _startcheck._format_cntvers)
  File "uproot/source/cursor.py", line 46, in fields
    return format.unpack(source.data(start, stop))
  File "uproot/source/compressed.py", line 183, in data
    return self._uncompressed[start:stop]
TypeError: 'NoneType' object is not subscriptable

Error can be seen when using Python's built in HTTP server to open a "large" file (i.e. more than one chunk):
python -m http.server 8000 --directory tests/samples

Also includes some minor fixes for linter errors I stumbled upon. It might be necessary to use a more general exception in some cases. I've not checked closely but perhaps SyntaxError needs to be caught in some cases?

I think the reason performance is usually treated as secondary it's because it's so dependent on the use-case. What you're calling a "performance degradation" here is based on assumption that the user will want to read nearby arrays from the file. (And with that basket-sized cache blocks improvement we talked about, "the same array more than once.") This is a common use-case, though not the only one, and a warning about performance for those users would be very confusing.
What I had in mind for remote files was to reproduce the memory map API that works so well on local files. If the file is too big for memory—a common situation in analysis, though not tutorials—the cache will thrash. This is the case with all kinds of caches, and it's the reason that single pass (e.g. doing all your work in an uproot.iterate loop) is faster.
Is the situation here that the cache loaded to read basket TKeys will get evicted before we can read the array data? It's one thing if the cache thrashes when the user asks for the same data twice, but quite another if it thrashes while servicing a single request.

Oh! What's happening is that you ask HTTP for a chunk, but it answers by sending the whole file? If we know that, why don't we chop it up into the right-sized chunks send fill the cache? In other words, take the error as a gift?
Why would HTTP do that? Does it only happen for small files? I imagine it would be a problem if asking for a byte range results in downloading TB of unwanted data.
To do this, we'd have to be certain of where the downloaded part starts. If len(chunk) > chunksize, does that mean that it starts at 0 or at the requested start?

I should have been clearer as this is not a solution for #393, it's just a bug I noticed when starting to work on it.

Oh! What's happening is that you ask HTTP for a chunk, but it answers by sending the whole file?

Yes! Sorry I really should have said that in the first comment of this PR. I'll blame jet lag as I've just got back from CHEP 😄

Why would HTTP do that? Does it only happen for small files?

It's dependent on if the server. I've not looked into it enough to know exactly but as range requests are just a header in the request, if the HTTP server is very simple like python -m http.server (or if something is misconfigured and the header gets lost) the header is ignored and you get the entire file.

If we know that, why don't we chop it up into the right-sized chunks send fill the cache? In other words, take the error as a gift?

That is what is currently done in this PR. The big performance issue if the cache is smaller than the file. The cache becomes useless when trying to read almost anything in a 4GB file with the default cache size of 100MB and you'll download 4GB for every single call to Source.data. The newest two commits make it a little better if you only read nearby data (this isn't the case in my test files).

I imagine it would be a problem if asking for a byte range results in downloading TB of unwanted data.

This is why I suggested a warning in option 1 as it's not just "bad performance for some usage patterns" it's repeatedly reading millions of times more bytes than you need to and not being able to cache them effectively unless you only access the same chunk or one at the end of the file.
The alternative I see is to ignore the cache size when this happens and just use a normal dictionary (option 2). It's not nice though as memory usage might blow up. Personally I find that more acceptable to do without a warning as it's easier to debug when it causes a problem.

To do this, we'd have to be certain of where the downloaded part starts. If len(chunk) > chunksize, does that mean that it starts at 0 or at the requested start?

Empirically this seems to start at zero as if the header was ignored and I don't see how there could be any other reasonable behaviour. Not being sure about this was another reason to include the warning. Are there any magic bytes at the start of a ROOT file which I can look for to check this assumption?

Are there any magic bytes at the start of a ROOT file which I can look for to check this assumption?

Yes!
% hexdump -C issue412.root | head -1
00000000  72 6f 6f 74 00 10 33 a8  00 00 00 64 00 00 00 00  |root..3....d....|

The first four characters of every ROOT file are guaranteed to be "root" (that aspect of the format is specified). If character data in a ROOT file were uniformly random, the chance of hitting these four characters by accident is about 1 in 4 billion. It's not uniformly random; there are a few places in the file where the filename is stored, which probably ends in ".root". (Surprise! If you name your file a dirty word while filling it, then change its name on the commandline, it will have that dirty word embedded inside the file. Another fun quirk.) If HTTP returns a random fragment of the file (which I'd consider a bug), then there is a small chance that those non-beginning bytes are "root". Not as small as 1 in 4 billion, but negligible.
The "root" magic is followed by a 4-byte big-endian version number (such as 61800 for 6.18/00, possibly with 1000000 added if it's a big file, like 1061800). The next 4 bytes (if small) or 8 bytes (if big) is fBEGIN, which is almost always 100. Maybe these could be used to disambiguate—it's not likely to be randomly after "root", but perhaps that's too complex to check for.
Your suggestion of increasing the cache size is dangerous because people do run out of memory, and these cases are hard to track down. Making the cache behavior more complex will make those cases more difficult to debug. However, if we're in this situation where we've unexpectedly downloaded the whole file and Python is still alive, then we've demonstrably fit the whole thing into memory. Casting it as an array with numpy.frombuffer and slicing it into tiles is a zero-copy operation that wouldn't add to the total usage.
How about this: if HTTP returns a whole file instead of the requested part, which we can determine by len(chunk) > chunksize and chunk[:4] == b"root", then let's chop it up into the correct chunksize (assuming that it starts at 0) and put all of the chunks into a simple-dictionary cache, rather than the eviction-happy cache. After all, evicting a view doesn't even reduce memory usage, so the normal rules don't apply here anyway.
So, yes, that's option 2. I'm on board now.

Thank you for the interesting write up. (As always!)
Checking for b"root" should be adequate as checking for a sensible version seems either overly general or fragile. If the check doesn't pass it raises a NotImplementedError.
The response from Source._read is already put through return numpy.frombuffer(data, dtype=numpy.uint8) so I think this is now ready.

@jpivarski Assuming you're happy with it, this can be merged.
As nobody has reported it as a bug I think it can wait for the next release instead of having a dedicated one made.

Okay, thanks!


fix: fixes #392

Replaces fetching instances

from using get_object_from_pk_or_uri
to using get_object_or_404

This adds an automatic check for each endpoint if requested object is indeed instance of expected entity.
Otherwise, redirects to 404 page.
Removes unused import.

Updated solution, see latest commit.
But instead of throwing 404, returns a HttpResponse with error message in plain text (thought this would be better for programmatic interaction with the endpoint(s)).


Fix: Add request body tab focus

Overview
Fixes #2873
Adds a focus outline around the request body editor when a user tabs to it
Demo

Notes
Optional. Ancillary topics, caveats, alternative strategies that didn't work out, anything else.
Testing Instructions

Change PC Settings > Accessibility > contrast themes > Aquatic mode.
Check out the branch and run GE locally
Use the tab key to navigate to request body
Tab once more to access the editor area
Observe focus indicator/outline
repeat with desert, dusk, and night sky modes.

Closing this as this was done as a hotfix


[NTR] bioimaging protocol

New term name
bioimaging protocol
Definition
A protocol describing the method of a bioimaging technique. Bioimaging is a biological imaging method causing as minimal interference to living processes as possible or getting a 3-D structure from the outside without physical interference e.g. of cells, tissues or other living matter. Usually, the method is non-invasive but also fixed biological material is covered by a wider definition. (adapted from https://cab.ku.dk/what_is_bioimaging/)
Parent term(s)
No response
Child term(s)
No response
Synonyms
No response
Xrefs
No response
Your ORCID
https://orcid.org/0000-0002-3879-7057

Thank you for your contribution, your term has been added to DPBO.


add depth to led editor?

It's very flat.

closer to

?

I'm on it!

This would be my recommendation. Let me know if you have thoughts or if I should add this to the code

Oh nice use of orange. You can add it to the code by editing the (very poorly named) solid_red and solid_black images in assets.ts.

Adding now. Is there a way to change the background from dark purple to black so it matches our other modals?

Minor code change. Do you want all modals to be in this style?

Yes if possible!


include the length of an array and the index in the error message

currently the validation of array indexing will return nonexistent param references error. It would be better if we could include the length of an array and the index in the error message.
Background: https://github.com/tektoncd/pipeline/pull/6179#discussion_r1112399444
https://github.com/tektoncd/pipeline/blob/ac225de1b714b7a3cd78afe7155101e228789182/pkg/reconciler/pipelinerun/resources/validate_params.go#L131-L133

/assign

@Yongxuanzhang is this fixed now?
If you include Fixes: #issue-number in the commit message/PR description, the issue will automatically be closed once the PR is merged

@Yongxuanzhang is this fixed now? If you include Fixes: #issue-number in the commit message/PR description, the issue will automatically be closed once the PR is merged

No it is not fixed, it was mentioned from a comment in the merged PR that we better have more explicit logging, this issue is in my queue with low priority but I will fix it


feat: Add norm_iteratedFDeriv_prod_le using Sym

add (iterated) deriv for prod

Add HasFDerivAt + variants for Finset.prod (and ContinuousMultilinearMap.mkPiAlgebra)
Add missing iteratedFDerivWithin equivalents for zero, const (resolves a todo in Analysis.Calculus.ContDiff.Basic)
Add iteratedFDeriv[Within]_sum for symmetry
Add a couple of convenience lemmas for Sym and Finset.{prod,sum}

Thanks very much!
Should I add a variant of norm_iteratedFDeriv_list_prod_le for Lists with non-commutative multiplication as well? And contDiff_list_prod, etc.? Perhaps as a separate PR?

New PRs are cheap. I would not expand this PR further if I were you, and just open a new PR when you've done what you're suggesting. That makes it also easier to separate reviewed an unreviewed code.
Feel free to leave a to do in the file, if you want.

Sounds good, I'll do that. Thanks all!

bors r+

bors r+

Sorry, there was an upstream change that broke the PR (List.erase_cons_tail now uses beq). I'll squash, rebase, fix.

Thanks, let's try again
bors merge


Fiji --dry-run option will still run the updater and remove files

Running the launcher with the --dry-run option should make no changes, however, I found that pending update stuff will still run.
As a side note, running the launcher with the --debug option does not show those files being removed (I'm guessing that the handling of the --debug option happens later).

@carandraug Thanks for the report.
@hinerm Remember discussing this recently? Looks like the always-install-updates behavior is already causing consternation. I'll look into how to fix it.


hashmap_num_entries provides incorrect value

#include <stdio.h>
#include <assert.h>
#include "hashmap.h"

int main() {
	int i, sq, failed = 0;
	const unsigned initial_size = 64;
	struct hashmap_s hashmap;

	if (0 != hashmap_create(initial_size, &hashmap)) {
	  // error!
	}

        // try to add 100 entries
	for (i = 1; i <= 100; i++) {
		sq = i * i;
		if (0 != hashmap_put(&hashmap, &i, sizeof(int), &sq)) {
		  printf("Failed to put : %d\n", i);
		  // keep track of number of failed entries
                  failed++;
		}
	}

        // verify number of entries
	printf("Size of hashmap: %d\n", hashmap_num_entries(&hashmap));
	assert(100 - failed == hashmap_num_entries(&hashmap));

	hashmap_destroy(&hashmap);

	return 0;
}

Output:
Size of hashmap: 15
test.out: test.c:23: main: Assertion `100 - failed == hashmap_num_entries(&hashmap)' failed.
Aborted (core dumped)

If this is a genuine issue, I would love to work on this.

unsigned num_entries = hashmap_num_entries(&hashmap);

If number of entries did not mean number of (key, value) pairs, then I think README for hashmap_num_entries could be more clear.

I turned the above into the following test case:
UTEST(c, issue_18) {
  int i, sq = 0;
  const unsigned initial_size = 64;
  struct hashmap_s hashmap;

  ASSERT_EQ(0, hashmap_create(initial_size, &hashmap));

  int keys[101];

  for (i = 1; i <= 100; i++) { keys[i] = i; }

  // try to add 100 entries
  for (i = 1; i <= 100; i++) {
    sq = i * i;
    ASSERT_EQ(0, hashmap_put(&hashmap, (const char*)&keys[i], sizeof(int), &sq));
  }

  ASSERT_EQ(100u, hashmap_num_entries(&hashmap));

  hashmap_destroy(&hashmap);
}

Notice that you need a unique memory location for the key as is stored in the map.


AV 8 BNA UFC and ODU

[x]  image assets
[x]   UI bindings
[x]   push buttons #11
[ ]   potentiometers #14

[x] COMM 1 & COMM 2
[ ] VOL1 & VOL2
[ ] Brightness

[x]   decode indicator values from DCS

VOL1 & VOL2, BRIGHTNESS potentiometers postponed to later version (no incremental command provided by Razbam)


How this works?

I don't see a file created or changed. The plugin doesn't seem to do anything.

read the readme

Whoops. Sorry. Can you provide more details?

installed the plugin.
open a project folder
run the plugin
nothing happens
no errors in a tooltip and nothing in the dev console.

I've found something about tracking changes since last package.json version change?
but I haven't change the version since day one - 2 weeks of development

What does the console say? What your commits look like? How do I replicate it? Can you try another project? Does it work with normal cli module?

What are the steps to get it working within atom? What are usage commands? Hot to actually generate changelog?


Why support only 10.1 as minimum deployment target?

At least iOS 9 would make sense, what is in there that enforces iOS 10.1?
Thanks.

I thought it was able to be used by any iOS since I do not use any iOS specific code or set deployment target. How are you installing it as a submodule or using carthage or cocoapods?

Carthage via carthage build --platform iOS

Specifically I get the following error:
somefile.swift:14:8: Module file's minimum deployment target is ios10.1 v10.1: /project/Dollar.framework/Modules/Dollar.swiftmodule/arm64.swiftmodule

any news on this? @ankurp

So I checked building with an older Carthage project here and ran into the same issue. There is no deployment target set in the xcode project so I feel carthage should build with the deployment target specified by the root project. Let me know if you have an alternate solution as well as I can make a change to the xcode project if it makes a difference.

Also I am thinking of removing Carthage support since there is Cocoapods already and you also have the new Swift Package Manager available in Swift 3

I will try to install with cocoa pods. Do you have a guide on how to pack with SPManager?

Not sure as I have not used SPManager before.

hi @netgfx , I use carthage to manage 3rd frameworks too, and i ran into the same issue when i'm updating dollar to support swift3, any update? thanks.

please review: https://github.com/ankurp/Dollar/pull/248


add .query to poolNamespace

Now poolNamespace can only use with
var pool = poolCluster.of('SLAVE*', 'RANDOM');
pool.getConnection(function (err, connection) {});
pool.getConnection(function (err, connection) {});
pool.query // !!!not a function

Its behavior is some different from Pool. With Pool we can use .query directly.
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
});

pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0].solution);
});

I don't see any reason why not to add it :) Feel free to work up a pull request, otherwise I can get around to it at some point :)!

OK, since you think it's ok, I would work for it this weekend. : )

I recommend forcing the use of Promise
static getConnection() {
	db.initialisePool();
	return new Promise((resolve, reject) => {
		db.pool.getConnection((err, connection) => {
			if (err) {
				connection.release();
				reject(err);
			}
			else {
				resolve(connection);
			}
		});
	});
}

static query(connection, query, params) {
	return new Promise((resolve, reject) => {
		connection.query(query, params, function (err, rows) {
			if (err) {
				if (!inTransaction) {
					connection.release();
				}
				reject(err);
			}
			else {
				resolve(rows);
			}
		});
	});
}

queryPromise(qry) {
	var state = {
		connection: null,
	};
	return db.getConnection().then((connection) => {
		state.connection = connection;
		return db.query(state.connection, query.queryString, query.queryParams, true);
	}).then((data) => {
		state.connection.release();
		return data;
	}).catch((error) => {
		state.connection.release();
		throw error;
	});
}

The usage of Promise seems another topic than poolNamespace @merarischroeder

I don't think you need a committee to return a Promise from a new function. You can have both a Promise and non-promise API for the .query function.
Whether or not the final internal implementation uses Promises or not, is beside the point. But, why not use this as an opportunity to explore that?
Public Access:

.query(sql, callback) - wraps .queryPromise
.queryPromise(sql).then(dataCallback).catch(errorCallback)

Why not both? https://www.youtube.com/watch?v=vqgSO8_cRio

Why not both?

connection.query() currently returns Query command object, and some code may rely on this
We could potentially add extra top level createConnectionPromise() and cretePoolPromise() helpers that would return promise wrappers (this is already part of mysql2 api )

but .query can be the same API, and .queryPromise is the new API.
RE: Wrappers. That's beside the point. We could be using Promises internally, and exposing two styles of public access. Or is the problem backward compatibility, that there is no support of Promises in prior popular version of nodejs?

We could be using Promises internally

Switching to promises internally is a lot of refactoring with no immediate benefit. Why do you think it worth doing? Internal code does not have complicated async task flow, I can't see where promises would fit well. And you are right about node versions, we still support node 0.8 and this might be critical for some users

Switching to promises internally is a lot of refactoring with no immediate benefit

This would only be done in the new function.

Why do you think it worth doing?

They're the future. There's no need to refactor all the code. But you can certainly start with new functions.
But that's beside the point now:
Check out line 188 in https://github.com/mysqljs/mysql/blob/master/lib/Pool.js, apparently this function is already there.

Hi @merarischroeder, I think the should promises be used internally isn't really even an option. This module supports all the way down to Node.js 0.6, and Promises never even existed in Node.js until around 0.11.x, so just the internal usage of promises would lock out all those versions from users for just the reason of "someone felt like using promises instead of callbacks internally" right? Doesn't seem like the appropriate trade off to drop Node.js version support to me.

Check out line 188 in https://github.com/mysqljs/mysql/blob/master/lib/Pool.js, apparently this function is already there.

This issue is about the PoolNamespace, as you can see in the title and initial description. That does not have a .query method. The code you are pointing to is not related to PoolNamespace. @alsotang has already put together a PR to add this method, it was just pending some unit tests right now.
I hope that makes sense for what this issue is actually about :)

As I said before: "Or is the problem backward compatibility?"

This module supports all the way down to Node.js 0.6

So I take that as a yes.

would lock out all those versions from users for just the reason of "someone felt like using promises instead of callbacks internally" right

Probably, but not necessarily. What I am suggesting is an internal use, near the surface of the public API interface, not deep within. It would be as simple as only adding the function if the Promise object is detected to exist OR by testing Node.js >= 0.11.
I would have thought, such code is acceptable. You should continue supporting older versions, but you can easily support newer features if newer Node.js is being run. NodeJS is up to v6.6, and Promises have been around since 0.11 as you noted. That's a long time to wait, to include Promise support in this mysql module.
Promises are the future of nodejs. Don't hold back mysql module, especially when there's a workable solution.

Don't hold back mysql module, especially when there's a workable solution.

I'm not, but I just haven't seen anyone offer up a workable solution. If you can put a pull request together that demonstrates this as a work-able solution, please, please do! Even Node.js core doesn't provide a promise interface for some reason. I'm not holding back, but certainly the fact that I don't use promises and I don't see any pull requests with implementations coming in ¯\_(ツ)_/¯
Also, if you want to continue this further, there is at least one open issue about Promises already. Let's not hijack this thread for the following reasons:
(1) going off-topic on a thread means the original posted is getting all these emails unrelated to their original issue.
(2) this conversation ends up hiding the original issue, causing more divergent conversation.
(3) it's hard for people to discover this conversation to participate in, because the conversation does not match the issue of the title, excluding users from the conversation.
(4) this issue will be closed with the original issue is resolved, causing all this useful conversation to be lost into the abyss of closed issues.

@dougwilson I'll stick to working on one feature at a time.

I don't see any reason why not to add it :) Feel free to work up a pull request, otherwise I can get around to it at some point :)!

In another thread, you noted that .query is in the code. Did this happen very recently since your quote?

Let's not hijack this thread

I'm not that annoying :)
We're only discussing Promises, because that's the API I recommended for this feature. Although there may be  a Promises thread context is crucial. (eg. Is the glass half full or half empty? It depends if you're filling it or drinking from it). ie. Your discussion in that thread probably doesn't relate to isolated public interfaces.

Please stop derailing this thread re: Promises. I'm going to lock this thread, because promises have nothing to do with the original issue, and the original issue already has an open PR. Tis issue will be closed with the merging of that PR.

PR #1506 merged!


assorted tiny fixes and bug reports

this pr has a couple of small fixes.

Did you want this merged to main?

@oenu, could you revert this? I think it was supposed to go to electron-dev


Type not found : io.colyseus.Client

I follow this instruction https://docs.colyseus.io/getting-started/haxe-client/
I install using this
haxelib git colyseus https://github.com/colyseus/colyseus-hx.git
haxelib git haxe-ws https://github.com/colyseus/haxe-ws.git

but every time I run my game I got this error Type not found : io.colyseus.Client. Any idea why?
import io.colyseus.Client;

I would guess a -lib colyseus-hx is missing somewhere in your build scripts to actually include the library.

thanks!

I would guess a -lib colyseus-hx is missing somewhere in your build scripts to actually include the library.

I'm having the same issue. where should I include this exactly ??

Depends on the framework you're using. Normally you can just provide it via the commandline or the hxml to the haxe compiler.

Mostly depends on the framework you're using. Normally you can just provide it via the commandline or the hxml to the haxe compiler. If you're using openfl it should be placed somewhere in the project.xml iirc, but you have to read up on that in the openfl documentation.

Thanks


Fix bug search page pagination doesn't keep hide fields status

Just click the Go button after hiding search.


[2.2.1] Calling failOnConsole() via setupFilesAfterEnv now fails with "Test did not tear down console.error mock properly"

We call failOnConsole() in a  jest.setup.js script that we have configured in jest.config.js using the setupFilesAfterEnv config option.
// jest.setup.js

import failOnConsole from 'jest-fail-on-console'

failOnConsole({
  silenceMessage(message) {
    if (
      message.startsWith('[BootstrapVue warn]') ||
      message.startsWith('[Vue warn]: Injection "Symbol(pinia)" not found')
    ) {
      return true
    }
    return false
  },
})

Dependabot opened a MR today to bump jest-fail-on-console from 2.1.1 to 2.2.1, but unfortunately this causes all tests to fail with the following error message:
    Test did not tear down console.error mock properly.
        If you are trying to disable the "fail on console" mechanism, you should use beforeEach/afterEach
        instead of beforeAll/afterAll

      at flushUnexpectedConsoleCalls (node_modules/jest-fail-on-console/index.js:50:13)
      at Object.flushAllUnexpectedConsoleCalls (node_modules/jest-fail-on-console/index.js:97:7)

The changelog doesn't explain this change in behaviour, and it is working as expected with 2.1.1, despite not using any {before,after}* methods, so I'm wondering if this is intended.

Thank you for the report and sorry for the inconvenience.
Are you able to reproduce this issue with a simple example please?

Moreover, could you try with the 2.2.0 version?

Lastly, could you try to change this line in your node_modules: https://github.com/ricardo-ch/jest-fail-on-console/blob/main/index.js#L42
By:
return newMethod

Perfect, I'll publish a fix ASAP then.

Awesome, thanks a lot for the quick resolution! 🚀

Hmm, actually, if I try this on one of my project, I start getting the same error as you. 🤔
What version of Jest are you using?

What version of Jest are you using?

24.9.0 (via @vue/cli-plugin-unit-jest)

Ok this is probably why. I'm using v27.
I did a quite heavy refactor that also simplify the logic, could you try it please?
const util = require('util')
const chalk = require('chalk')

const defaultErrorMessage = (methodName, bold) =>
  `Expected test not to call ${bold(`console.${methodName}()`)}.\n\n` +
  `If the ${methodName} is expected, test for it explicitly by mocking it out using ${bold(
    'jest.spyOn'
  )}(console, '${methodName}').mockImplementation() and test that the warning occurs.`

const init = ({
  silenceMessage,
  shouldFailOnWarn = true,
  shouldFailOnError = true,
  shouldFailOnLog = false,
  errorMessage = defaultErrorMessage,
} = {}) => {
  const isSpy = (spy) => spy && spy._isMockFunction

  const flushUnexpectedConsoleCalls = (methodName, unexpectedConsoleCallStacks) => {
    if (unexpectedConsoleCallStacks.length > 0) {
      const messages = unexpectedConsoleCallStacks.map(([stack, message]) => {
        const stackLines = stack.split('\n')
        return (
          `${chalk.red(message)}\n` +
          `${stackLines
            .map((line, index) => {
              if (index === stackLines.length - 1) {
                return chalk.white(line)
              }
              return chalk.gray(line)
            })
            .join('\n')}`
        )
      })

      const message = errorMessage(methodName, chalk.bold)

      throw new Error(`${message}\n\n${messages.join('\n\n')}`)
    }
  }

  const patchConsoleMethod = (methodName) => {
    const unexpectedConsoleCallStacks = []

    const newMethod = (format, ...args) => {
      const message = util.format(format, ...args)
      if (silenceMessage && silenceMessage(message, methodName)) {
        return
      }

      // Capture the call stack now so we can warn about it later.
      // The call stack has helpful information for the test author.
      // Don't throw yet though b'c it might be accidentally caught and suppressed.
      const { stack } = new Error()
      if (stack) {
        unexpectedConsoleCallStacks.push([stack.substr(stack.indexOf('\n') + 1), message])
      }
    }

    let originalMethod = console[methodName]

    beforeEach(() => {
      console[methodName] = newMethod // eslint-disable-line no-console
      unexpectedConsoleCallStacks.length = 0
    })

    afterEach(() => {
      flushUnexpectedConsoleCalls(methodName, unexpectedConsoleCallStacks)
      console[methodName] = originalMethod
    })
  }

  if (shouldFailOnError) {
    patchConsoleMethod('error')
  }
  if (shouldFailOnWarn) {
    patchConsoleMethod('warn')
  }
  if (shouldFailOnLog) {
    patchConsoleMethod('log')
  }
}

module.exports = init

The code in the above PR is published as 2.2.2-alpha.0 if you want to try it.

A fix was published in v2.2.2

Sorry for the late response, and thank you! v2.2.2 is working like a charme. 🎉


Fix running gradient crashing sometimes

I've been experimenting a crash when I change the learning rate scheduler in the trainer:
step#: 1967  learning rate: 0.000933682  average loss: 10.9136      percent complete: 98.35%
burn-in finished

**************************** FATAL ERROR DETECTED ****************************

Error detected at line 234.
Error detected in file ../../external/dlib/dlib/../dlib/dnn/../statistics/running_gradient.h.
Error detected in function double dlib::find_upper_quantile(const T&, double) [with T = std::deque<double>].

Failing expression was container.size() > 0.

******************************************************************************

Relevant part of the code:
std::cout << "burn-in finished" << std::endl;
trainer.get_net(dlib::force_flush_to_disk::no);
trainer.set_learning_rate(1e-3);
trainer.set_min_learning_rate(1e-6);
trainer.set_learning_rate_shrink_factor(0.1);
trainer.set_iterations_without_progress_threshold(10000); // the next line does not execute
trainer.get_net();
std::cout << trainer << std::endl;

Maybe I am doing something wrong (the training is running on multiple GPUs, that's why I do the get_net stuff).
Anyway, adding that condition fixes the crash.

EDIT: I think this PR is wrong, let me run some more tests...

Honestly, I don't understand why exactly this crash is happening when I modify the scheduling in the trainer. But this fix seems a safe change, right?

The problem is that trainer.set_learning_rate() is calling previous_loss_values_to_keep_until_disk_sync.clear().  And then later on the code does probability_values_are_increasing_robust(previous_loss_values_to_keep_until_disk_sync) and you get this error (since these *_robust() have preconditions that these inputs aren't empty.
The right fix seems like

--- a/dlib/dnn/trainer.h
+++ b/dlib/dnn/trainer.h
@@ -1121,7 +1121,7 @@ namespace dlib
             }

             // if we haven't seen much data yet then just say false.
-            if (gradient_updates_since_last_sync < 30)
+            if (previous_loss_values_to_keep_until_disk_sync.size() < 30)
                 return false;

             // if the loss is very likely to be increasing then return true

Does that do the trick for you?

I have some trainings running, I will try it as soon as possible, thank you :)

It seems to work well, thank you :)

Sweet :)


How to validate input of entry

How would you implement input validation on an entry widget?
I found an this example in C and try to do the same in Rust.
I am struggling with signal_handler_block and signal_handler_unblock because I don't know how to get the SignalHandlerId.

The connect_blablabla() functions return the SignalHandlerId that you can use for this.

Ok but this kind of a vicious circle because I need the SignalHandlerId in the closure that I connect.

Those things are annoying. You could store it in a Rc<RefCell<Option<SignalHandlerId>>> outside the closure (or in some other way in your application state), and pass a reference to that into the signal handler closure to get access to it.

I guess there is no other way. Is g_signal_handlers_block_by_func could be made available eventually?

No as you don't have access to the function parameter you'd pass there. It's a private function specific to the closure you pass in, your closure (but boxed) becomes the user data.

Ok thank you


Breaks on nodejs 0.12, os.homedir() does not exist

After hacking this to be hardcoded, rest of app seems 0.12 compatible.
If you do not want to support node 0.12, please add something like { "engines" : { "node" : ">=4.0.0" } } to package.json

Ah, yes. I suppose I could use the homedir package instead...

try now

Confirmed working. Thanks for the superquick fix!


goproxy failed to get cloud.google.com/go

i download the master code if goproxy and build the goproxy executable grogram.  i use go v1.17.2.
i use the build out goproxy grogram on my test server to proxy my go module request.
i use a test server as the proxy server, start the goproxy with the following command:
./goproxy -cacheDir /root/goproxy/cache -exclude git.szl.lvlv -listen <IP_ADDRESS>:8081 -proxy https://goproxy.io

the git.szl.lvlv is my private test server's host name.  and i set this hostname in my local computer also.

on the test server, the git env is as follow:
{
        "AR": "ar",
        "CC": "gcc",
        "CGO_CFLAGS": "-g -O2",
        "CGO_CPPFLAGS": "",
        "CGO_CXXFLAGS": "-g -O2",
        "CGO_ENABLED": "1",
        "CGO_FFLAGS": "-g -O2",
        "CGO_LDFLAGS": "-g -O2",
        "CXX": "g++",
        "GCCGO": "gccgo",
        "GO111MODULE": "on",
        "GOARCH": "amd64",
        "GOBIN": "",
        "GOCACHE": "/root/.cache/go-build",
        "GOENV": "/root/.config/go/env",
        "GOEXE": "",
        "GOEXPERIMENT": "",
        "GOFLAGS": "",
        "GOGCCFLAGS": "-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2833939137=/tmp/go-build -gno-record-gcc-switches",
        "GOHOSTARCH": "amd64",
        "GOHOSTOS": "linux",
        "GOINSECURE": "git.szl.lvlv",
        "GOMOD": "/dev/null",
        "GOMODCACHE": "/root/go/pkg/mod",
        "GONOPROXY": "git.szl.lvlv",
        "GONOSUMDB": "git.szl.lvlv",
        "GOOS": "linux",
        "GOPATH": "/root/go",
        "GOPRIVATE": "git.szl.lvlv",
        "GOPROXY": "https://goproxy.io,direct",
        "GOROOT": "/root/go",
        "GOSUMDB": "sum.golang.org",
        "GOTMPDIR": "",
        "GOTOOLDIR": "/root/go/pkg/tool/linux_amd64",
        "GOVCS": "",
        "GOVERSION": "go1.17",
        "PKG_CONFIG": "pkg-config"
}

on my local computer, i clean all files in  ${GOPATH}/pkg/mod directory,
then i set the env with the followying command:
go env -w GOPROXY=http://git.szl.lvlv:8081

i want to use the goproxy of myself. to test this, i download the goproxy master branch also in my local computer, then i enter goproxy  source root dir and  enter the following command to build the goproxy.
go mod tidy

it turn out failed.
the output  is the following:
D:\go\goproxy>go mod tidy
go<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>Get<EMAIL_ADDRESS>read tcp <IP_ADDRESS>:57912-><IP_ADDRESS>:8081: wsarecv: An existing connection was forcibly closed by the remote host.
go: downloading github.com/prometheus/client_golang v1.9.0
go: downloading golang.org/x/mod v0.4.0
go<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>requires
<EMAIL_ADDRESS>Get<EMAIL_ADDRESS>read tcp <IP_ADDRESS>:57912-><IP_ADDRESS>:8081: wsarecv: An existing connection was forcibly closed by the remote host.

the go env in my local computer is:
{
        "AR": "ar",
        "CC": "gcc",
        "CGO_CFLAGS": "-g -O2",
        "CGO_CPPFLAGS": "",
        "CGO_CXXFLAGS": "-g -O2",
        "CGO_ENABLED": "1",
        "CGO_FFLAGS": "-g -O2",
        "CGO_LDFLAGS": "-g -O2",
        "CXX": "g++",
        "GCCGO": "gccgo",
        "GO111MODULE": "on",
        "GOARCH": "amd64",
        "GOBIN": "",
        "GOCACHE": "C:\\Users\\admin\\AppData\\Local\\go-build",
        "GOENV": "C:\\Users\\admin\\AppData\\Roaming\\go\\env",
        "GOEXE": ".exe",
        "GOEXPERIMENT": "",
        "GOFLAGS": "",
        "GOGCCFLAGS": "-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\\Users\\admin\\AppData\\Local\\Temp\\go-build4053673841=/tmp/go-build -gno-record-gcc-switches",
        "GOHOSTARCH": "amd64",
        "GOHOSTOS": "windows",
        "GOINSECURE": "",
        "GOMOD": "NUL",
        "GOMODCACHE": "C:\\Users\\admin\\go\\pkg\\mod",
        "GONOPROXY": "",
        "GONOSUMDB": "",
        "GOOS": "windows",
        "GOPATH": "C:\\Users\\admin\\go",
        "GOPRIVATE": "",
        "GOPROXY": "http://git.szl.lvlv:8081",
        "GOROOT": "D:\\Program Files\\Go",
        "GOSUMDB": "off",
        "GOTMPDIR": "",
        "GOTOOLDIR": "D:\\Program Files\\Go\\pkg\\tool\\windows_amd64",
        "GOVCS": "",
        "GOVERSION": "go1.17.2",
        "PKG_CONFIG": "pkg-config"
}

but, when i change the env PROXY of my local computer to not use the proxy. use the public goproxy.cn
go env -w GOPROXY=goproxy.io,direct
go mod tidy

it work ok!
D:\go\goproxy>go mod tidy
go: downloading github.com/prometheus/client_golang v1.9.0
go: downloading golang.org/x/mod v0.4.0
go: downloading github.com/prometheus/common v0.15.0
go: downloading github.com/prometheus/client_model v0.2.0
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/cespare/xxhash/v2 v2.1.1
go: downloading github.com/golang/protobuf v1.4.3
go: downloading github.com/prometheus/procfs v0.2.0
go: downloading golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e
go: downloading golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
go: downloading github.com/matttproud/golang_protobuf_extensions v1.0.1
go: downloading google.golang.org/protobuf v1.23.0
go: downloading github.com/google/go-cmp v0.4.0

i think if there is something wrong when is use the goproxy? or the goproxy route mode is something wrong?

$ go version

go version go1.17.2 windows/amd64

As we all know the reason, use HTTPS please.


HDDS-117. Add convenience methods for port management in DatanodeDetails

What changes were proposed in this pull request?
This change adds convenience methods for port management in DatanodeDetails
Please describe your PR in detail:

Added newRatisPort, newRestPort, newStandalonePort to create new ports
Added getRatisPort, getRestPort, getStandalonePort to get ports
Added setRatisPort, setRestPort, setStandalonePort to set ports
Removed recursion and reduced an extra method call from getPort
Updated files to use the new helper methods

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-117
How was this patch tested?
CI: https://github.com/ptlrs/ozone/actions/runs/11733186419

Thanks @adoroszlai. I have resolved the conflicts.

@adoroszlai, I will take a look at this today. Thanks for the tag.
@ptlrs, thanks for resolving the conflicts.

Thanks @ptlrs for the patch, @nandakumar131 for the review.


IoT Connectivity over TCP

We need to have approach where Aira agent can use telemetry from remote sensors. First step on this way is to use esp8266 board on sensor side . In this case we can use mobile internet connection and send data from sensor to telemetry agent over TCP.

What’s about technical specification here?

OSI protocol parameters
Codecs
Communication schemes

What’s about technical specification here?
* OSI protocol parameters

* Codecs

* Communication schemes

@Vourhey  when you will make release - pls use akru specification.

Implemented in release v0.2


git commands

@rishabh-bansal is this branch still active? Can you merge it with hactoberfest accepted tag?


bookmark box in gallery view on collection and search

Below the image there is a bookmark box.  Not sure what that does, but we should probably hide it:

CSS override display: none  and check if that  does not read, or override the partial to remove the checkbox.


Put code coverage in the data directory + support it in Docker

It does not work yet because we need a new build of LDC.

Merging #231 into v0.x.x will not change coverage.

Yep that's better

Rebased


Implementation of factories to provide Apache HTTP Clients

Adds factory beans for downstream projects to consistently create Apache HTTP Clients

@spencergibb I ended up just using the provided builders for the clients instead of reinventing the wheel.  I left the connection pools as is since the number of arguments is rather fixed.

@spencergibb want to take another pass at this?

ping @spencergibb


Overriding task.dataset.use_cache=false for the initial run

this may be unnecessary, it seems to depend on the machine the code runs.

Not needed, this happened when the dataset was loaded from QNAP.


Simple redirect Example

I couldn't find a simple workable example of transferring a user to a different page from within a normal function. I can do it in the routes declaration like   <Redirect from="here" to="index" />
and with a link anywhere else using the <Link to="index"><i>lets go!</i> </Link> .
However now id like to direct to "index" just from within a function like:
  onDelete: function(){
    var answer = prompt("type yes if you want to delete this note");
    if(answer == "yes") {
      localStorage.removeItem(this.props.route);
      REDIRECT BACK TO INDEX
    }
  }

Thanks for your help! I'm sure its an available method, I just couldn't find it

Have you seen this? http://rackt.github.io/react-router/#Navigation
Just add in the Navigation mixin en you can go: this.transitionTo(routename, params, query);
whenever you want in the component.

What's the difference between redirect and transitionTo?

The redirect method is specified on the Transition object which you get in the transition hooks.
For example if you add the willTransitionTo static [lifecycle method](http://rackt.github.io/react-router/#Route Handler), you will get a Transition object and you could intercept the default transition and redirect it to another route.
The transitionTo method can be used anywhere else in your logic to trigger a route change.

Ah, ok. Thanks!


All shapes in ClarityIcons should be loaded by importing a single module in TypeScript.

Select one ...  (check one with "x")
[ ] bug
[x] feature request
[x] enhancement

Expected behavior

It should be possible to import all shape sets through a single import module.
Actual behavior

Right now, if users want to load all shapes they have to import multiple different shapes like this:
import 'clarity-icons';
import 'clarity-icons/shapes/essential-shapes';
import 'clarity-icons/shapes/social-shapes';
import 'clarity-icons/shapes/technology-shapes';

Reproduction of behavior

Include a link to the reproduction scenario you created by forking one of the Clarity Plunker Templates:

Environment details

Angular version: 2.0.X

Clarity version:

OS and version:

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

What we wind up doing here may depend on our solution to #407 and how we decide to handle loading on the icon library


Remove explicit jest dependency

Signed-off-by: Joshua Li<EMAIL_ADDRESS>Description
Jest is already a dependency in dashboards core, removing it in gantt chart
Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] New functionality includes testing.

[x] All tests pass, including unit test, integration test and doctest

[ ] New functionality has been documented.

[ ] New functionality has javadoc added
[ ] New functionality has user manual doc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #25 (a0ea17f) into main (ba2911e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #25   +/-   ##
=======================================
  Coverage   95.30%   95.30%
=======================================
  Files           5        5
  Lines         149      149
  Branches       45       45
=======================================
  Hits          142      142
  Misses          7        7

Continue to review full report at Codecov.

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


[REQUEST]/question

hello im wondering why there isnt a forge version of this mod for 1.20.1

because there's a million tech mods that are basically the same on forge already

good point


Logo in README can't be fully seen #8160

Added black background for dark mode and white background for light mode

@benitaanawonah  - when you get a moment, can you also please update your GitHub profile with a name - it will be easier to add you to the contributors list that way.
Also, can you please update the PR description with a reference to the bug/issue that this PR resolves.
Bonus points - add screenshots of your own validation of the new images in the various ways it can show;

Browser normal
Browser dark mode
Browser normal in windows high contrast dark mode
Browser normal in windows high contrast light mode

Thanks again for taking the time to make a contribution.

This is the logo appearance in browser normal

This is the logo appearance in browser dark mode

This is the logo appearance in windows high contrast dark mode

This is the logo appearance in windows high contrast light mode

It is ready for another review

Merged in c108de2bb5! In the future please try to make pull requests from other branches than main so they’re easier for us to merge.


access to undefined reference in seed_threadrngs!

Ran into this:
(LyceumAI) pkg> test
   Testing LyceumAI
 Resolving package versions...
LyceumAI.jl: Error During Test at /home/colinxs/workspace/juliadev/LyceumAI/test/runtests.jl:30
  Got exception outside of a @test
  TaskFailedException:
  UndefRefError: access to undefined reference
  Stacktrace:
   [1] getindex at ./array.jl:744 [inlined]
   [2] ht_keyindex2!(::Dict{BigInt,Random.DSFMT.GF2X}, ::BigInt) at ./dict.jl:326
   [3] setindex!(::Dict{BigInt,Random.DSFMT.GF2X}, ::Random.DSFMT.GF2X, ::BigInt) at ./dict.jl:381
   [4] calc_jump(::BigInt, ::Random.DSFMT.GF2X) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/DSFMT.jl:179
   [5] calc_jump at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/DSFMT.jl:177 [inlined]
   [6] randjump at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Future/src/Future.jl:39 [inlined]
   [7] macro expansion at /home/colinxs/.julia/packages/LyceumBase/jOq5k/src/Tools/threading.jl:21 [inlined]
   [8] (::LyceumBase.Tools.var"#750#threadsfor_fun#52"{BigInt,Array{Random.MersenneTwister,1},UnitRange{Int64}})(::Bool) at ./threadingconstructs.jl:61
   [9] (::LyceumBase.Tools.var"#750#threadsfor_fun#52"{BigInt,Array{Random.MersenneTwister,1},UnitRange{Int64}})() at ./threadingconstructs.jl:28
  Stacktrace:
   [1] wait(::Task) at ./task.jl:251
   [2] macro expansion at ./threadingconstructs.jl:69 [inlined]
   [3] #seed_threadrngs!#51(::BigInt, ::typeof(seed_threadrngs!), ::Array{Random.MersenneTwister,1}, ::Int64) at /home/colinxs/.julia/packages/LyceumBase/jOq5k/src/Tools/threading.jl:18
   [4] #seed_threadrngs! at ./none:0 [inlined]
   [5] #seed_threadrngs!#50 at /home/colinxs/.julia/packages/LyceumBase/jOq5k/src/Tools/threading.jl:4 [inlined]
   [6] seed_threadrngs!(::Int64) at /home/colinxs/.julia/packages/LyceumBase/jOq5k/src/Tools/threading.jl:4
   [7] top-level scope at /home/colinxs/workspace/juliadev/LyceumAI/test/runtests.jl:32
   [8] top-level scope at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Test/src/Test.jl:1107
   [9] top-level scope at /home/colinxs/workspace/juliadev/LyceumAI/test/runtests.jl:32
   [10] include at ./boot.jl:328 [inlined]
   [11] include_relative(::Module, ::String) at ./loading.jl:1105
   [12] include(::Module, ::String) at ./Base.jl:31
   [13] include(::String) at ./client.jl:424
   [14] top-level scope at none:6
   [15] eval(::Module, ::Any) at ./boot.jl:330
   [16] exec_options(::Base.JLOptions) at ./client.jl:263
   [17] _start() at ./client.jl:460

coming from
https://github.com/Lyceum/LyceumBase.jl/blob/f9d133243ff7de191175603a7ae6ad310e2fc1bc/src/Tools/threading.jl#L7
Not really sure how this is happening as we clearly assign to rngs[1]. 06753943c788e7f78f04cf03460a8c0085665dfb adds a few "hail mary" attemps to fix this, namely 1) not inlining the function and 2) using a local variable MT for the call to randjump, but I don't see how this would actually do anything to address the issue (it should be semantically the same thing?!). That commit also adds some assert statements to hopefully catch the issue before the UndefRefError.
This issue is mostly just to track the problem and see if it comes up again.

Just ran into it again when running pkg> test...

So I think the issue is in how I'm testing, not in seed_threadrngs! itself


OS X Share Extension

Please include a Mac OS X Share Extension with Goofy, so that you can share webpages and the like in Facebook Messenger.

That would be awesome!

I don't think this would be useful. It's so easy on macOS to just copy and paste the address.

That’s equally true for every Safari extension, and yet they’re still useful.
Here’s the steps for copying and pasting:

Hit Command-L to enter the address field.
Hit Command-C to copy the address.
Find Goofy.
Launch Goofy.
Wait for Goofy to load.
Choose a recipient.
Paste the URL into the appropriate conversation in Goofy.
Write whatever other text you wish to add, and hit Return.

Here’s the steps for using a Safari extension:

Click on the Extensions menu.
Click on Goofy.
Select a recipient.
Add whatever text you want, and click Send.

It may seem trivial to eliminate four steps, but that’s half of them, and is significantly more convenient (especially the elimination of 3, 4 and 5).

On Sep 23, 2016, at 4:19 PM, Gruber Kristóf<EMAIL_ADDRESS>wrote:
I don't think this would be useful. It's so easy on macOS to just copy and paste the address.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/danielbuechele/goofy/issues/274#issuecomment-249305009, or mute the thread https://github.com/notifications/unsubscribe-auth/AC6Nxs4X-23lPjs17JUJeoGsJK6_WUzZks5qtEJcgaJpZM4JtKqs.

I agree on this and think it would be a great addition to Goofy. However, I need to see if I have time to implement that. PRs are welcome of course!

Closed…why?


Ban Appeal

IGN: SamNguyen1
Ban Reasoning: X-ray
Reasoning: No real reason, I had an x-ray in my mod folder for my single player world and I guess it was detected by the admins
Appeal: For the past week I've been breeding eggs and just staying AFK at my base while it breeds/hatches, I was actually banned while AFK. Even if you look at the logs, I don't even think I went mining except for coal, and x-ray was not utilized as I know it is bannable on the server. I have removed the x-ray from my mod folder and it will not be done again. It was a nice 23+ days on the servers, wonderful staff/community, hopefully I get to be apart of it again.
Thank you,
Sam

Unbanned, handled in DMs.


Switch to new resources for Rosa HCP cluster

the errors happened at task deploy-cluster are expected, because they are using the new resources, for example, oidc-config id, operator-roles, etc.

/retest

ROSA token updated on vault tests are expected to pass.

/retest

/retest


Gravity Sync

What feature would you like added?
Based upon a fresh instance of pihole on both docker tenants.
Feature
Once the teleport completes successfully, then trigger gravity sync on the secondary pihole.
Observations
I noticed that after a successful sync between master and secondary pihole tenants, the adlists on the secondary did not appear to be downloaded.
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

Health status of this list:
List was not downloaded so far

This list was added to Pi-hole
2 hours ago (2022-09-14 19:34:54)

Database entry was last modified
8 minutes ago (2022-09-14 21:51:22)

The list contents were last updated
N/A

Number of domains on this list:
N/A

Number of invalid domains on this list:
N/A

Database ID of this list:
1

Version
1.1.1 (latest)
Log output
No response

Ah, great catch! Thanks for this. I was hoping the teleporter would automatically take care of this but I guess not. I'll look into this further and see what's involved in making sure this gets run

I will test further as I have been hit by the permission issues in docker pihole, took a while to figure that one out. This manifested in failures to write to the adlist on the dB. Setting env WEB_UID to the container's pihole user resolved it. For now at least.
So this issue might be false, I will try to confirm.

The issue stills stands for me. I added a new item to the adlist on the primary.
Restarted orbital-sync.
Waited for the sync to complete.
The new item appeared in the adlist on the secondary pihole, but the status of all items shows as above in my original post.
Manually triggering an update of gravity refreshes without an issue.

@mentalsoup I've published a beta version of the container that should resolve this. The image has been published as: mattwebbio/orbital-sync:1.2.2-beta.0
If at some point you have the time to try it, I'd love to hear if it works for you 😄

Thanks @mattwebbio, great work. I have updated to mattwebbio/orbital-sync:1.2.2-beta.0 and the sync has completed successfully on both targets. No errors, but this has spawned a new idea, I will raise a new feature request.
I am going to switch back to the latest image and await the update from there.

Perfect! I've gone ahead and released version 1.3 of the container with this change 🙂


fix: clarity highlighting

This fixes some Clarity highlighting issues, and adds support for other kinds of syntax:

Fix number formatting and comments (Clarity doesn't have fractional literals, and comments must have two semicolons).
Detect Stacks address literals
Detect function calls
Detect operators

Rebased this PR with master to get CI building

Rebased this PR with master to get CI building 🤞

Thanks!


Hardware Access

Maybe could write my own code to make permission requests available to the CMP.
But, Moko seems to be a very good library that solves this hard work.


Pgebheim/ch14959/update search functionality

https://app.clubhouse.io/augur/story/14959/update-search-functionality
split out search fields.

What about the old table load? Does that stay?

Updated to leave migration files, just removed the first inserts in the old search_en table.


Custom MediaSources, resolving MediaItems from remote API, and metadata updates

I've searched around extensively on this repository, on the ExoPlayer repository, on stack overflow, and I've been browsing through the source to determine the best course of action for my use case but I haven't really found much, and I've run into issues or gaps in the explanation on the information I have found.
The use case I have seems like it calls for custom media sources, for the most part it isn't complex, it's a case of loading the media based upon an internal URI system. But there are some additional complexities when it comes to the type of media to load.
Key details:

I'm using ExoPlayer as my player implementation under Media3
I am aiming to treat Media3 (and the underlying ExoPlayer) as my single source of truth for playback, i.e. all information shown in the player UI and media notification should come from Media3 and the media metadata. (With the notification being automatic out of the box in media3).
The content I am loading comes from a remote datastore API, I am aiming to encapsulate this within the Media3/ExoPlayer part of my app. In other words, As far as my app UI is concerned, it just needs to add a MediaItem that uses request metadata to point to one of my internal URIs (something like mydatastorescheme://podcast/{id}) and the rest is handled opaquely inside the Media code.
I have many different types of content to load, all audio, but things like podcasts, audio books, live radio, etc.

In Media3 we have the MediaSession callback with the required onAddMediaItems function. This function works fine for loading the correct audio URLs and metadata for a particular bit of content referenced by one of my internal URIs. e.g. I can take the request metadata, lookup in my system what mydatastorescheme://podcast/1234 is, get its title, description, presenter name, audio stream URL, etc and I can fill out a MediaItem with that information.
However this approach seems somewhat naive and could balloon out a bit when it comes to supporting a wide variety of content types as simple as it is initially. I encountered a roadblock here when it comes to live radio streams, as the MediaItem is immutable and I have a need to hit another part of my API at scheduled times in order to update certain parts about the metadata (i.e. what radio program is currently airing, who is presenting, etc). This lead me down the path of looking more at the integration with ExoPlayer and creating custom media sources.
I've been attempting to set this up for the last few days with limited success and with some uncertainty over whether I'm using things in the right way.
The first problem I'm tackling is loading simple, on demand content with unchanging metadata (like the podcast example above). I've looked at both MediaSource factories and DataSource factories for achieving this (particularly the ResolvingDataSource). There's a few different roadblocks I've run into with trying each of these approaches:

Using the DefaultMediaSourceFactory with a ResolvingDataSource doesn't work to resolve my content before creating a media source as the media sources are created before the data source is used, the DefaultMediaSourceFactory also aborts if the local configuration of the MediaItem is null, which it is for me at this stage since the RequestMetadata still needs to be resolved.
It would be wrong to simply put my internal URL from the RequestMetadata into the local configuration, as the type of the media is still unknown at this point, so the DefaultMediaSourceFactory wouldn't be able to correctly select the right MediaSource and would just fall through to the default ProgressiveMediaSource.
Using a CompositeMediaSource I am able to set up a loader to resolve my internal URI to an actual MediaItem with local configuration and metadata, I can then pass this to DefaultMediaSourceFactory to get a MediaSource which I can prepare as a child of my CompositeMediaSource. However, I'm not certain if this is an ideal approach (using a media source factory inside another media source), I've seen a question asked about this without really getting an answer on it specifically (here: https://github.com/androidx/media/issues/17)
Using the CompositeMediaSource approach I can get the audio content playing but the metadata doesn't seem to update. From tracing through the code execution it seems like the block that builds new metadata from incoming playback info (in ExoPlayer::updatePlaybackInfo) isn't getting run due to either mediaItemTransitioned being false or the staticMetadata being the same across the previous and new playback info objects. My setup is very similar to that seen in the above linked question. In onChildSourceInfoRefreshed I'm simply calling refreshSourceInfo with the new timeline as seen in some built-in composite media sources like WrappingMediaSource. I'm unsure why this doesn't carry through and update the metadata in the player.
Essentially I'm hoping to reuse as much of the existing media source setup as possible, just wrap it, but I have a need to perform some network operations before deciding upon which media source to go with, the MediaSource.Factory seems like an ideal place for this except that it must immediately return a value.

If I can get that working then the next step would be working out what's required (likely in another custom MediaSource) to load a stream for playback, then call an API at specific times to fetch the metadata for the next airing program (API has the current and next available with timestamps for the start and end times of each). This feels like it's a job for periods on a timeline? But the mechanism through which to make those schedules API calls and surface the metadata is still unclear to me.
The documentation doesn't really have much info in it for worked examples on customized Media Sources, and resolving media lazily from an internal API seems to be a common-ish question just with different nuances. I read through another example of this here: https://github.com/google/ExoPlayer/issues/5883 though it still leaves some questions unanswered (such as my questions above on the use of a factory inside a media source, or the issue with metadata now flowing through from the added child source to the player.
If I could get some guidance on these questions or if this is completely the wrong direction some guidance of what the right direction is, then that would be much appreciated.

I think you're hitting a couple of different existing issues/feature requests:

https://github.com/androidx/media/issues/33
https://github.com/google/ExoPlayer/issues/3165

To specifically answer some of the parts of your post:

I encountered a roadblock here when it comes to live radio streams, as the MediaItem is immutable and I have a need to hit another part of my API at scheduled times in order to update certain parts about the metadata (i.e. what radio program is currently airing, who is presenting, etc).

I think this would be resolved by #33? (without needing a custom media source)

Using the DefaultMediaSourceFactory with a ResolvingDataSource doesn't work to resolve my content before creating a media source as the media sources are created before the data source is used, the DefaultMediaSourceFactory also aborts if the local configuration of the MediaItem is null, which it is for me at this stage since the RequestMetadata still needs to be resolved.

If you want to use ResolvingDataSource I think you should either always put your custom URI in the MediaItem.localConfiguration.uri (before you even pass the MediaItem to MediaController), or move it there during MediaSession.Callback.onAddMediaItems. This means that MediaItem.localConfiguration.uri will be non-null when it hits the MediaSource.Factory and is passed to ResolvingDataSource, at which point you can transform it to the real URI.

It would be wrong to simply put my internal URL from the RequestMetadata into the local configuration, as the type of the media is still unknown at this point, so the DefaultMediaSourceFactory wouldn't be able to correctly select the right MediaSource and would just fall through to the default ProgressiveMediaSource.

This reflects a limitation of DefaultMediaSourceFactory, rather than something inherently 'wrong' imo. Improving this is tracked by #3165. Given this limitation, and the fact you're able to run all your resolution code inside MediaSession.Callback.onAddMediaItems, that seems like possibly the best approach until #3165 is implemented? If I read your post properly, the only part missing when you followed this approach is updating the metadata during playback (note that ICY metadata from internet radio will get updated during playback).

The documentation doesn't really have much info in it for worked examples on customized Media Sources

This is sort of intended - customising MediaSource implementations is very fiddly, and we don't expect many developers to need to go down this route. It should only really be needed if you're trying to support a completely different streaming format (e.g. something like HLS or DASH, but different), or something with very fiddly metadata like server-side ad insertion. Just adding an async resolution layer (as you're trying to do here) shouldn't need a custom MediaSource.

Is there an expected resolution timeframe for #33? I can populate my MediaItem in onAddMediaItems with my best available metadata at the time of adding (i.e. podcast episode name and show name for a podcast, radio station name for a radio station), this would also allow the DefaultMediaSourceFactory to correctly pick up HLS streams. But within the next 1-3 months I will have to ensure that the metadata is updated with information about the current program/presenter, sometimes the current track, chapters in audiobooks, etc and as far as I'm aware we don't have this information coming through a mechanism like ICY, only via an API.

Is there an expected resolution timeframe for https://github.com/androidx/media/issues/33?

I'm afraid we don't have a timeline for this.

Picking up another comment you made on https://github.com/google/ExoPlayer/issues/11031:

Regarding the topic of metadata during playback. The docs mention a mechanism for receiving this metadata by "adding a MetadataOutput to the player" but provides no further information on how to do that. https://exoplayer.dev/retrieving-metadata.html#during-playback, if there is a mechanism through which other customizations can write to such a MetadataOutput would that be an appropriate solution to support the live radio case?

This documentation is a little stale, apologies: MetadataOutput has been merged into Player.Listener. I will update the docs.

So, in the absence of #33 and #3165, is there any other mechanism for sideloading the pushing of metadata updates to the player that doesn't get too fiddly? A way to manually trigger Player.Listener updates? or a custom MetadataRenderer? or a thin wrapping MediaSource that injects information into the Timeline.Periods?
Or at this stage does this need to be handled separately to Media3 (i.e. updating the app player UI and OS Media Notification without reference to the MediaMetadata coming from the Player)

I've just fixed a small mistake in my comment above, where I originally said:

If you want to use ResolvingDataSource I think you should either always put your custom URI in the MediaItem.localConfiguration.uri (before you even pass the MediaItem to MediaController), or move it there during MediaSession.Callback.onAddMediaItems. This means that MediaItem.localConfiguration.uri will be non-null when it hits the MediaSource.Factory and is passed to ResolvingDataSource, at which point you can transform it to the real URI.

This missed the fact that MediaItem.localConfiguration.uri is not transferred from MediaController to the session, so you have to move the URI from MediaItem.requestMetadata to MediaItem.localConfiguration.uri during MediaSession.Callback.onAddMediaItems - sorry for that.

A way to manually trigger Player.Listener updates?

I have not tested this, but you may be able to use ForwardingPlayer to achieve this. You would subclass ForwardingPlayer and hook the addListener method to add your own wrapper around the listener, such that you can manually invoke onMediaMetadataChanged whenever you like. You would then pass this ForwardingPlayer subclass to new MediaSession.Builder(...). This should result in your manual metadata changes propagating to the media session, and subsequently ending up in notifications etc. If you get this working it would be great if you could reply with your findings on #33.
For consistency, you will need to ensure that you also change the result of Player.getMediaMetadata when you invoke onMediaMetadataChanged. See general notes on maintaining consistency when subclassing ForwardingPlayer here: https://exoplayer.dev/customization.html#intercepting-method-calls-with-forwardingplayer
One thing to note: When you override ForwardingPlayer.addListener, you should delegate to super.addListener and not directly to delegate.addListener. This will ensure that the correct Player instance (your ForwardingPlayer subclass) is passed to Player.Listener.onEvents.

you may be able to use ForwardingPlayer to achieve this

This works. People are doing this: #256, #246

Thank you, I'll try that approach in the next week and report back

Closing because I think the question has been answered and the pending feature requests are tracked elsewhere.

I know I said next week in my comment previously but priorities ended up shifting a bit and I haven't had much of a chance to look at this.
Taking a look now I assume the approach is to override the getMediaMetadata() method in the ForwardingPlayer to return the desired metadata, and also triggering appropriate calls to onMetadata() in any ForwardingListeners added to the player to assist with UI/Notification updates. Does this sound correct and in line with the expected usage of ForwardingPlayer?
I assume that since the linked issue #246 is still open there is still a need for some additional invalidation in order to force the media notification to pull updated metadata? or forcing the media notification to check for new metadata is currently not possible?

Taking a look now I assume the approach is to override the getMediaMetadata() method in the ForwardingPlayer to return the desired metadata

Yep, this sounds right.

and also triggering appropriate calls to onMetadata() in any ForwardingListeners added to the player to assist with UI/Notification updates.

You will want to trigger onMediaMetadataChanged(), not onMetadata() - it is documented as follows:

Called when the value of getMediaMetadata changes.

Also ForwardingPlayer.ForwardingListener is private, so I wouldn't expect you to interact with that type directly. You should just be able to interact with the Player.Listener type, and as described above in https://github.com/androidx/media/issues/258#issuecomment-1453449978 you can get a reference to Player.Listener instances being added to your ForwadingPlayer subclass by overriding ForwardingPlayer.addListener.

Hey @icbaker,
Thanks for the suggestion with the ForwardingPlayer. I've implemented it, in order to update the media item (audio stream) metadata from a different source other than the initial or in-stream metadata.
So far it works quite well, but somehow the ICY metadata keeps getting delivered to listers that attach to the MediaController build from the Session which uses the ForwardingPlayer. (The notification e.g. only shows the metadata I propagate and not the ICY metadata)
I assumed that the ForwardingPlayer subclass which is passed to new MediaSession.Builder(...), would be the MediaController I get with MediaController.Builder(context, mediaSessionToken), but that doesn't seem to be the case.
Am I getting something wrong here?

@icbaker Yes, totally right.
The icy metadata is quite limited and we try to present only the richer information from an external API, but we might need the icy metadata as a trigger, though. So we can't totally block any icy onMediaMetadataChanged calls from within the actual player.
The idea based on your suggestion was, catch onMediaMetadataChanged calls in the ForwardingPlayer (maybe use them as a trigger to fetch 'richer' metadata from an api) and then call onMediaMetadataChanged with custom metadata on every attached listener.

Thanks - this sounds slightly different to the original question in this thread. Rather than re-opening a new issue, would you mind filing a new issue (you can just copy the content from your two comments here), and I'll follow up there. It would also be helpful to include a code snippet showing exactly how you've 'intercepted' the onMediaMetadataChanged call inside your ForwardingPlayer subclass.


[BUG] Many scheduled messages dropped

Describe the bug
Giel Bremmers reported that he was seeing a regression where some scheduled messages were being dropped.
To Reproduce
I was able to reproduce this with the console
midi endpoint send-message 0x21234567 --count 100 -o 2000000
In my case, only 26 messages were received. I restarted the service and ran the test again, and only 25 messages were received.
Note that sending smaller numbers of messages (like 10) doesn't repro the problem.

Describe the bug
Same issue we found.
To Reproduce
We are using ProtoZOA with following firmware.
https://github.com/midi-mma/Amenote_Protozoa/blob/main/Releases/V0.4/ProtoZOA_Main.uf2
ZoA_UUT.uf2.zip
When "5" button on ProtoZOA, it will send UMP message(Note On) with 500usec interval, "3" means 300usec.
When ProtoZOA sends continuously UMP MIDI 2.0 Note On messages with interval e.g. 500usec, then it seems that some scheduled messages were being dropped, around 100,000 messages.

Thanks. Currently working on this issue.

@dmiura

To Reproduce We are using ProtoZOA with following firmware. https://github.com/midi-mma/Amenote_Protozoa/blob/main/Releases/V0.4/ProtoZOA_Main.uf2 ZoA_UUT.uf2.zip When "5" button on ProtoZOA, it will send UMP message(Note On) with 500usec interval, "3" means 300usec.
When ProtoZOA sends continuously UMP MIDI 2.0 Note On messages with interval e.g. 500usec, then it seems that some scheduled messages were being dropped, around 100,000 messages.

There's a thread on Discord about this issue as well. I put together an interim build tonight to test. If you want to try it out, please do. There's some additional context in that thread as well.
https://discord.com/channels/980245825202552942/1186980629829664818/1187293982812807199


None needs to be allowed when setting/getting anchor names.

Fixed in https://github.com/robofab-developers/fontParts/commit/ea1e01200959193fe2ce230b36dfc60740f56e17


unable to use poll_next() from Channel's Stream impl (with futures_core enabled, possibly two runtimes conflict?)

Describe the bug
Unable to use .poll_next() on a Channel<Option>.
To Reproduce
Steps to reproduce the behavior:

Add crate whisk, version 0.11.0, with features futures_core
Add crate tokio, version 1.28.2, features: rt-multi-thread, macros
Create channel with Channel::new()
clone channel and give clone to tokio async task (two runtimes?, am not using async::main)
no method 'poll_next' found for struct 'Channel<Option>' (the original channel pointer)

Expected behavior
the method 'poll_next' returns an option within a for loop:
Some(VideoUpdate)
or None for channel has been cleared
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

OS: [e.g. iOS]
Linux 5.15.0-71-generic #78~20.04.1-Ubuntu SMP Wed Apr 19 11:26:48 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Additional context
I am pretty new to programming but I imagine there could be some conflicts between two async runtimes pasts and tokio,
I aim for my crate to be easily made nostd, but also trying to balance that with readability to a client who does not understand
the details, so using tokio's task and writing it like a thread spawn with task::spawn is very nice, and I would love to be able to
understand more about how I would create a similar interface using only pasts as nostd is the end goal.

Just tried it without tokio, just using pasts::Executor which wasn't so hard to dress up. Same error, I suppose I am just not understanding Streams somehow.

@smokytheangel0 Thanks for opening an issue!
I can't tell what's going on with your code with the context given.
I wrote up a whisk + tokio example following your steps and could not reproduce the issue.  Maybe it will be helpful?

understand more about how I would create a similar interface using only pasts as nostd is the end goal.

I just realized that whisk has a bug, where if you enable the pasts feature, whisk won't run on no-std anymore (because it pulls in the pasts/std feature).  I'll work on fixing it and making a no-std example.

understand more about how I would create a similar interface using only pasts as nostd is the end goal.

I just realized that whisk has a bug, where if you enable the pasts feature, whisk won't run on no-std anymore (because it pulls in the pasts/std feature). I'll work on fixing it and making a no-std example.

I fixed the bug, and released whisk 0.12.0.  Also created a no-std binary example here.


fix: Another try to fix the height reset upon submission

#11  👈
main

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

Join @GoodM4ven and the rest of your teammates on  Graphite


Where UUIDs are expected change the type from String

What problem does the pull request solve?
Changes the external API to ensure that UUID are passed instead of a String
Checklist

[x] I’ve used the pull request template
[ ] I’ve written unit tests for these changes
[ ] I’ve updated the documentation in

[ ] notifications-tech-docs repository
[x] CHANGELOG.md

[ ] I’ve bumped the version number

[ ] in src/main/resources/application.properties
[ ] in pom.xml

Is the improvement this gives worth making a breaking change to service’s code? Do we think consumers are handling UUIDs as UUIDs in their code, or just strings?

Closing this because there hasn’t been any traction on it. Can always reopen if we still want it


Add AUR package

AUR: https://aur.archlinux.org/pkgbase/nanomq-git

Codecov Report
Patch coverage: 5.86% and project coverage change: +12.97 :tada:

Comparison is base (f3163b4) 4.14% compared to head (d4b4d52) 17.12%.

:exclamation: Current head d4b4d52 differs from pull request most recent head 9607b0c. Consider uploading reports for the commit 9607b0c to get more accurate results

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1224       +/-   ##
===========================================
+ Coverage    4.14%   17.12%   +12.97%
===========================================
  Files          24       17        -7
  Lines        7140     5105     -2035
===========================================
+ Hits          296      874      +578
+ Misses       6844     4231     -2613

Impacted Files
Coverage Δ

nanomq/bridge.c
0.00% <0.00%> (ø)

nanomq/cmd_proc.c
0.00% <0.00%> (-12.50%)
:arrow_down:

nanomq/conf_api.c
0.00% <0.00%> (ø)

nanomq/rest_api.c
0.00% <0.00%> (ø)

nanomq/web_server.c
0.00% <0.00%> (ø)

nanomq/webhook_inproc.c
0.00% <0.00%> (ø)

nanomq/apps/broker.c
21.07% <7.69%> (+3.08%)
:arrow_up:

nanomq/pub_handler.c
49.70% <27.50%> (+48.79%)
:arrow_up:

nanomq/sub_handler.c
61.37% <45.00%> (+16.54%)
:arrow_up:

nanomq_cli/dds2mqtt/mqtt_client.c
63.58% <62.50%> (+63.58%)
:arrow_up:

... and 1 more

... and 10 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Sure！ Your help is highly appreciated!
Any chance we could know about the download numbers?

Sure！ Your help is highly appreciated! Any chance we could know about the download numbers?

Use yay-S nanomq-git users to automatically download source code, compile, and install (this is how AUR works)

BTW how to make arch linux version always sync with github?

Sure！ Your help is highly appreciated! Any chance we could know about the download numbers?

Use yay-S nanomq-git users to automatically download source code, compile, and install (this is how AUR works)

I mean, the number of how many times nanomq has been downloaded at arch linux

BTW how to make arch linux version always sync with github?

By using the latest version number of push on my side, users will receive updates.
Users update locally by themselves

Sure！ Your help is highly appreciated! Any chance we could know about the download numbers?

Use yay-S nanomq-git users to automatically download source code, compile, and install (this is how AUR works)

I mean, the number of how many times nanomq has been downloaded at arch linux

Sorry, I can't see the downloads directly in the background, but you can get the corresponding downloads through a third party or an official monitoring platform.
https://wiki.archlinux.org/title/Arch_User_Repository
https://repology.org/project/nanomq/packages
https://github.com/archlinux/aur/tree/nanomq-git


use wildcard support in tags

replace combiners with new wildcards where appropriate
example:
https://github.com/BAMWelDX/weldx/blob/eb6ef561128aa71a00d0376cf7e72584f329e92c/weldx/asdf/schemas/weldx.bam.de/weldx/datamodels/single_pass_weld-1.0.0.schema.yaml#L143-L155

should we also replace some of the version numbers in referenced tags with a wildcard?
I feel like for base ASDF classes like ndarray that would be a good call since we rely on the  ASDF library anyway.
tag: "tag:stsci.edu:asdf/core/ndarray-1.0.0" -> tag: "tag:stsci.edu:asdf/core/ndarray-*"
(or play it safe with tag: "tag:stsci.edu:asdf/core/ndarray-1.*" ?)


Delete SelectMSVCRuntime.cmake.

Vcpkg already contains this logic by itself and it might produce wrong results if vcpkg is not being used.

This change is

/gcbrun

/gcbrun


Remove HEAD-handling hack.

Description
Finishing https://github.com/opensearch-project/opensearch-py/pull/699.
Issues Resolved
Closes https://github.com/opensearch-project/opensearch-py/pull/699.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

The unreleased opensearch integration test failure looks like something unrelated, will track.


Error in View dashboard

Description
(Add images if possible)

Steps to reproduce
error occurs using the button view dashboard in landscape page. But can access successfully from project page.

tested with multiple landing pages and projects.It works. My guess is this was a one off error maybe because of dropping some projects at the database. Will keep an eye out for this during the end to end testing.

Rechecking as mentioned by Tran that he saw this today.

fixed passing params.projectId


⚠ Bofrost.be has degraded performance

In 25cd6a1, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1337 ms

Resolved: Bofrost.be performance has improved in af09a31.


luci-network: TypeError while editing wireless network on second radio on gl-mt1300_v1

Steps to reproduce:

Perform a fresh install or reset on hardware with two radios, such as GL-iNet MT1300. (This isn't required, but ensures starting from a clean install.)
Go to: Network → Wireless
Ensure one wireless network on each radio, adding wireless networks as needed (defaults for networks ok).
Edit second wireless network (radio1.network1), change SSID, then click Save, then click Dismiss. (Save doesn't dismiss dialog like expected, possibly start of bugged behavior)
Click Edit button for the second wireless network again.

Actual behavior:
UI presents the error "TypeError chan.options[0] is undefined" and no edit dialog is shown.
Expected behavior:
The dialog for editing wireless network is displayed.
Additional Information:
root@OpenWrt:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='21.02.3'
DISTRIB_REVISION='r16554-1d4dea6d4f'
DISTRIB_TARGET='ramips/mt7621'
DISTRIB_ARCH='mipsel_24kc'
DISTRIB_DESCRIPTION='OpenWrt 21.02.3 r16554-1d4dea6d4f'
DISTRIB_TAINTS=''

Some other notes:

What exactly is edited on the wireless networks doesn't seem to matter, but SSID consistently reproduces.
Adding a new wireless network on the second wireless interface (radio1) gives the same error.
Editing wireless networks on the second wireless interface works as expected prior to editing the wireless network on the first radio.
This works on a GL-AR750S with OpenWrt 19.07.3 and 21.02.3 (after installing kernel modules for hardware support). I'm not sure why the hardware would matter.

This usually happens when iwinfo cannot identify the second radio phy. Please provide the output of uci show wireless (strip passwords is needed).

Triggering the behavior doesn't require a Save & Apply, just a Save on the dialog. Edited the issue description for that.
Fresh install info:
root@OpenWrt:~# uci show wireless
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.path='1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
wireless.radio0.channel='36'
wireless.radio0.band='5g'
wireless.radio0.htmode='VHT80'
wireless.radio0.disabled='1'
wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.mode='ap'
wireless.default_radio0.ssid='OpenWrt'
wireless.default_radio0.encryption='none'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0+1'
wireless.radio1.channel='36'
wireless.radio1.band='5g'
wireless.radio1.htmode='VHT80'
wireless.radio1.disabled='1'
wireless.default_radio1=wifi-iface
wireless.default_radio1.device='radio1'
wireless.default_radio1.network='lan'
wireless.default_radio1.mode='ap'
wireless.default_radio1.ssid='OpenWrt'
wireless.default_radio1.encryption='none'
root@OpenWrt:~# iwinfo
wlan0     ESSID: unknown
          Access Point: 94:83:C4:0E:A1:E9
          Mode: Client  Channel: unknown (unknown)
          Center Channel 1: unknown 2: unknown
          Tx-Power: 3 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: unknown
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 14C3:7615 7615:14C3 [MediaTek MT7615E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0

wlan1     ESSID: unknown
          Access Point: 16:83:C4:0E:A1:E9
          Mode: Client  Channel: unknown (unknown)
          Center Channel 1: unknown 2: unknown
          Tx-Power: 3 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: unknown
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 14C3:7615 7615:14C3 [MediaTek MT7615E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy1

After the update that triggers the behavior:
root@OpenWrt:~# uci show wireless ; iwinfo
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.path='1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
wireless.radio0.channel='36'
wireless.radio0.band='5g'
wireless.radio0.htmode='VHT80'
wireless.radio0.disabled='1'
wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.mode='ap'
wireless.default_radio0.ssid='OpenWrt'
wireless.default_radio0.encryption='none'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0+1'
wireless.radio1.channel='36'
wireless.radio1.band='5g'
wireless.radio1.htmode='VHT80'
wireless.radio1.disabled='1'
wireless.default_radio1=wifi-iface
wireless.default_radio1.device='radio1'
wireless.default_radio1.network='lan'
wireless.default_radio1.mode='ap'
wireless.default_radio1.ssid='OpenWrt'
wireless.default_radio1.encryption='none'
wlan0     ESSID: unknown
          Access Point: 94:83:C4:0E:A1:E9
          Mode: Client  Channel: unknown (unknown)
          Center Channel 1: unknown 2: unknown
          Tx-Power: 3 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: unknown
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 14C3:7615 7615:14C3 [MediaTek MT7615E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0

wlan1     ESSID: unknown
          Access Point: 16:83:C4:0E:A1:E9
          Mode: Client  Channel: unknown (unknown)
          Center Channel 1: unknown 2: unknown
          Tx-Power: 3 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: unknown
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 14C3:7615 7615:14C3 [MediaTek MT7615E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy1

I also noticed that LuCI also doesn't know some info about the second radio. Here's a screenshot.

As expected. The 2nd radio uses the mutli-phy radio path syntax (0000:01:00.0+1') which is not understood by the iwinfo version shipped in 21.02.3. Support has been backported but must be manually installed. Please retry after opkg update; opkg upgrade iwinfo libiwinfo libiwinfo-lua`

Updating the iwinfo packages appears to have resolved it. Is this update already integrated into the upcoming 22.03.0? I'm going to update the wiki entry for gl-mt1300_v1.

Note added to the wiki: https://openwrt.org/toh/gl.inet/gl-mt1300_v1#iwinfo_update_for_openwrt_2102

Yes, 22.03 will include the relevant changes. Closing this as it is already solved.

hi jow
how do i update to 22.03
just flashed from
OpenWrt 21.02.3 r16554-1d4dea6d4f / LuCI openwrt-21.02 branch git-22.083.69138-0a0ce2a

Yes, 22.03 will include the relevant changes. Closing this as it is already solved.

hi jow
how do i update to 22.03
just flashed from
OpenWrt 21.02.3 r16554-1d4dea6d4f / LuCI openwrt-21.02 branch git-22.083.69138-0a0ce2a