Windows build trouble with miniupnp

I can't build on Windows with MSVC. It seems miniupnp building is supported only with Cygwin, and that's a whole new can of worms.
What's going to be supported - Cygwin or MSVC?

@yagoulas is reworking the script to support windows. Right now we are testing it out using msysgit bash command line.

miniupnpc compiles fine with 32-bit for me but we are working on getting 64-bit possible as well.

Okay. msysgit is a Cygwin-like approach so that's not unexpected and also encouraging to hear.
I remember the "old' builds were MSVC based so I thought this one will use MSVC as well.

Well @yagoulas made those as well, but he just started helping out on this Friday so we should see more progress this week. He can also answer more questions. I have been up to this point only testing this script on OSX as per the README.

Building with MSVC is still supposed to work more or less. How exactly were you trying to build it?

Installed python 2.7.10, installed the MSVC thing for Python, then upgraded pip and ran pip install -r requirements.txt and it choked on the last of 12 requirements (miniupnp). If you look on the Web there are binaries (if that was a dependency, maybe we could remove miniupnp from requirements.txt?), but as far as building on Windows goes it's only supported with GNU make.

I see what you mean. We hackfixed the problem by using this command:
python -m pip install 'https://github.com/yagoulas/miniupnp/zipball/msvc_miniupnpc'. Of course this requires that I keep this branch up to date with the miniupnpc project. If you run this command and then pip install -r requirements.txt, it should work fine.

Is this something that @miniupnpc could accept into their branch?

On Win 7 x64 with that MSVC addon for Python 2.7:
C:\Python27\Scripts>python -m pip install https://github.com/yagoulas/miniupnp/zipball/msvc_miniupnpc
Downloading/unpacking https://github.com/yagoulas/miniupnp/zipball/msvc_miniupnpc
  Downloading msvc_miniupnpc (107kB): 107kB downloaded
  Running setup.py egg_info for package from https://github.com/yagoulas/miniupnp/zipball/msvc_miniupnpc
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "C:\Users\user\AppData\Local\Temp\pip-gzdngr6d-build\setup.py", line 29, in <module>
        subprocess.call([vcbuild, 'miniupnpc.vcproj'])
      File "C:\Python34\lib\subprocess.py", line 537, in call
        with Popen(*popenargs, **kwargs) as p:
      File "C:\Python34\lib\subprocess.py", line 858, in __init__
        restore_signals, start_new_session)
      File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
        startupinfo)
    FileNotFoundError: [WinError 2] The system cannot find the file specified
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "C:\Users\user\AppData\Local\Temp\pip-gzdngr6d-build\setup.py", line 29, in <module>

    subprocess.call([vcbuild, 'miniupnpc.vcproj'])

  File "C:\Python34\lib\subprocess.py", line 537, in call

    with Popen(*popenargs, **kwargs) as p:

  File "C:\Python34\lib\subprocess.py", line 858, in __init__

    restore_signals, start_new_session)

  File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child

    startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file specified

But never mind, I'm okay with MinGW or other approaches.
I agree with Brian's idea - it would be nice if upstream could accept your changes.

The windows installer should be able to handle miniupnpc when it's ready. For now there is the noupnp branch for people who just want to skip it.


:seedling: Create the vsix package from dist/

Explicitly copy all files needed by the vscode extension to a dist/ directory and build the .vsix file from there.
There are a few advantages to using this method:

Only what we explicitly copy to the dist/ directory will be included in the .vsix file

Every developer and CI script will be able to use the same packaging scripts to maintain consistency

Changes to what is included is centralized in a few scripts

Note: In hopes of easier build support on windows, the scripts are all javascript/nodejs.  Getting bash scripts to be stable
on windows can be a challenge, and maintaining platform specific scripts is best avoided if possible.

Works for me! I've noticed 2 issues:

npm run package just fails when run alone - it would be nice to add some comments or execute the dependencies
webview is missing files - we might have some hardcoded paths there

@ibolton336 ^^ it seems we need to fix paths here ->
https://github.com/konveyor/editor-extensions/blob/ae7f628e0200ce67461b08f8a3ecd319783b20b7/vscode/src/KonveyorGUIWebviewViewProvider.ts#L107

Fixed here:
https://github.com/konveyor/editor-extensions/pull/113


Allow setting long_description_content_type externally

Some tools, such as PBR, might want to set long_description_content_type externally.  Modify the extant code to take the existing value from dist.metadata if it is already set.
I believe the path for this is that _Distribution.__init__() gets called, which calls the distutils initalizer, which calls into https://git.openstack.org/cgit/openstack-dev/pbr/tree/pbr/core.py.  This __init__ call has setup dist.metadata within the object.
PBR then reads setup.cfg and populates a range of fields into the dist object, including some metadata.  However, it is not possible for it to set the long_description_content_type because setuptools only takes it from its own attr argument after the distutils initalizers have run.
By making setuptools check if there is already a value for it in metadata, we can modify PBR to write the value to dist.metadata and have it maintained.
This is a problem unique to this field, as it's not part of the base distutils metadata

I don't know if I understand the meaning of "externally" in this context. Under what conditions would long_description_content_type be set other than through a call to setup?
Also, this PR needs tests.

@pganssle

I don't know if I understand the meaning of "externally" in this context. Under what conditions would long_description_content_type be set other than through a call to setup?

So a PBR based installer uses simply
setuptools.setup(
    setup_requires=['pbr>=2.0.0'],
    pbr=True)

The pbr argument basically ends up in https://git.openstack.org/cgit/openstack-dev/pbr/tree/pbr/core.py ; which reads a setup.cfg and you can see how it populates various fields of the Distribute object from that.
This works for updating all the original distutils-based metadata settings, etc.  But long_description_content_type is different in that setuptools unconditionally sets it after the PBR setup() keyword handler has run.  Hence this change to allow the value to populate there first and not be overwritten.
I'm open to ideas on what testing you'd like to see.  The tests as is ensure that this didn't regress and not set the value from attr.

@ianw There's no test to ensure that this behavior isn't broken by future updates, since this change does not introduce any new breaking tests.
The tests should also address things like @di's comments - what happens if setup gets passed long_description_content_type and self.metadata is set? Does self.metadata override or does attr? Should there be a warning?

My nitpicks aside, is there anything still preventing this from being merged?  It would be nice to add a changelog.d entry now that we're using towncrier to manage the changelog.
I didn't see anything in the documentation regarding precedence of attributes in setup.cfg vs. setup(); did I just miss it?  Should we add that?

I'm personally still a bit uncomfortable with this because the precedence is both undocumented and for the other members not what I would expect.
I think it's a foregone conclusion that this will have to behave like other attributes, but I'd like us to at least agree on what the strategy is and what it should be, and preferably document it.
I also haven't merged it because I have not convinced myself that the way it's being tested is actually a supported way to do this.


[Button] Add disabled prop

Implemented feature requested in https://github.com/facebook/react-native/issues/10354, updated docs.
The colours were picked from native interface for iOS and from material-ui for android.

Looks great, thank you!

@facebook-github-bot shipit


Simplify registering a NativeClass

let class = handle.add_class::<Player>(
    ClassDescriptor {
        name: "Player",
        base_class: "Area2D",
        constructor: Some(constructor),
        destructor: Some(destructor),
    }
);

We could put most or all of this information in the trait, including the constructor and destructor.

Already implemented as of Dec. 2019. Closed.


Swap 'send-type' arguments

Perhaps it would be better to swap code and data arguments for using comfortably =)
Before:
const send = require('@polka/send-type');
res.json = send(null, res);
...
res.json(200, payload);

After:
const send = require('@polka/send-type');
res.json = send(null, res);
...
res.json(payload);

Code is 200 by default.

Hey,
It's structured this way because data is what's optional for the HTTP response, and a statusCode is always required. I understand where you're coming from & tried it for a bit, but in cases where you are sending 204 or want to send the default Status Text as a response, it's more awkward to go the other way around.
For what you're doing, you could simply do this:
const sendtype = require('@polka/send-type');

// define once for optimized assignment
function send(res, data, code = 200) {
  sendtype(res, code, data);
}

// ...

res.json = send.bind(null, res);

// ...

res.json(payload);
// or
res.json(payload, 201);

Hope that helps!


Fallback to loading API token from personal config file

One thing which I'm not sure about is that this is potentially a bad security practice (storing tokens clear on disk). :thinking:

Yeah it's a good flag -- we may want to add a more secure option in future, such as loading from keychain or 1password, or loading from encrypted file and prompting for de-encrypt password.


about abstract final code quick fix .  should create final instead of get

Steps to reproduce
Create an abstract class
Abstract class has abstract final GlobalKey widgetKey
extends abstract class
use vscode flutter plugins quick fix code generate code GlobalKey get widgetKey => throw  xxxx
I don't think 'final' and 'get' are equivalent
The tool should generate a 'final' for '@OverRide' instead of 'get'`
`get' is similar to 'function '
`abstract final 'is a variable in a block of memory space
Expected results
generate final GlobalKey widgetKey;
Actual results
GlobalKey get widgetKey => throw  xxxx
Please complete the following information:
Operating System and version: Win10
Dart/Flutter SDK version: 3.10.5
from
https://github.com/Dart-Code/Dart-Code/issues/4643
digest content
https://github.com/Dart-Code/Dart-Code/issues/4643#issuecomment-1659720847
https://github.com/Dart-Code/Dart-Code/issues/4643#issuecomment-1667558372
https://github.com/Dart-Code/Dart-Code/issues/4643#issuecomment-1667593440

example code

class A{

  A(){
    print('create a New A');
  }
}

abstract class Foo {
  abstract final A foo;
}

class Bar extends Foo {
  @override
  final A foo = A(); // valid
}

class Baz extends Foo {
  @override
  A get foo => A(); // valid
}

class TestCodeFix extends Foo {
/// use quick fix `Create missing overridesc`
/// from https://github.com/Dart-Code/Dart-Code/issues/4643#issuecomment-1667593440
}

void main() {
  final a=Bar();
  final b=Baz();

  print("this is a [final]");
  print([a.foo,1]);
  print([a.foo,2]);

  print("---");

  print("this is a [get]");
  print([b.foo,1]);
  print([b.foo,2]);
}

I believe that the consensus from the Dart-Code issue is summed up in https://github.com/Dart-Code/Dart-Code/issues/4643#issuecomment-1668022323.


fake --list-functions error

fake command --list-functions for windows build provides an error
> fake --list-functions
error: Error: invalid escape at line 50 column 98

This has got something to do with serde_json not being able to parse the output from the dirPath() function. The output of dirPath() is something like:
[src\cli\fake_data\mod.rs:370] DirPath(EN).fake::() = "/usr\week\oliver\noah"

We now escape the strings for dirPath() and filePath().


30 seconds waiting

Hi iam new in RabbitMQ, iam testing the example but in my case when i call ex->Publish() , it wait 30 sec to exit. It is correct?, How can i eliminate this wait?
Tanks
Dibet
AMQP amqp("localhost:5672");
AMQPExchange *ex = amqp.createExchange("e");
ex->Declare("e", "fanout");
AMQPQueue *qu2 = amqp.createQueue("detectionXY");
//qu2->Declare("/",true);
qu2->Bind("e" , "");
//qu2->setParam(AMQP_DELIVERY_NONPERSISTENT);
ex->setHeader("Delivery-mode", 2);
ex->setHeader("Content-type", "text/text");
ex->setHeader("Content-encoding", "UTF-8");
ex->Publish(ss , "");

I have a similar issue when calling AMQP destructor.
RabbitMQ logs contain:
=ERROR REPORT==== 24-Jul-2017::12:11:51 ===
Error on AMQP connection <0.6454.262> ([::1]:63458 -> [::1]:5672, vhost: '/', user: 'guest', state: running), channel 2:
operation channel.close caused a connection exception channel_error: "expected 'channel.open'"
I have no solution now other than to not call destructor...

AMQPQueue do a closeChannel on destructor and AMQPBase too.
So I'm wondering if only one is needed. It seems like a bug. Still investigating.

If I remove the closeChannel from AMQPQueue::~AMQPQueue it solves the problem of 30s waiting.


Various small improvements

Summary of the Pull Request

PR Checklist

[ ] Closes: #xxx
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments
This pull request introduces several small code improvements.

Validation Steps Performed
All tests are passing

@PolarGoose thanks for the pr,but please follow our guidelines regarding contributions. Was there any conversation that spoke of these changes? What's the motivation / context here?


flags.contains(0) == true

The contains API is implemented as follows:
pub fn contains(&self, other: $BitFlags) -> bool {
    (*self & other) == other
}

This means that doing flags.contains(SomeFlag::empty()) is true, which is counterintuitive.

I don't consider this a bug, personally.  Bitflags values are sets, and in set theory, “A contains B” is always true for any set A if B is the empty set.

I agree, the 0 bitflag is the empty set which is contained in any set.


feat: add function assertFillableAsync

You can't see this so well in GitHub, for some reason, but the function being added is:
    /**
     * Throws with error message if a given order is not able to be filled.
     *
     * @param {DebtOrder.Instance} debtOrder
     * @param {TxData} txOptions
     * @returns {Promise<void>}
     */
    public async assertFillableAsync(
        debtOrder: DebtOrder.Instance,
        txOptions?: TxData,
    ): Promise<void> {
        const {
            debtKernel,
            debtToken,
            tokenTransferProxy,
        } = await this.contracts.loadDharmaContractsAsync(txOptions);

        await this.assertValidityInvariantsAsync(debtOrder, debtKernel, debtToken);
        await this.assertConsensualityInvariants(debtOrder, txOptions);
        await this.assertCreditorBalanceAndAllowanceInvariantsAsync(
            debtOrder,
            tokenTransferProxy,
            txOptions,
        );

        await this.assertValidLoanOrder(debtOrder);
    }

I find assertValidLoanOrder to be a bit of a confusing naming scheme, given that it accepts a debt order and and not a loan order. Can we change this to something along the lines of assertValidLoanTerms, or something that more closely alludes to this avoiding an error that would be thrown by the registerTermStart method call on the terms contract?

Right, @nadavhollander -- that function currently generates a loan order from the debt order using the appropriate adapter in order to validate, but the naming could be clearer. I will use your suggestion.


[DOC] should notice that need setting the full path when call the resource file #11620

Purpose of the pull request
fix #11620
Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

(or)
If your pull request contain incompatible change, you should also add it to docs/docs/en/guide/upgrede/incompatible.md

done. Please review again. thx

done. Please review again. thx

LGTM, thanks.


support for shorts broken?

just used it today, it works for videos perfectly but not shorts
for example
https://www.youtube.com/@zurcsan/shorts
I tried fixing it with the following code:
        if (( !window.location.pathname.endsWith('/videos') && !window.location.pathname.endsWith('/shorts') ) || document.querySelector('.play-all-button')) {

the button now appears:

but the link it creates is not valid:

Shorts work differently from videos and are not supported yet. I am not aware of a playlist for just shorts as of now, but from what I can see just clicking the latest short in the shorts tab lets you play all by the channel. As I don't use shorts myself, I'll need to do some digging first.

Shorts are now playable with the lists UUSH (Short videos) and UUPS (Popular short videos)


Archived expense reports show up in the LHN with notification preference is "hidden"

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.46-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @puneetlath
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1728330107838519
Action Performed:
Precondition : Admin has preference set to "focus mode"

Create a workspace
Submit expense report as a employee
Approve and pay the report
Delete workspace
Verify the LHN as a admin / approver

Expected Result:
Archived expense report should not show up in  LHN after being archived
Actual Result:
archived expense report shows up in the LHN after being archived
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

View all open jobs on GitHub

So it looks like some steps are missing in terms of the troubleshooting — specifically between steps 2 and 3.
Are we submitting and approving our own reports, or do I need to login to a different account to be the approver (i.e. an Admin account)? This portion seems to be missing @m-natarajan — can you clarify?

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

Bumped my questions on the Slack thread here.

Hey @bfitzexpensify! I am heading OoO this afternoon (10/15 to 10/23) so reassigned this to keep it moving! I had some clarifying questions on the reproduction steps here and I am waiting to hear back 👍

After further discussion, I don't think this is actually a bug. So I think we can close this out.


Class static properties are not supported

Laravel Mix Version: 1.7.2
Node Version: 8.9.0
NPM Version: 5.6.0
OS: MacOS High Sierra

Description & Steps:
Trying to compile some JS which contains something like:
class MyClass extends Component {
  static PropTypes = {
    ...
  }
}

When transpiling it throws an error for an unexpected token at the equal sign.
I was hoping this was resolved in #971, so I updated to 1.7.2, but no dice.
I admittedly don't know enough about which version of ESCMA needs to be supported in order for this to work. Does Laravel Mix somewhere document which version it supports?
It would be great to have static methods and properties supported!

I installed it with Babel
npm install --save-dev babel-plugin-transform-class-properties
Then, create a .babelrc in the root of your project
{
  "plugins": ["transform-class-properties"]
}

Thanks, @helmerdavila! So Laravel Mix will automatically take that into account?
I'm familiar with Babel, but haven't used it, yet. Is it reliable to do things like that?

Maybe in the future this will be included by default

Class properties are an experimental feature of js in the draft phase. At some point in the future, it may become a js feature. Until then you'll need to pull in the plugin.


Add OpenStack cloud provider

Add OpenStack cloud provider
Can be tested with cluster-bot (even though clusterbot may fail on unrelated things from time to time).
For OVN-K:
launch openshift/cloud-network-config-controller#47,openshift/ovn-kubernetes#1172,openshift/cluster-network-operator#1505 openstack,ovn

For SDN:
launch openshift/cloud-network-config-controller#47,openshift/sdn#447,openshift/cluster-network-operator#1505 openstack

/retest

/retest-failed

try 2 :)
/lgtm

/test e2e-gcp

/test e2e-gcp


Ability to add basic auth credentials while creating newAccessApi

I am connecting to the FLOW blockchain nodes through  over GRPC, using the Flow SDK on Java, the server needs a basicAuth to be send while creating the client.
Flow.newAccessApi doesnt support any credentials to be passed or setting the secure=true doesn't work.
I am hoping there must be a way to provide the credentials while calling the Flow.newAccessApi, Like in Go they have a
grpc.Dial(target,
        grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
        grpc.WithPerRPCCredentials(basicAuth{
            username: endpoint,
            password: token,
 })

I am hoping this feature could be helpful for developers

This seems to be achieved by attaching an interceptor and providing the Metadata headers. But there should by a way to provide the interceptors to Flow.newAccessApi


Wchar support

Thanks for reviewing my pull requests so quickly and your kind comments. Your recent merge makes the pull request for my current wchar_t implementation quite slim. I also took into account a few of your comments from the previous attempt. I am creating this PR to open the discussion.
A few notes:

I propose to test for the codecvt header in the cmake file.
It may well make sense to add a flag to the generated header file as you proposed. (I fact, the public compile definition is in fact the same as long as you use export to generate a cmake config file along with your install). On the other hand, availability of codecvt, mainly determines how the message() call (which should be rarely used in production) will translate the wstring part of the message.
One proposal to reduce the "problem" would be to replace codecvt with a g3log internal function if it is not available. A first simple shot would be to take all ANSI characters as they are and replace everything else with a "?".

Sorry, I am not sure why the LOGFW test fails in Linux. I will have a linux box for testing available tomorrow or the day after and will look into it then. It lead me to a couple of real bugs already, though ... just none that fixed the test for good.

OK, got my linux dev box up and running and found the reason for the failure: MSVC vs. gcc incompatibility in the wprintf format specifications. Thus not a library patch, just the unit test corrected.

@AndreasSchoenle  I haven't forgotten about this one. This one is on top of my current to- review list

@AndreasSchoenle : how would you suggest that I test this end to end?
I.e. say chinese characters going in one log entry (LOGW) and ascii characters going in another log entry (LOG).   Wouldn't that screw up the viewing of the log?
I've delayed this PR since I don't have enough knowledge, except knowing it is tricky, to get language support correctly.
What would you suggest be a comprehensive test setup to verify this?
(input from this should of course also be added later by me or you to the docs)

@KjellKod : It seems to me that the problem you describe is not really internal to g3log but just a question whether the program logging uses LOG/LOGW statements with the encodings the sinks in use assume to be used:
Quite obviously any encoding could be stored both in _message or _wmessage. For _message this also applies to the master branch. If you would i.e. call LOG and pass some strings which are UTF-8 encoded and others with latin-1 encoding, the sink will not be able to distinguish them and the log file cannot be displayed correctly. It thus always was and still is a requirement that the program logging and the sink have to agree about the use of encodings unless you want to store both the string and an encoding identifier in the message - which I think is too much effort for too little benefit.
In the end it is the sink that has to make sure that all text written to the log file will be in the same encoding and the current implementation of the LogMessage::message() function will cause all sinks using it to write a correct UTF-8 encoded file as long as all LOG() statements pass UTF-8 and all LOGW() statements pass UCS-2 in windows and UCS-4 in Linux (see http://en.cppreference.com/w/cpp/locale/codecvt_utf8).
But this merely introduces a convenient convention which may be ignored when implementing custom sinks. E.g. In my own windows environment I assume that LOG is UTF-8 and LOGW UTF-16. For file sinks all is then converted to UTF-8 and for console or GUI output to UTF-16.  If I were to make a LOG call with latin-1 encoded strings, both files and GUI output would not be correct.
I think it is a strength of the implementation that it does not impose an encoding. In a way it is the same for the wchar_t part as it always was for the char part: The message is encoding agnostic.
As far as tests go, I believe the existing ones are more or less sufficient. Anything  beyond this would not really test g3log but rather the codecvt_utf8 implementation.

@AndreasSchoenle I agree with you completely.
From a usage perspective I do think I need to somehow make it explicit how the user can either make a custom sink and how the file and or cout can be readable easily.
Can you create an example sinks which could push correct (say Chinese or Cyrillic characters) to stdout as well as a log file. Or with text in the API doc describe how it could be done.
I.e. the number one block of this PR right now, for me, is usage. I'm suspecting most coders are also as locale ignorant as I am (due to lack of experience)

Although interesting. Due to use cases I am hesitant to merge this.
One option is to create a separate branch for g3log which incorporates this.
What is your take @AndreasSchoenle ?

I haven't gotten around to looking at it again for a long while and I am quite busy with other stuff at the moment. We can also just shelve it - after all our fork is more or less the same as having a separate branch for now.
However, here are a couple of quick thoughts, possibly repetitive w.r.t. what was already said:
Strictly speaking, the library can do without it: As I have outlined above, not matter whether wchar_t is supported in the log message itself, the logging application and the sinks have to agree on a character encoding anyhow unless you want to add all the overhead of a message carrying information about its specific encoding (UTF-8/UTF-16/Ascii/8bit with specific codepage...). I do not see the need for this at the moment. So in any scenario, instead of having an additional wchar_t payload, one can just convert any string to an 8-bit format (UTF-8 makes the most sense) before passing it to the LogMessage. If I would start to use g3log right now, I would probably do this due to lack of resources to think about the wchar_t issue.
However, one of the mission statements of g3log is speed. The wchar_t payload allows the thread that creates the log messages to defer string conversion to the sink side, i.e. the thread that passes the log message is slowed down considerably less.
Thus the use case is: In a scenario where large parts of the log string already exist in a wide string encoding, i.e. because they come from a Qt or Windows GUI or because the application uses wide strings throughout, this patch makes g3log faster.
Also, if you decide to stay out of the encoding business (i.e. not give the message additional state specifying the encoding but rather accept that sink and logging thread have to "know about each other" as it is the case at the moment) it "completes" the framework: The consumers of the lib has total freedom to create payloads in whichever string encoding they wish as long as the sink they implement recognizes it correctly and deals with it before pushing it into a file, network connection, widget, etc. It seems consistent to me.
Anyhow - it is your decision. I am pretty sure that if you decide to give it a shot I would probably add a litte thing that either gives a good error message when trying to pass a wide string to the LOG macro or even create a little stream wrapper that selects wstream() or stream() based on whether the first object passed in is a std::wstring or wchar_t * or anything else. In our code base this would cover every instance of LOGW at the moment but it might be considered a litte obscure.

I think the best approach for now is to create a (semi) permanent branch on G3log.
I can make that happen. And have these changes there. That means it can easier be used by the community - I can add some doc around it and it'll immediately start having more value than hanging around as a PR
Thanks for your reply
Cheers
Kjell
Sent from my iPhone

On Oct 13, 2017, at 3:33 AM, Andreas Schönle<EMAIL_ADDRESS>wrote:
I haven't gotten around to looking at it again for a long while and I am quite busy with other stuff at the moment. We can also just shelve it - after all our fork is more or less the same as having a separate branch for now.
However, here are a couple of quick thoughts, possibly repetitive w.r.t. what was already said:
Strictly speaking, the library can do without it: As I have outlined above, not matter whether wchar_t is supported in the log message itself, the logging application and the sinks have to agree on a character encoding anyhow unless you want to add all the overhead of a message carrying information about its specific encoding (UTF-8/UTF-16/Ascii/8bit with specific codepage...). I do not see the need for this at the moment. So in any scenario, instead of having an additional wchar_t payload, one can just convert any string to an 8-bit format (UTF-8 makes the most sense) before passing it to the LogMessage. If I would start to use g3log right now, I would probably do this due to lack of resources to think about the wchar_t issue.
However, one of the mission statements of g3log is speed. The wchar_t payload allows the thread that creates the log messages to defer string conversion to the sink side, i.e. the thread that passes the log message is slowed down considerably less.
Thus the use case is: In a scenario where large parts of the log string already exist in a wide string encoding, i.e. because they come from a Qt or Windows GUI or because the application uses wide strings throughout, this patch makes g3log faster.
Also, if you decide to stay out of the encoding business (i.e. not give the message additional state specifying the encoding but rather accept that sink and logging thread have to "know about each other" as it is the case at the moment) it "completes" the framework: The consumers of the lib has total freedom to create payloads in whichever string encoding they wish as long as the sink they implement recognizes it correctly and deals with it before pushing it into a file, network connection, widget, etc. It seems consistent to me.
Anyhow - it is your decision. I am pretty sure that if you decide to give it a shot I would probably add a litte thing that either gives a good error message when trying to pass a wide string to the LOG macro or even create a little stream wrapper that selects wstream() or stream() based on whether the first object passed in is a std::wstring or wchar_t * or anything else. In our code base this would cover every instance of LOGW at the moment but it might be considered a litte obscure.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Entirely your choice, of course and thanks. Having it as a branch and hinting users to the fact that it exists may well help to decide whether it is a feature that seems useful to more than one person.
Let me know in case you want me to write a few lines basically outlining the motivation I gave above.
I will shall ponder how to change up our fork after it is done to keep maintenance overhead minimal.
Best wishes,
Andreas

Let me think it through over the weekend.
Sent from my iPhone

On Oct 13, 2017, at 5:54 AM, Andreas Schönle<EMAIL_ADDRESS>wrote:
Entirely your choice, of course and thanks. Having it as a branch and hinting users to the fact that it exists may well help to decide whether it is a feature that seems useful to more than one person.
Let me know in case you want me to write a few lines basically outlining the motivation I gave above.
I will shall ponder how to change up our fork after it is done to keep maintenance overhead minimal.
Best wishes,
Andreas
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

1210

@Kidixovi ?

closed. added as a permanent branch: https://github.com/KjellKod/g3log/tree/wchar_support


Android support

My situation is that I have a car stereo with an aux input but no bt support. I would like to be able to use my Android phone as a bt speaker when I have passengers with phones that have bt support but no headphone jack, thus enabling music played on their phone to be played on my car stereo via my phones jack output, all without installing any extra software on their phone.
I've had a pretty good search but I haven't been able to find an existing Android app that enables this, all I can find is audio streaming apps that use wifi for use with a PC.
Presuming that there isn't already an existing solution for this that has evaded my searches, might it be possible to add Android support to bluez-alsa? This would also really require writing some kind of Android GUI to configure bluez-alsa which may be outside the scope of this project but it may be possible for bluez-alsa to provide the backend for such an app with a few additions or modifications?

might it be possible to add Android support to bluez-alsa?

If I remember correctly, someone was trying to use bluez-alsa with Android, but it was not vanilla Android. BlueALSA service is hard dependent on BlueZ >= 5, where vanilla Android uses BlueDroid (aka Fluoride)... That's the technical obstacle for running BlueALSA on Android, and I'm afraid that it's not easy to overcome it. The easiest way is to run Linux and Android device :D but I understand that that's not an option for you.


Improve Jupyter Materials

[ ] Add the ? help syntax
[ ] Demonstrate tab completion

Also - I think this should be done in a "live coding" fashion with the notebooks pointed to as a reference. It would help things sink in more I think and slow me down during presentation.


Fix formatting

Coverage remained the same at 100.0% when pulling 588c136e6c0c041b5dfa491e3361357374954d94 on fix-formatting into c261840ce1061a1235d8ece16c3b9fddccc594ba on master.


feat(useRefHistory): add last history point ref

As discussed in https://github.com/antfu/vueuse/issues/203, added a last ref to useRefHistory
Added some tests, but docs are still missing. I'll add them later in this PR or in another one if you would like to merge this one as is.
I am returning a record in last { value, timestamp }. I wonder if we should change the name of value as we have to access the serialized value using last.value.value right now. I can not think of a better name though.

That would be great if you can update the docs as well. But maybe the jsdoc is enough I guess?

last.value.value

Emmm, yeah. It does feel weird. I guess it's better to avoid using value in objects in cause confusion with refs. Maybe snapshot? And with the destructing section in the guide, we can have:
const history = reactive(useRefHistory(source))

history.last.snapshot

&
const { last } = useRefHistory(source)

last.value.snapshot

And if we do, we should change the history stacks as well (breaking change).

I like snapshot a lot. Updated the PR with the breaking change.
I found that there may be an issue with the way we are handling the undoStack. We already push a value to the undoStack at the beginning, but I think this is not right. Since in apps for example, you are received with the possibility to undo (and you didn't do anything yet).
I think that now that we added last, this can be fixed because we can have:
full history: [...undoStack, last, ...redoStack]
So last is not undoStack[0], but it is the last value used to update current. Please leave this PR open and I will review this better.
I see that for using storage, it is also broken now, because undoStack[0] will be undefined if you undo all the way to the beginning. So looks like last may not be an alias but something more important to the way the composable works at the end

[...undoStack, last, ...redoStack]

I think you are right. It's better to do this way. And if so, we should reconsider the behaviour of the functions we have.

commit - push last to undoStack and make clone the current state to last
reset - set last to the source ref, no affecting stacks
undo/redo - how should they behave? we are having two situations here, last is aligned to current or not

reset was using undoStack[0] before so it was not working when undoStack was empty. Now that we added last, I was able to fix this.
About starting with undoStack = [last], maybe we can discuss that in another issue, PR. It doesn't change the implementation it seems at the end. We just need to start with undoStack = [], and update the tests to reflect that at the beginning you have empty history. I think we should do the change, even if it is not intuitive that history will be empty at the beginning because if not we will need to ask users to use canUndo = () => undoStack.length > 1 and canRedo = () => redoStack.length > 0 if they want to avoid that extra state. What do you think? I can do a PR for this separately and we discuss there if you want.

I think we can discuss and make changes in this PR

I am doing the changes and history now doesn't look as good as before just being an alias for undoStack.
Maybe we should change it to be:
history = [ last, ...undoStack ]

I do not how costly it is to add these extra arrays, refs. But I think this is a good change, as users can see the history until the moment, that is different from what they can undo/redo.
Almost all the tests can pass without being changed in that way also.
What do you think?

Cool, that makes sense. Use computed for history won't be costly. computed is lazy and only reevaluate on accessing, there shouldn't be much cost, especially for users who don't need it.

I see now that in my old implementation, I used only one history array and an index pointer to the current history point. That is why this issue didn't appear there.
We now have full  = ... undo values, last, ... redo values. And I think maybe one extra renaming should be done. last is really the current history value. For example, if we do an undo, the "prev" values becomes the "last" value with the naming so far, and this may be a bit confusing. When you reset, you set the source to the current value.
Should we rename them?
current -> source  ( forwarded source ref )
last -> current ( so history.value.current )
What do you think? I am fine either way.

One more thing, that I could add to this PR. I was thinking that having canUndo and canRedo computed refs could remove complexity in the API. So we have:
<button :disabled="canUndo" @click="undo">

undo and redo implementations ended up being a mirror of each other
  const undo = () => {
    const state = undoStack.value.shift()

    if (state) {
      redoStack.value.unshift(last.value)
      _setCurrentValue(state)
    }
  }

  const redo = () => {
    const state = redoStack.value.shift()

    if (state) {
      undoStack.value.unshift(last.value)
      _setCurrentValue(state)
    }
  }

current -> source ( forwarded source ref )

Sounds good!

last -> current ( so history.value.current )

Well, I am not very sure about this since it's not strictly current. There will be some cases it will not align with source. However, I can't come up with a better name for it 😅. Maybe let's keep as last for now?

canUndo / canRedo

👍

Done, I think we can merge the PR now 😄

Great, thanks a lot!

FYI, I have scheduled a build for on dev including this PR, which should be live in a few minutes. You can opt-in for your apps can try them out. progress
npm
"dependencies": {
  "@vueuse/core": "npm:@knightly/vueuse@dev"
}

Thanks a lot for that, I was actually going to ask if it was possible so we can try these changes in a real app 🙌

🤫 I am using this a lot to dogfooding myself in my 100 day project.

Everything working as expected 🎉
Changeset migrating to flush: 'pre', removing batch guards in several places, using last for the storage watch and using canUndo canRedo instead of the stacks for the disabled checks:
https://github.com/Leniolabs/layoutit-grid/commit/724632c6e12c374b77c2ef230e5f52fcbccf1886


Store the created/updated info in a note's properties

Hi :-)
I would like for this info to be stored in the properties (frontmatter) of notes.
It would be simple to do so, if you think it's ok for your plugin to add this feature.
		await view.app.fileManager.processFrontMatter(view.file, (frontmatter: { created_on?: string; updated_on?: string }) => {
			if (!frontmatter.created_on) {
                                   frontmatter.created_on = "<date>"; // TODO set value
			}

			if (frontmatter.updated_on !== updatedOnValue)
				frontmatter.updated_on = "<date>"; // TODO set value
		});

Something like this is all you'd need :-)

Hi @ahoebeke,
Thanks for the suggestion. I understand the interest in having a feature that edits the file's frontmatter, but I haven't added this feature because this would involve the plugin editing every file in the vault.
I'm avoiding changes that would automatically update files as that would irreversibly change the "updated-on" value of each note to be the date that notes-dater was installed on, rather than the last date that the note was actually modified by the user. The current approach of just reading file meta-data and displaying it outside of the core note UI preserves the original file date meta-data.
That being said, I'm open to further discussions and ideas. There seems to be interest in addressing this issue so I'm going to leave this issue as open.
Best regards,
Paul

Ah nice! Clear explanation and indeed good reason!
Right now it's not of utmost importance to me ;-) so won't press further.
Thing that comes to mind is auto-updating the frontmatter as soon as a note
is updated, but I can't judge how useful or helpful that would be.
Will leave that thought here. I may circle back, or see whom else comes
along with ideas :-)
Thank you for leaving it open!
Best regards
On Thu, Jan 11, 2024 at 12:06 AM Paul Treanor @.***>
wrote:

Hi @ahoebeke https://github.com/ahoebeke,
Thanks for the suggestion. I understand the interest in having a feature
that edits the file's frontmatter, but I haven't added this feature because
this would involve the plugin editing every file in the vault.
I'm avoiding changes that would automatically update files as that would
irreversibly change the "updated-on" value of each note to be the date that
notes-dater was installed on, rather than the last date that the note was
actually modified by the user. The current approach of just reading file
meta-data and displaying it outside of the core note UI preserves the
original file date meta-data.
That being said, I'm open to further discussions and ideas. There seems to
be interest in addressing this issue so I'm going to leave this issue as
open.
Best regards,
Paul
—
Reply to this email directly, view it on GitHub
https://github.com/PaulTreanor/notes-dater/issues/2#issuecomment-1885888184,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA7W5EJZSR73XEFOYWUDBYLYN4NIXAVCNFSM6AAAAAA5XUGK2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBVHA4DQMJYGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

I adapted the plugin to do the contrary #5
Basically, I use a combination of obsidian-linter and obsidian-frontmatter-modified-date as described in this Obsidian forum post.
Then the notes-datter plugin can use these properties instead of relying on filesystem date and time information, which can be easily broken without actually changing the note itself…

Hi @nicolnt thanks so much for making this PR, I think it will make the plugin work better for more people.
I'm going to try to understand the changes fully before I merge the PR but I respond within a day or two. I had no idea that filesystem dates had these problems so this is a good lesson for me.

Merged changes required for this features


Add contextual menu for events

Describe the project you are working on
EventSystem
Describe the feature / enhancement and how it helps to overcome the problem or limitation
A context menu for each event, adding some options that are done already with shortcuts (like deleting the event with DEL key).
Context menu: aka, that menu that appears when you right-click something
Adittional information
No response

Fixed by https://github.com/AnidemDex/Godot-EventSystem/pull/42


TransactionEncoderError 5 when shielding funds

Parameters are not being downloaded when shielding funds.
workaround: Send funds from your shielded wallet, could be 0 ZEC + fee only. Wait for the transaction to succeed. that will force the app to download the parameters.

Fixed in Nighthawk v1.20


netbeans: Update to version 12.6

[x] I have read the Contributing Guide.

What's the app name?
Don't merge master to master, create a new branch
Fix checkver section to "regex": "Apache NetBeans ([\\d.]+)"
Run .\bin\checkver.ps1 netbeans -f to update manifest
Locally install the app to test the manifest
Don't use raw PR template as your PR message
Do you REALLY READ Contributing Cuide?

The app is netbeans.
@agroba  It looks like the download page may have changed - a better fix would be to fix the autoupdate url to point to the correct download page.
You should be able to use:
https://dlcdn.apache.org/netbeans/netbeans/$version/netbeans-$version-bin.zip

Also it looks like checkver.regex needs updated.

/verify


lint: remove obsolete comment

I believe that given the work to remove bluebird throughout the stack
that this comment can be removed
Ref: https://github.com/TryGhost/Ghost/issues/14882

Codecov Report
Patch and project coverage have no change.

Comparison is base (0b79832) 86.98% compared to head (d318e6f) 86.98%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #115   +/-   ##
=======================================
  Coverage   86.98%   86.98%
=======================================
  Files          72       72
  Lines        4163     4163
  Branches      579      578    -1
=======================================
  Hits         3621     3621
  Misses        538      538
  Partials        4        4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


support various other pokemon info sites

http://pokemondb.net/
http://www.pokewiki.de

perhaps there could be an account level setting that would let you pick up to 2 sites that you prefer to have as the available links. as long as the sites have consistent link conventions, they should be pretty easy to add.

it looks like http://www.pokepedia.fr/ is also a popular french resource


Mergeo nuevo YAML del pipeline, mas completo y usando templates

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


Mjpeg carrier... how to use?

Hi. We would like to compress the iCub image streams using the Mjpeg carrier in YARP but are struggling to use this. We will stream the camera output to a remote location and so need to reduce bandwidth usage. Is there an example on how to do this?
I have turned on the mjpeg carrier in YARP cmake and have the autocompress on, is there a setting we are missing in the icubmoddev frame grabber? The Mjpeg_test executable I assume only decompresses the stream?
I have started using the mjpegstream c++ class, but the include file isn't moved across with the yarp install and I assume I don't need to use this?
Ps How do I add labels #Discussion #Software

Hello @lukeboorman, the mjpeg_carrier must be compiled in order to work, please check that the ENABLE_yarpcar_mjpeg_carrier flag is enabled when building yarp on both sides.
The easiest way to use the mjpeg carrier is this on the same pc/network:
(shell 0) yarp server
(shell 1) yarpdev --device test_grabber --name /grabber
(shell 2) yarpview --name /view
(shell 3) yarp connect /grabber /view mjpeg

Another way to use it, is to connect a stream generated by yarp to an external application
(pc1) yarpdev --device test_grabber --name /grabber # yarpserver must be running
   # get the ip address and port from the output (here I'm assuming <IP_ADDRESS>:10002)
(pc2) open browser at http://<IP_ADDRESS>:10002/?action=stream

To connect 2 different yarp ports running on different networks, you should be able to do something like this:
(pc1) yarpdev --device test_grabber --name /grabber # yarpserver must be running
   # get the ip address and port from the output (here I'm assuming <IP_ADDRESS>:10002)
(pc2) yarpview --name /view # yarpserver must be running, but not necessarily the same instance
(pc2) yarp connect http://<IP_ADDRESS>:10002 /view mjpeg

Finally the mjpeg carrier allows you to connect to any external mjpeg stream you can reach, you will have to do something like this (to be honest I never tried it and I was not able to do it right now, perhaps @apaikan can add something):
yarp name register /streamer tcp ... 8080
yarpview /view
yarp connect /view /streamer mjpeg # Note that the connect order because this is a "pull" protocol

Thanks for the info, will give the test_grabber a go today.

@lukeboorman the instruction provided by @drdanz should work.
The mjpeg carrier automatically compress and decompress  the images and you do not need to implement anything to get it work.  If you have compiled Yarp with ENABLE_yarpcar_mjpeg_carrier=ON, it is enough to connect two yarp ports using the mjpeg carrier:
yarp connect /sender /receiver mjpeg

mjpeg carrier also allows you to stream out Yarp images and visualize them using any standard application (e.g., mplayer, firefox). For example to see a Yarp image from a web browser (can be a browser from your mobile phone too) follow these steps:

run a test_grabber

$ yarpdev --device test_grabber
[INFO]Test grabber period 0.0333333 / freq 30 , mode [line]
[INFO]created device <test_grabber>. See C++ class yarp::dev::TestFrameGrabber for documentation.
yarp: Port /grabber active at tcp://<IP_ADDRESS>:10002
yarp: No framerate specified, polling the device
[INFO]created wrapper <grabber>. See C++ class yarp::dev::ServerFrameGrabber for documentation.
yarp: Port /test_grabber/quit active at tcp://<IP_ADDRESS>:10003
[INFO]device active...
[INFO]device active...

open a firefox/iceweasel browser (chrome does not support mjpeg streaming) and enter the ip address of the test_grabber in this format:

http://<IP_ADDRESS>:10002/?action=stream

Let me know if you encounter any problem.
P.S. You can read more on that here : http://apaikan.net/papers/Fitzpatrick14middleway.pdf

Thanks we have got this working between the icub laptop and another ubuntu pc uisng yarpview.... "yarp connect /icub/cam/left /yarpImgView mjpeg".
However we are having some issues:

I can't get this to run on a windows machine (probably my config!), Running the yarp connect... it finds the mjpeg carrier, but says "yarp: Failed to find library support for carrier mjpeg". The PC has yarp_data_dirs etc setup and the mjpeg_carrier.dll have been produced and is in the 'install' location.

Other comments:

When closing the connection we have to use "yarp disconnect /icub/cam/left mjpeg://yarpImgView" otherwise it says the connection doesn't exist.
On connecting the return message from yarp seems to be the wrong way round (to -> from), or is this a two-way link? "Success: Added connection from /yarpImgView mjpeg://icub/cam/left

Thanks again for the help

There are some issues on windows, I managed to get it working, but I don't remember exactly what I had to change, and also it works only in some cases, I will investigate this a little bit more and try to fix it...

Hi @lukeboorman,
I can only help with your "other comment" #2: See the comment from @drdanz, where it is written that mjpeg is a pull protocol. Therefore, sender and receiver are the wrong way around. Did you try the same trick with other comment #1?

@lukeboorman any update?

Hi, thanks all! We got MJPEG stream running and used gateways to send the data over a different network. Much increase in frame rate and we were able to increase the resolution using Mjpeg with bayer, which overcomes some of the visible effects of the compression. I still struggle to run on my windows without running from within the yarp build directory, I think I have all the environment variables set up correctly.

... hence it should suffice to have yarp/build/bin/release in the path, right?


Rep. Cicilline resigned May 31 and Rep. Stewart resigned Sept 15

Incredibly, we missed these for so long.

Oops!


Is there a way to reverse the order of posts in an archive?

^^

I just did this using the following. You must install create-frame first:
Helper File
const createFrame = require('create-frame');

const eachPost = (array, options) => {
  var data = createFrame(options, options.hash);
  var buffer = '';

  array.sort('date', -1).forEach((item) => {
    buffer += options.fn(item, {data: data});
  });

  return buffer;
};

module.exports = function(hexo) {
  return { eachPost };
};

Usage
{{#eachPost site.posts }}
  {{ title }}
{{/eachPost}}

Oh wow, create-frame looks awesome. I gave up on Hexo and wrote my own CMS but thanks for sharing your solution! I'll close this issue since you solved it.


Support Login challenge (SPOILER ALERT)

SPOILER ALERT
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
I cannot seem to make this work. I have KeePass 2.35 installed and I have freshly downloaded both files but I still get an error.
Opening file:

Error received:

KeePass version:

File hashes:

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/41705715-support-login-challenge-spoiler-alert?utm_campaign=plugin&utm_content=tracker%2F6283055&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F6283055&utm_medium=issues&utm_source=github).

Just tried myself with KeePass 2.35 and the files from develop branch - it worked.
You used the SVG, not the PNG, right?

I just double checked this and it is still not working for me. Are you able to check that the screens and checksums above match what you are using?

Okay, here are my file hashes (identical for master and develop):

KeePass file: 07 49 42 73 26 7e e5 fc c9 fa 63 71 c2 e0 c6 42 65 42 e7 94 87 4a bf 0b c7 93 27 86 99 f9 d7 1b
SVG logo: c4 db 55 78 be 9a dd 2e 77 bc 78 04 8d 03 92 8a 8a b2 56 d5 8f fb 79 31 34 fd c3 5d 24 df b7 07

Seems that the logo is not identical to yours... Strange... Can you please attach your logo file here so I can diff it with the one from the repo?

Remove the .PDF extension (github won't accept upload of SVG files)
JuiceShop_Logo.svg.PDF
See also this:

Your file is definitely smaller than mine, so something happened to it somewhere on the way...

That's what I suspected... Okay, probably I have to change the challenge to use a binary file...


crypto/tls: advertise correct ciphers in TLS 1.3 only mode

This change updates the makeClientHello logic to only advertise TLS
1.3 ciphers when tls.Config.MinVersion is set to tls.VersionTLS13
(i.e the client only supports TLS 1.3).  Previously, TLS 1.2 ciphers
would be included in the client hello message.

@FiloSottile ping 😄


Add weight mask that are applied to scores during retrieval

This PR should close #35, as the new weight_mask allows the use of binary masks (see new tests) as well as any floating point mask, making it a general purpose weighting mechanism for post-scoring but before top-k candidate selection. At the moment only a single mask (of shape (D,) for D documents) is accepted, mainly due to infeasibility of having a (Q,D) mask when D is large. Future PRs can add support for 2-D masks.

@dl423 FYI

@xhluca Thank you! Really appreciate that you implemented this feature, sorry I didn't get around to implementing this.


staff request: for non-primary agreement holders, don't make submit button be under the 3 dots

Primary AH gets a big button, others have to look for the 3 dots and click it.  For the less than tech savy it isn't super obvious and a few Range Officers have asked that we make it more obvious.

Struggling to see how to reproduce this one, I have a RUP in test with 2 AH, primary and other both have a submit button not under the 3 dots.

Eventually saw it.  Once the primary has submitted the 'Sign' button is only available to AH # 2 under the 3 dots.

related to #544

@calebissharp if you need one to do today can you help out with this?  I've had a poke but am not 100% on how to go about it just yet, and I've got a couple RO's with myra problems to chase down today.

@micheal-w-wells I'm not totally certain the best way to go about doing this, but I think it is a non-trivial amount of work. Let me know if you still want to go ahead with it today.

@calebissharp when i get off the call let's eyeball it together

/remind @calebissharp to make a PR for what we were doing every 5 seconds until noon

@calebissharp Has this been merged? I’m still needing to use the three dots to access the sign submission option rather than a button that says “submit”

It should be. @micheal-w-wells Is there something up with openshift again?

@calebissharp there was one failed one for today (out of memory), so those other builds had no bearing on that issue.  I upped it another 500mb, and changed the run policy to be serial latest which means it runs one at a time, but only the most recent so it will discard no longer relevant ones.
The build with your changes made it through yesterday though.  Might want to test that one out thoroughly and make sure your bases are covered.

@ZoeSimon and I tested this and we didn't see the button there.  I'll double check but as far as I can tell deployments are working @calebissharp.

@micheal-w-wells says "I added some temp placeholder text to prove deployments and merges are working. Note that even after clearing cache I didn't see the new changes! I had to make sure all my myrange tabs were closed and then clear cache in order for it to work"

@calebissharp @LisaMoore1

@LisaMoore1 I can't test this in test, since I don't have any multi-AH RANs. Are you still seeing the option in the menu, or are you not seeing a "Sign submission" button at all? If the former, I think it's a cache problem, if the latter, I'll have to look into reproducing.

@calebissharp The sign option for the additional holders was under the three dot menu.  In the morning on Friday I closed all windows in all browsers and cleared all history/data in both—which in theory should have given me a correct cache clear.  I’ve done the same again this morning and will try to test again when I’ve got a minute.

@calebissharp @LisaMoore1 I just tested this one by signing on the ben.wyatt account as him and leslie.knope have a shared plan under RAN099915, and a "Sign Submission" button was showing up and wasn't hidden under the 3 dots, so I'm thinking this one is all clear? @LisaMoore1 I'd feel more comfortable if you tested and closed it just in case though as I still have rookie status.

Same as for me this morning.  @zoesimon you can go ahead and close this one. 😊


Install TRIK Studio on appveyor for test

Add autoinstall trikstudio script

Download:
Environment: MINGW=C:\Qt\Tools\mingw530_32, QTDIR=C:\Qt\5.11\mingw53_32, QT=5.11, ARCH=x86
installer/trik-studio-installer-master-x86.exe
trik-studio-master_qt5.11_x86.zip
Environment: MINGW=C:\Qt\Tools\mingw492_32, QTDIR=C:\Qt\5.6\mingw49_32, QT=5.6, ARCH=x86
installer/trik-studio-installer-master-x86.exe
trik-studio-master_qt5.6_x86.zip


Eror ketika menjalankan pada platform replit versi PRO

Traceback (most recent call last):
File "/home/runner/voice-pick-tbot-dev/./voice_bot/main.py", line 12, in
from modules.bot_handlers import (
File "/home/runner/voice-pick-tbot-dev/voice_bot/modules/bot_handlers.py", line 27, in
from modules.tortoise_api import tts_audio_from_text
File "/home/runner/voice-pick-tbot-dev/voice_bot/modules/tortoise_api.py", line 2, in
from tortoise.utils import audio
ImportError: cannot import name 'audio' from 'tortoise.utils' (/home/runner/voice-pick-tbot-dev/.pythonlibs/lib/python3.10/site-packages/tortoise/utils.py)

Hello, i'm sorry to hear that you've encountered a problem. I think your issue has to do with lack of dependencies (tortoise 🐢 in particular).
Did you follow the installation instructions in  the readme? Here they are:
git clone https://github.com/152334H/tortoise-tts-fast.git
git clone https://github.com/guillaumekln/faster-whisper.git
python -m pip install -r ./requirements.txt

I'll try to automate this step in the future.
Best of luck;

I have installed that command, to run the script do I run "python ./voice_bot/main.py" ?
Can I ask for it to be repaired so that it can run on the replit platform :D

I have installed that command, to run the script do I run "python ./voice_bot/__ main __.py" ?

No, you should run it as module. From your python environment:
python -m voice_bot

I have installed everything shown and running python -m voice_bot
but still the error
Traceback (most recent call last):
File "/nix/store/xf54733x4chbawkh1qvy91114mlscy1c-python3-3. 10.11/lib/python3.10/runpy.py", line 196, in _run_module_as_ma in
return _run_code(code, main_globals, None,
File "/nix/store/xf54733x4chbawkh1qvy91114mlscy1c-python3-3. 10.11/lib/python3.18/runpy.py", line 86, in _run_code exec(code, run_globals)
File "/home/runner/voice/voice_bot/main.py", line 12, in
from modules.bot_handlers import ( ModuleNotFoundError: No module named 'modules.bot_handlers'; modules' is not a package

I have also tried running on codespaces but the error problem is still the same, can you help me?

how to solve this error, can you help me?

Sure, don't worry. I just haven't run it in a long time, sorry. You don't need to run it as module, but you have to specify path to voice_bot directory when running python.
Like so, from your installed python environment:
git clone https://github.com/Helther/voice-pick-tbot
python voice-pick-tbot/voice_bot

I'll try to update instructions in the future

I've run it but the error still remains as before, hopefully it will be fixed soon so it can be easily used on the replit platform, thank you

I apologize, it took a long, but the issue should be fixed now. I resolved dependencies and bot initialization errors, and also update instructions in README.md.
Hope it helps, cheers.


SSD1306 128x32 display garbled (IDFGH-13950)

IDF version.
v5.3.1
Espressif SoC revision.
ESP32-S3
Operating System used.
Linux
How did you build your project?
VS Code
If you are using Windows, please specify command line type.
None
Development Kit.
ESP32-S3-WROOM-1
Power Supply used.
USB
What is the expected behavior?
Pixels shown on display
What is the actual behavior?
Garbled pixels on display
Steps to reproduce.
Add lvgl and lvg_esp_ports dependency, follow i2c_oled_example_main as close as possible.
Display does initialize, LVGL is initialized, but the pixels show up garbled.
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_timer.h"
#include "esp_lcd_panel_io.h"
#include "esp_lcd_panel_ops.h"
#include "esp_err.h"
#include "esp_log.h"
#include "lvgl.h"
#include "esp_lvgl_port.h"
#include "i2c_bitaxe.h"
#include "driver/i2c_master.h"
#include "driver/i2c_types.h"
#include "esp_lcd_panel_ssd1306.h"

// #define EXAMPLE_LCD_PIXEL_CLOCK_HZ    (400 * 1000)
#define EXAMPLE_I2C_HW_ADDR           0x3C

// The pixel number in horizontal and vertical
#define EXAMPLE_LCD_H_RES              128
#define EXAMPLE_LCD_V_RES              32
#define EXAMPLE_LCD_CMD_BITS           8
#define EXAMPLE_LCD_PARAM_BITS         8

#define I2C_HOST  0

static const char * TAG = "display";

static i2c_master_bus_handle_t i2c_bus_handle;

void example_lvgl_demo_ui()
{
    lv_obj_t *scr = lv_scr_act();

    lv_obj_t *label = lv_label_create(scr);
    lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR); /* Circular scroll */
    lv_label_set_text(label, "Hello Bitaxe, Hello LVGL.");
    /* Size of the screen (if you use rotation 90 or 270, please set disp->driver->ver_res) */
    lv_obj_set_width(label, EXAMPLE_LCD_H_RES);
    lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 0);
}

esp_err_t display_init(void)
{
    // i2c bus is created elsewhere
    i2c_bitaxe_get_bus(&i2c_bus_handle);

    ESP_LOGI(TAG, "Install panel IO");
    esp_lcd_panel_io_handle_t io_handle = NULL;
    esp_lcd_panel_io_i2c_config_t io_config = {
        .scl_speed_hz = 100000, // TODO: get value from constant in i2c_bitaxe.c
        .dev_addr = EXAMPLE_I2C_HW_ADDR,
        .control_phase_bytes = 1,
        .lcd_cmd_bits = EXAMPLE_LCD_CMD_BITS,
        .lcd_param_bits = EXAMPLE_LCD_PARAM_BITS,
        .dc_bit_offset = 6
    };

    ESP_ERROR_CHECK(esp_lcd_new_panel_io_i2c(i2c_bus_handle, &io_config, &io_handle));

    ESP_LOGI(TAG, "Install SSD1306 panel driver");
    esp_lcd_panel_handle_t panel_handle = NULL;
    esp_lcd_panel_dev_config_t panel_config = {
        .bits_per_pixel = 1,
        .reset_gpio_num = -1,
        .color_space = ESP_LCD_COLOR_SPACE_MONOCHROME,
    };

    esp_lcd_panel_ssd1306_config_t ssd1306_config = {
        .height = EXAMPLE_LCD_V_RES,
    };
    panel_config.vendor_config = &ssd1306_config;

    ESP_ERROR_CHECK(esp_lcd_new_panel_ssd1306(io_handle, &panel_config, &panel_handle));

    ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle));
    ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle));
    // ESP_ERROR_CHECK(esp_lcd_panel_swap_xy(panel_handle, false));
    ESP_ERROR_CHECK(esp_lcd_panel_mirror(panel_handle, true, true));
    ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true));

    ESP_LOGI(TAG, "Initialize LVGL");
    const lvgl_port_cfg_t lvgl_cfg = ESP_LVGL_PORT_INIT_CONFIG();
    lvgl_port_init(&lvgl_cfg);

    const lvgl_port_display_cfg_t disp_cfg = {
        .io_handle = io_handle,
        .panel_handle = panel_handle,
        .buffer_size = EXAMPLE_LCD_H_RES * EXAMPLE_LCD_V_RES,
        .double_buffer = true,
        .hres = EXAMPLE_LCD_H_RES,
        .vres = EXAMPLE_LCD_V_RES,
        .monochrome = true,
        .rotation = {
            .swap_xy = false,
            .mirror_x = true,
            .mirror_y = true,
        }
    };
    lv_disp_t *disp = lvgl_port_add_disp(&disp_cfg);

    ESP_LOGI(TAG, "Display LVGL Scroll Text");
    // Lock the mutex due to the LVGL APIs are not thread-safe
    if (lvgl_port_lock(0)) {
        lv_disp_set_rotation(disp, LV_DISPLAY_ROTATION_180);
        example_lvgl_demo_ui(disp);
        // Release the mutex
        lvgl_port_unlock();
    }

    return ESP_OK;
}

Debug Logs.
No response
More Information.
Picture:

the pixels are actually moving, garbled from left to right, which I assume should be the scrolling label text.
The screen used is a 0.91" SSD1306 OLED I2C Display Module

This looks like a bug in the driver code, can you try adjusting this line to use width instead of height?

It looks slightly different, a bit more spread out, but the same sort of noise.
I have a hunch it's in the i2c layer itself, as even if I mimic the initialisation from the current (working) device-purpose SSD1306 driver, it shows exactly the same noise. See this code: https://github.com/skot/ESP-Miner/blob/35855358ada2af5710302cfdc06f4eb05fb1080f/main/oled.c#L40
A short clip to show what I mean, this is without your code change:
https://github.com/user-attachments/assets/673c41a4-72fd-44b8-a954-c1e44290b31e
It's clear there is something scrolling from left to right, and the bottom 1/3rd is garbled noise going back and forth between two frames, which corresponds to the double buffering.

That is very odd, I'd also wonder if it might be something in the LVGL side that is interfering somehow. I've not used LVGL on the SSD1306 but have used basic text output (and supporting SH1106 which is nearly identical code), you can read my init script here, it leverages the older I2C APIs to build a large I2C transfer to configure the display in a single shot.
The height / width issue is still a bug though, from the references I've seen it should be width in that config field.

To verify the i2c code, I made a direct call to esp_lcd_panel_draw_bitmap after the initialisation, and drew a buffer with increasing byte pattern:

It also showed that horizontal addressing is supported by this display, the pattern is visibly different if I change it to vertical or paging.
So it looks like it's somewhere in the LVGL part indeed.

Addendum: running the i2c_oled_example code works on the target hardware, at least with LVGL 8!
If I build the example project with LVGL and fix the compiler warnings, it first triggers a WDT when calling lv_disp_set_rotation. I had the same issue when I added the code to my project.
If I move the set_rotation call into the LVGL lock in the main, the example runs but shows similar noisy garbage on the display. So something broke when going from LVGL 8 to 9. I'm now slowly moving back LVGL versions to see where it actually broke.

Duplicate of espressif/esp-bsp#392


Displaying cheat sheets with markdown

This may be impossible, but I would like to be able to write cheat sheets in Markdown and have them display properly in a terminal afterwards. This would definitely make long ones easier to read.
When I try adding a YAML frontmatter header, as the docs suggest,
---
syntax: markdown
---

Nothing happens, except that the directive I have added displays in plain text.
Is this something the chroma formatter is meant to be able to handle, or am I asking for something impossible?

Hmm. Would you mind pasting or linking your cheatsheet here? This should work already. I have a few personal markdown-formatted sheets that I use, and they seem to work fine.

One thing to check: make sure that you are, in fact, using cheat version 3 rather than 2. (cheat --version will tell you which you're running.)
While developing version 3, a few times I ended up executing version 2 a few times without realizing it, causing some confusion.

Ah. You're right. I was still using 2.4
The problem is that I can't upgrade it -- at least, when I download the
3.01 executable -- cheat-darwin-amd64 --  my mac refuses to run it (under
Catalina). Says it "cannot be opened because the developer cannot be
verified" and offers either to move it to the bit or to cancel.
I suspect this is a problem I could have avoided by not upgrading, but will
consult Google

Andrew Brown
Leader writer,
The Guardian
mobile: +44-(0)7968-945618
On Tue, 29 Oct 2019 at 00:02, Chris Allen Lane<EMAIL_ADDRESS>wrote:

One thing to check: make sure that you are, in fact, using cheat version
3 rather than 2. (cheat --version will tell you which you're running.)
While developing version 3, a few times I ended up executing version 2 a
few times without realizing it, causing some confusion.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cheat/cheat/issues/488?email_source=notifications&email_token=ABII7JOZUTRNOUTEQ22R7GTQQ54TDA5CNFSM4JF3HGZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECOZHWQ#issuecomment-547197914,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABII7JP5M26SRI5YQTVBTVDQQ54TDANCNFSM4JF3HGZQ
.

Yeah, the new version of cheat is backwards-incompatible with prior versions. It's unfortunate, but was necessary.
Run this:
cheat --help
You'll see this line under "Examples":
To initialize a config file:
  mkdir -p ~/.config/cheat && cheat --init > ~/.config/cheat/conf.yml

Run that to create a config file. You'll then want to edit that file to your preferences. It's pretty well-commented and self-explanatory.
One note regarding upgrading cheat going forward: the brew maintainers are doing an excellent job of keeping their package up-to-date, so you should actually be able to install cheat like this:
brew install cheat

(That's assuming that you use brew, of course.)
That might be more convenient that repeatedly downloading the binary

Yeah, the new version of cheat is backwards-incompatible with prior versions. It's unfortunate, but was necessary.
Run this:
cheat --help
You'll see this line under "Examples":
To initialize a config file:
  mkdir -p ~/.config/cheat && cheat --init > ~/.config/cheat/conf.yml

Run that to create a config file. You'll then want to edit that file to your preferences. It's pretty well-commented and self-explanatory.
One note regarding upgrading cheat going forward: the brew maintainers are doing an excellent job of keeping their package up-to-date, so you should actually be able to install cheat like this:
brew install cheat

(That's assuming that you use brew, of course.)
That might be more convenient that repeatedly downloading the binary, because development is going to be very active for the next few days/weeks.

The "front-matter" goes in individual cheatsheets. You don't want to change the structure of the config file at all - just fill in its values.

I enclose an example of a file that

This didn't seem to make it through. Feel free to post it here directly if you'd like if the advice above doesn't solve your problem.

Oh, this is frustrating. And thank you for being so patient.
Here is a paste of the troublesome file

syntax: markdown
tags: [ personal ]
Loops
for name ... [ in word ... ] term do list done

Expand the list of words, and set the parameter name to each of them in
turn, executing list each time. If the ‘in word’ is omitted, use the
positional parameters instead of the words.

The term consists of one or more newline or ; which terminate the words,
and are optional when the ‘in word’ is omitted.

More than one parameter name can appear before the list of words. If N
names are given, then on each execution of the loop the next N words are
assigned to the corresponding parameters. If there are more names than
remaining words, the remaining parameters are each set to the empty string.
Execution of the loop ends when there is no remaining word to assign to the
first name. It is only possible for in to appear as the first name in the
list, else it will be treated as marking the end of the list.

for (( [expr1] ; [expr2] ; [expr3] )) do list done

The arithmetic expression expr1 is evaluated first (see Arithmetic
Evaluation). The arithmetic expression expr2 is repeatedly evaluated until
it evaluates to zero and when non-zero, list is executed and the arithmetic
expression expr3 evaluated. If any expression is omitted, then it behaves
as if it evaluated to 1.

while list do list done

Execute the do list as long as the while list returns a zero exit status.

until list do list done

Execute the do list as long as until list returns a nonzero exit status.

command line history expansion
0
The first input word (command).
n
The nth argument.
^
The first argument. That is, 1.
$
The last argument.
filename globbing

After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a ‘:’. These modifiers also
work on the result of filename generation and parameter expansion, except
where noted.

e

Remove all but the part of the filename extension following the ‘.’; see
the definition of the filename extension in the description of the r
modifier below. Note that according to that definition the result will be
empty if the string ends with a ‘.’.

h

Remove a trailing pathname component, leaving the head.  Strings with no
filename extension are not altered. A filename extension is a ‘.’ followed
by any number of characters (including zero) that are neither ‘.’ nor ‘/’
and that continue to the end of the string. For example, the extension of
‘foo.orig.c’ is ‘.c’, and ‘dir.c/foo’ has no extension.

t
Remove all leading pathname components, leaving the tail. This works like
‘basename’.
u
Convert the words to all uppercase.
Glob Qualifiers

Patterns used for filename generation may end in a list of qualifiers
enclosed in parentheses. The qualifiers specify which filenames that
otherwise match the given pattern will be inserted in the argument list.

/
directories
F

‘full’ (i.e. non-empty) directories. Note that the opposite sense (^F)
expands to empty directories and all non-directories. Use (/^F) for empty
directories.

.
plain files
@  symbolic links
a[Mwhms][-|+]n

files accessed exactly n days ago. Files accessed within the last n days
are selected using a negative value for n (-n). Files accessed more than
n days ago are selected by a positive n value (+n). Optional unit
specifiers ‘M’, ‘w’, ‘h’, ‘m’ or ‘s’ (e.g. ‘ah5’) cause the check to
be performed with months (of 30 days), weeks, hours, minutes or seconds
instead of days, respectively. An explicit ‘d’ for days is also allowed.

L[+|-]n

files less than n bytes (-), more than n bytes (+), or exactly n bytes
in length. If this flag is directly followed by a size specifier ‘k’ (‘K’), ‘m’ (‘M’), or ‘p’ (‘P’) (e.g. ‘Lk-50’) the check is performed
with kilobytes, megabytes, or blocks (of 512 bytes) instead. (On some
systems additional specifiers are available for gigabytes, ‘g’ or ‘G’, and
terabytes, ‘t’ or ‘T’.)

oc

specifies how the names of the files should be sorted. If c is n they are
sorted by name; if it is L they are sorted depending on the size (length)
of the files; if l they are sorted by the number of links; if a, m, or c
they are sorted by the time of the last access, modification, or inode
change respectively; if d, files in subdirectories appear before those in
the current directory at each level of the search — this is best combined
with other criteria, for example ‘odon’ to sort on names for files within
the same directory

Oc

like ‘o’, but sorts in descending order; i.e. ‘(^oc)’ is the same as
‘(Oc)’ and ‘(^Oc)’ is the same as ‘(oc)’; ‘Od’ puts files in the current
directory before those in subdirectories at each level of the search.

Andrew Brown
Leader writer,
The Guardian
mobile: +44-(0)7968-945618
On Tue, 29 Oct 2019 at 16:00, Chris Allen Lane<EMAIL_ADDRESS>wrote:

The "front-matter" goes in individual cheatsheets. You don't want to
change the structure of the config file at all - just fill in its values.
I enclose an example of a file that
This didn't seem to make it through. Feel free to post it here directly if
you'd like if the advice above doesn't solve your problem.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cheat/cheat/issues/488?email_source=notifications&email_token=ABII7JN6K4C7MSTX6CUH43DQRBM2JA5CNFSM4JF3HGZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECRCDRI#issuecomment-547496389,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABII7JJ66ATRHCWVLHDK44DQRBM2JANCNFSM4JF3HGZQ
.

@seatrout
Hmm... Your cheatsheet actually displays just fine on my machine. I see nice colorized headings and such.
One more time: what's your output from this command?
cheat --version

I'm wondering if you still have a version 2 on your path somewhere.
Feel free to paste your cheat config file here as well.

cheat -- version gives me 3.0.1
I get the colourised headings and code. though the colours of the headings
are not very helpful (see screenshot).
But I don't get the text indented as it should be, and the markdown
characters for headings and so on remain visible in the terminal.
See the enclosed screenshot, with a terminal window in front of the VScode
preview
I think the problem lies in the underlying library, and the randomness with
which it assigns elements to colours. I have fooled around with a lot of
different "style" settings in conf.yml and none of them do any more
formatting than simply colouring elements differently; also, none seem to
have a setting which makes all the different elements readable. I know all
this is better than what we had, and I don't want to complain groundlessly.
Maybe it's just another example of the capacity of software to frustrate us
by promising a little more than it can deliver in this case full-on
markdown rendering.
A
[image: Screenshot 2019-10-29 at 20.38.15.png]

Andrew Brown
Leader writer,
The Guardian
mobile: +44-(0)7968-945618
On Tue, 29 Oct 2019 at 17:37, Chris Allen Lane<EMAIL_ADDRESS>wrote:

@seatrout https://github.com/seatrout
Hmm... Your cheatsheet actually displays just fine on my machine. I see
nice colorized headings and such.
One more time: what's your output from this command?
cheat --version
I'm wondering if you still have a version 2 on your path somewhere.
Feel free to paste your cheat config file here as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cheat/cheat/issues/488?email_source=notifications&email_token=ABII7JLDDK4CG3NTJRTJLSTQRBYFVA5CNFSM4JF3HGZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECRNTOQ#issuecomment-547543482,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABII7JMS3R7OISOU7XD4HXLQRBYFVANCNFSM4JF3HGZQ
.

For what it's worth, here is also my current conf.yml file

The editor to use with 'cheat -e '. Defaults to $EDITOR or $VISUAL.
editor: vim
Should 'cheat' always colorize output?
colorize: true
Which 'chroma' colorscheme should be applied to the output?
Options are available here:
https://github.com/alecthomas/chroma/tree/master/styles
style: solarized-dark
Which 'chroma' "formatter" should be applied?
One of: "terminal", "terminal256", "terminal16m"
formatter: terminal16m
The paths at which cheatsheets are available. Tags associated with a cheatpath
are automatically attached to all cheatsheets residing on that path.

Whenever cheatsheets share the same title (like 'tar'), the most local
cheatsheets (those which come later in this file) take precedent over the
less local sheets. This allows you to create your own "overides" for
"upstream" cheatsheets.

But what if you want to view the "upstream" cheatsheets instead of your own?
Cheatsheets may be filtered via 'cheat -f ' in combination with other
commands. So, if you want to view the 'tar' cheatsheet that is tagged as
'community' rather than your own, you can use: cheat tar -f community
cheatpaths:
Paths that come earlier are considered to be the most "global", and will
thus be overridden by more local cheatsheets. That being the case, you
should probably list community cheatsheets first.

Note that the paths and tags listed below are just examples. You may freely
change them to suit your needs.

name: community
path: ~/.cheat/community
tags: [ community ]
readonly: true

Maybe your company or department maintains a repository of cheatsheets as
well. It's probably sensible to list those second.
- name: work
path: ~/.cheat/work
tags: [ work ]
readonly: false
If you have personalized cheatsheets, list them last. They will take
precedence over the more global cheatsheets.

name: personal
path: ~/.cheat/personal
tags: [ personal ]
readonly: false

Andrew Brown
Leader writer,
The Guardian
mobile: +44-(0)7968-945618
On Tue, 29 Oct 2019 at 17:37, Chris Allen Lane<EMAIL_ADDRESS>wrote:

@seatrout https://github.com/seatrout
Hmm... Your cheatsheet actually displays just fine on my machine. I see
nice colorized headings and such.
One more time: what's your output from this command?
cheat --version
I'm wondering if you still have a version 2 on your path somewhere.
Feel free to paste your cheat config file here as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cheat/cheat/issues/488?email_source=notifications&email_token=ABII7JLDDK4CG3NTJRTJLSTQRBYFVA5CNFSM4JF3HGZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECRNTOQ#issuecomment-547543482,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABII7JMS3R7OISOU7XD4HXLQRBYFVANCNFSM4JF3HGZQ
.

@chrisallenlane I'm on version 3.0.3 and am running into the exact same issue - no Markdown
rendering.

I confirmed with @seatrout via another channel that cheat is behaving as expected. I'll elaborate on the situation here for other users that may encounter this issue in the future.
cheat (currently) will apply syntax-highlighting to markdown, but it does not render markdown via any kind of layout engine. (I'm not aware of whether any such engine is conveniently available for use.) As a consequence, cheat will colorize markdown documents, but it will not format them as one would expect to view them on Github.
While possibly unfortunate, this is the current intended behavior. That being the case, I'm going to close this issue as resolved.
With that said, the ability to render markdown could be useful. I have opened #494 to track this proposed feature going forward.

@zeitchef, I assume you're experiencing the same behavior. If not, feel free to re-open this ticket. Thanks.


keystatic.config.ts not found

Framework: Astro
Description:
I'm currently developing an educational platform using Keystatic within the Astro framework. As part of this development, I've integrated a LaTeX notation component into the editor, allowing our writers to seamlessly insert LaTeX into their posts.
Editor View:

Rendered Result:

I'm aiming to render LaTeX styles within the editor itself. I've attempted to achieve this by following the steps outlined in the Add Component Blocks To The Document Field In Keystatic video tutorial. However, when I change the keystatic.config.ts file to .tsx, the Keystatic Admin UI fails to display, and I encounter the following error: [404] /keystatic.config.ts.
Error Screenshot:

I'm specifically trying to render two Content Components, one for inline LaTeX and another for block LaTeX. These components are implemented as Astro components. Do I necessarily require a React component to render in the Admin UI? how can I resolve the 404 error within Astro?
Link to the repository I'm working with: Ideal Project Repository
Any assistance or guidance on resolving this issue would be greatly appreciated. Thank you!

Hey!
Unfortunately, you need React components to display something inside the Keystatic Admin UI, since Keystatic is a React app.
I know it's sort of frustrating, but you have to double up your effort at the moment to re-create the same components for preview in the Admin UI.
As per the .tsx config extension — when you change the config file from .ts to .tsx you need to restart the server manually, and sometimes also delete the generated .astro folder. The config file will eventually start working again.

Thank you so much for responding, after sometime I've realized about the .astro folder being the problem. I did add eventually a react component for the latex notation, but it was later remove because some optimization problems.


Tracker: tasks for the state machine portion QGB 2.0

This issue will be a tracker for the work for the QGB 2.0. New tasks will be added as they pop up.
Must have

[x] https://github.com/celestiaorg/celestia-app/issues/309
[x] https://github.com/celestiaorg/celestia-app/issues/332
[x] https://github.com/celestiaorg/celestia-app/issues/683
[x] https://github.com/celestiaorg/celestia-app/issues/684
[ ] https://github.com/celestiaorg/orchestrator-relayer/issues/3
[x] https://github.com/celestiaorg/celestia-app/issues/843
[x] https://github.com/celestiaorg/celestia-app/issues/879

closing as outdated and it looks like we finished most things


Some short turn command freezes the motor and webserver

Method: GET
Accept: application/json  or  /
45° left:
http://<IP_ADDRESS>/command/DRIVE_K  // freezes
http://<IP_ADDRESS>/command/DRIVE_l   // works
45° right:
http://<IP_ADDRESS>/command/DRIVE_Q  // freezes
http://<IP_ADDRESS>/command/DRIVE_r   // works
The processing is same in each case:
ubot_turtle#move resolve the char / int by _moveCharMapping dictionary.
This dict helps converting ints to direction-duration int tuples.
ubot_turtle#move passes this tuple as separate arguments to ubot_motor#move.
The processing is successful, the webserver sends it's reply, but after that it
is not respond, and the motor module also stucks in processing:
motor.isProcessing() is true, _moveList is []
motor.move(0,0), motor.stop() and then motor.resume() helps...

Other upper caps also don't work (as first or stand-alone).
However, all of them works if something else is the first char.

Sending a REST reply immediately. (Only about a "Future". Links without content.)
Start processing.
Creating the Future according to the second point.

Solved: cf96b9f54d13777785efd497f7fff6913ff6f2d0


Version 1.0

Hello, when will a v1.0 be released? We are developing an app but need to take a dependency on a stable library.
Thanks!

Hi @aggFTW,
While I wish I could give you a clear answer, there are still many features and a considerable amount of stress/performance that needs to be completed before we release v1.0/GA. However, It is something we are making great progress towards, we'll be sure to keep the community up-to-date when have a more definitive timeline.

Do you have a timeline for when you'd have a timeline? :)


Remove TLSv1 restriction

Using ssl.PROTOCOL_TLSv1 will fail when the Webserver does not support TLSv1 anymore. Also, specifying a TLS version is deprecated according to the documentation of the SSL module: https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1
This patch exchanges it for the proposed ssl.PROTOCOL_TLS.

Thank you for your contribution.
I very much like this idea.
Unfortunately the "ssl.PROTOCOL_TLS" is first introduced in python 3.6, yet there are still many python 3.4/3.5 installations out there (RHEL / Debian stable).
I will include your fix and a python version switch asap

Should be resolved with 4421ec4ac9fd08f471c2ec0f4094e31494b0ab21


[🐛 in gh-pages]:  aurora image is cropped on 4K resolutions

The aurora effect on the site homepage is crooped.
Page(s)
https://esl-ui.com
Environment
- Display Resolution: 2K + screen wide

OS: Windows 10
Browser: Chrome/106.0.5249.119

Screenshots

:tada: This issue has been resolved in version 4.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[FLINK-31068] Document how to use Opensearch connector with OpenSearch 1.x / 2.x / 3.x (upcoming) clusters

Document how to use Opensearch connector with OpenSearch 1.x / 2.x / 3.x (upcoming) clusters

@MartijnVisser could you have a second to look (only docs update), thank you


Added missing types for return values

Description
Added missing types for return values
Type of change

[x] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library

/lgtm

/approve


Want to keep this mirror going?

As communicated before, this repository is no longer synchronized from SVN. If you want to have a mirror like this one that can be kept in sync, please be interested in https://github.com/gabrys/svn2github

FYI I've updated my fork


Empty partition assignment

This pull request causes a BalancedConsumer that has no assigned partitions to immediately stop() itself. It fixes #313.

This looks good to me. I've one issue I encountered while testing it, which is its own bug in a way, but also ties in with this one: if I take the steps that you wrote in the test, and then try to consume(), I get an AttributeError: 'NoneType' object has no attribute 'consume'. I suppose that should have been a ConsumerStoppedException at least, but maybe we could define a specific exception for this situation, so the user can tell why it stopped (something like a class TooManyConsumers(ConsumerStoppedException): maybe)?


Item display name showing up as "item.modname.itemname" instead of using the en-us.json translation key

I followed episode 3 of your modded 1.16.5 tutorial series, but I can't figure out why the en-us.json is reading the translation key identifier, but not the actual associated translation.
Ie.
If I was doing an amethyst, it's reading as:
"item.tutorialmod.amethyst" in-game instead of:
"Amethyst".
the en-us.json is not being read correctly.
I'm doing this in 1.16.5

OU Shit, I ran into the same problem, they have not yet been solved _ (


Question: About architectural deploy and HA

hi,
i have maybe 2 question.

Should i have one oauth2 proxy process per application? or could i have just one and redirect to more than one app.

any way to have oauth2 proxy LB setup?

Thanks in advance

Thank you very much for ur answer


micro list timeout when micro service process paused via debugger

Observed behavior
When debugging micro service and a breakpoint is reached, nats micro list returns No results received after a 5 second timeout. This does not occur every time when running steps to reproduce. 90% of the time would be more apt. In other 10% the command returns nats: error: no micro instances found immediately.
After 8 minutes of having a program stopped on a breakpoint the timeouts stop and the result of nats micro list returns to being nats: error: no micro instances found
I've observed that when multiple services are running (same of different) in a different process  nats micro list returns the list of services immediately  without timeout, without listing the one that is paused on a breakpoint.
This feels like there is an inconsistency when handling communication with services.
0 services - immediate return with no instances found
1 blocked service  - 5s timeout with no result received
1 blocked service, 1 working service - immediate return with 1 working instance found

This might not be that big of an issue (or it might be working as expected) but it might be a simptom of a yet undiscovered issue, hence the reason for making this issue.
Expected behavior
I would think that one of these two result to different scenarios would be more consistent as opposed to the current results especially since the timeout does no occur every time when running the steps to reproduce:
Option A
0 services - immediate return with no instances found
1 blocked service  - immediate return with no instances found
1 blocked service, 1 working service - immediate return with 1 working instance found
Option B
0 services - immediate return with no instances found
1 blocked service  - 5s timeout with no result received
1 blocked service, 1 working service - 5s timeout with return of 1 working instance found
Server and client version
nats server - v2.10.16
nats cli client - v0.1.4
nats go client - v1.34.1
Host environment
PopOS 22.04 LTS
VSCodium 1.89.1
Steps to reproduce
Start nats server: docker run -p 4222:4222 nats:alpine
Start watching for list of micro services watch -n 1 nats --server=nats://<IP_ADDRESS>:4222 micro list
Paste this code into a test file:
func TestBlockNatsMicro(t *testing.T) {
	nc, err := nats.Connect(nats.DefaultURL)
	if err != nil {
		t.Fatal(err)
	}

	_, err = micro.AddService(nc, micro.Config{
		Name:    "test",
		Version: "0.0.2",
		Endpoint: &micro.EndpointConfig{
			Subject: "test",
			Handler: micro.HandlerFunc(func(r micro.Request) {}),
		},
	})
	if err != nil {
		t.Fatal(err)
	}

	// at this point service should be visible in the console
	time.Sleep(time.Second*5)
	// when reached this breakpoint the `nats micro list` returns
	// "No results received" after a 5 second timeout
	fmt.Println("breakpoint")
	// at this point service should be again visible in the console
	time.Sleep(time.Second*5)
}

Add a breakpoint on line fmt.Println("breakpoint")
Run the test with debugger
Observe the results
NOTE that if the result of the watched nats command does not return No results received, restart the debugger since the issue does not always occur..

If the service is suspended but the NATS connection have not timed out the server still expects the client to be there (so no “no responders” error).
I don’t think there is anything to be done on this the CLi has no way of knowing what is going on - server says sojeone is there so we wait.
Only remedy is to increase ping frequencies so the stake client is detected earlier

Shouldn't the same timeout occur when there are multiple different services running and one is suspended?
Currently the timeout only occurs when these is on service running and it is suspended.

when there are responses It gets what response it gets, waits 300ish ms after the last one and shows you what it got.
however the very first response it will wait for the full configured timeout which is the most reliable way to do it.  While your app is suspended its no different from a machine with some packet loss or similar unreliable connection so we wait.