decryption is probably outdated, spits out random stuff

Heyo, this is an example of what decrypt() in ReplayCrypt.php spits out:

��DI��-G��M��:

I'm guessing this is due to the fact that the encryption method has changed. If you don't have the time or simply don't want to look into this, I'd appreciate an idea of where to start looking and how one figures out how it's encrypted.
Greetings

Hello,
I don't think the decryption method is outdated, but you may be right.
By the way, the decrypted file in not readable by human. It's a plain text binary file. But you should be able to read some strings, like players name or "TURRET", somethings like that. So if you can read strings, the file is successfully decrypted :)

Prompt response, here we go:
I have printed out everything I'm getting after decrypting, then searched for 'turret' but can't find anything. I'm aware this won't be very useful at all for the human eye, but I'm hoping I can reconstruct some stuff out of it.
Let me know if I can be of help in any way whatsoever, I'm really eager to get my hands on this. I'm just not sure about how to tackle the decryption issue...

Can you upload one of your keyframe please ? One decrypted version file and raw (encrypted) version file.
Thanks !

1.txt
1.txt
first keyframe of a random game as the example script spit it out.

Thanks for the files but I forgot to ask you the game id & encryption key, sorry :(
Can you give me this info ?

metas.json.txt
That should do, right?

Indeed, thanks !

Hmm, it seems the decryption algo is outdated indeed.
I'll try to find the new algo, but don't expect that I find the solution in the next few days :/

@Divi
Cool, thanks. I'll be looking forward to it! :+1:

I'm not sure it's even possible to find the new algo because decrypting keyframe/chunk is now forbidden by LoL Terms of Use since september 2014. We were a community of developers on the old algo and we had a lot of time. But for the new one, no one want to find it because parsing is not allowed anymore.
It appears that the decryption algo is outdated since 2015.
For now, I'll add a deprecated mention is the readme.
Feel free to reopen the issue if you find something.


Update configure-public-ip-bastion.md

update ip prefix support from customer confusion.

@mbender-ms
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


KAS-3797: Slow government domain requests

Adds an extra "forever cache" that never gets invalidated to the stack. This is used for the concepts and concept schemes because they're static data and we want to prevent ever busting the cache (as some calls are pretty slow).
Related PRs:

[ ] https://github.com/kanselarij-vlaanderen/cache-warmup-service/pull/11

Jenkins:

http://kal-kastaar.s.redpencil.io:8080/job/kaleidos/job/custom_frontend_backend_combination/344/

Note: using semtech/mu-cl-resource:feature-contstruct-based-fetches lowered the request time considerable (from ~22s per batch to ~12s).

Looks good. Just added a "request changes" to make sure the cache-warmup-service gets bumped before we merge this.
Also, out of curiosity because I honestly don't know: if not here, where is the forever-cache configured to be persistent forever? An environment variable? If so, how is it distinguished from the regular cache config?

mu-cl-resources has an env variable for where to send cache clears to. In our stack it's set to the (regular) cache. By not changing that env variable the "forever cache" will never receive cache clears and won't be cleared.

Pretty sure we need some more config for jenkins to work with the cache. I'll take a look

From what I can tell we are also loading some other things into the forever cache, but dispatcher does not know about it yet
Talking about these 4
const STATIC_TYPES = [
  'publication-statuses',
  'publication-modes',
  'urgency-levels',
  'regulation-types',
];

Do we want to send other things to the forever-cache?  Could be follow-up ticket.
like themes, subcase-types, maybe others.

Are the allowed groups correct for admin? on "secretarie" the forever cache loads fast. on Admin, the government fields all miss the cache, still needing a very long load time.

also, no longer need custom builds. There is a frontend branch running https://github.com/kanselarij-vlaanderen/frontend-kaleidos/pull/1676

Are the allowed groups correct for admin? on "secretarie" the forever cache loads fast. on Admin, the government fields all miss the cache the very first time, still needing a very long load time. No cache clears are incoming, so that works as expected.

Besides this weird behavior it seems to work nicely. tests on PR have started well (9 run without fail (including flaky agenda-notice.spec).

Are the allowed groups correct for admin? on "secretarie" the forever cache loads fast. on Admin, the government fields all miss the cache, still needing a very long load time.

I'll look into it. are all the first concept calls uncached, or which one specifically did you notice? IIRC the first call after logging in will always be uncached due to how the allowed groups are set on a request. So if you're noticing it on the first call it may be due to that?


Is DXVK-Remix subject to the NVIDIA RTX SDKs License?

Hey
DXVK-Remix is dual-licensed under the permissive MIT and zlib licenses, which generally allow for integration into GPL-like projects. However, it links to parts of the RTX SDK, which has a more restrictive license and specifically prohibits linking against GPL-like licenses.
I'm uncertain if utilizing RTXDI as a submodule would circumvent this restriction, to my understanding it's fine for DXVK-Remix to be licensed under MIT, but it cannot be linked to GPL codebases due to the RTXDI module being under the Nvidia RTX SDK License.

What would you gonna link that is GPL to the dxvk dlls?


Prioritize the ID when printing track labels

Related to b/169663076.
Screenshots:

Could this mess with custom track names like from the manual instrumentation API or others coming in the future?
I imagine that having a name with '(' or '[' will trigger that behaviour even if it might be unintended.
Maybe that behaviour should be controlled by the code that also generates the label? In this case we wouldn't need to detect the part at the end.
WDYT?

Could this mess with custom track names like from the manual instrumentation API or others coming in the future?
I imagine that having a name with '(' or '[' will trigger that behaviour even if it might be unintended.
Maybe that behaviour should be controlled by the code that also generates the label? In this case we wouldn't need to detect the part at the end.
WDYT?

I was not sure. I though about that a few. The another option implies adding a ID number for every different kind of track, when probably there is no going to be a collision there.
Also I can improve that taking the rightmost opening symbol ('[','{' or '('), but if you think that it's still strange, I can move the to the another option.

Could this mess with custom track names like from the manual instrumentation API or others coming in the future?
I imagine that having a name with '(' or '[' will trigger that behaviour even if it might be unintended.
Maybe that behaviour should be controlled by the code that also generates the label? In this case we wouldn't need to detect the part at the end.
WDYT?

I was not sure. I though about that a few. The another option implies adding a ID number for every different kind of track, when probably there is no going to be a collision there.
Also I can improve that taking the rightmost opening symbol ('[','{' or '('), but if you think that it's still strange, I can move the to the another option.

I'm not sure since I don't know much about the code and how it interacts. Having an ID separate from the label and combining them just before rendering sounds to me like a proper solution. But I'm not sure if it's worth it and if that has other problem.
@pierricgimmig What is your opinion?

I think this should be handled by thread track type. @beckerhe is right, this could have have undesired behavior for manual instrumentation tracks.  One possible solution would be to have a "virtual size_t GetNumberOfPrioritizedTralingCharacters() " method that would default to 0 but that individual track types could override. That number could then be computed once when we create the label and be cached.

@beckerhe is right, this could have have undesired behavior for manual instrumentation tracks. One possible solution would be to have a "virtual size_t GetNumberOfPrioritizedTralingCharacters() " method that would default to 0 but that individual track types could override. That number could then be computed once when we create the label and be cached.

Thanks for your suggestions. You are clearly right. I've pushed a new commit.
Instead of making a virtual function, I made Get and Set functions, so we can set the number exactly when we are setting the label to be printed. WDYT?

Instead of making a virtual function, I made Get and Set functions, so we can set the number exactly when we are setting the label to be printed. WDYT?

Yeah even better, thanks.


[ImageResizer] Moving from ModernWPF to WpfUI

Summary of the Pull Request
This PR introduces a refreshed UX, more inline with the W11/WinUI look and feel:

Deprecating ModernWPF, replaced by WpfUI
New design

Old vs. new:

PR Checklist

[x] Closes: #1053
[ ] 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

Validation Steps Performed

Just to note and so it doesn't get lost, I'll check the difference in terms of size difference from ModernWPF to WPF UI when reviewing this PR, as requested by @niels9001 .

/azp run

Just curious: Is WinUI 3 considered? I read some comment mentioning switching to WinUI 3. Thanks!

@niels9001 did you see this project too?
https://github.com/InkoreStudios/UI.WPF.Modern
UI.WPF.Modern
and
wpfui
Both are great

Just curious: Is WinUI 3 considered? I read some comment mentioning switching to WinUI 3. Thanks!

There are currently other prioritizations and are no plans to bring this module to WinUI3.. so figured to atleast make it look like a great W11 experience using WpfUI :)

ImageResizer theme is always dark (I.e. it doesn't respect Windows theme change). Other than that everything looks good.
In terms of the size difference, new ImageResizer adds only 3MB

Is this scenario not working for you?

ImageResizer theme is always dark (I.e. it doesn't respect Windows theme change). Other than that everything looks good.
In terms of the size difference, new ImageResizer adds only 3MB

Is this scenario not working for you?

Sorry for the late response. It works great now :) Not sure what changes :)

Let me know if you need some help with merge conflicts and build failure :) I believe this is ready to merge as soon as those are resolved

Let me know if you need some help with merge conflicts and build failure :) I believe this is ready to merge as soon as those are resolved

nice


[android] Updates android with PyTorch 2.2.2

Description
Brief description of what this PR is about

If this change is a backward incompatible change, why must this change be made?
Interesting edge cases to note here

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 72.47%. Comparing base (97c6a0d) to head (6c1e875).
Report is 13 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3236      +/-   ##
============================================
+ Coverage     63.52%   72.47%   +8.94%
- Complexity     6453     7309     +856
============================================
  Files           697      677      -20
  Lines         32808    32455     -353
  Branches       3419     3416       -3
============================================
+ Hits          20842    23521    +2679
+ Misses        10388     7322    -3066
- Partials       1578     1612      +34

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


[Bug]: js_run_devserver: if 'tool' consumes stdin stream, js_run_devserver no longer syncs files on ibazel changes

What happened?
Discovered an interesting one. For js_run_devserver, if the tool/command consumes the stdin stream, then the tool itself receives the "IBAZEL_BUILD_COMPLETED SUCCESS" messages from ibazel rather than the js_run_devserver.mjs script itself.
This causes js_run_devserver to no longer sync files to its custom sandbox after ibazel has completed.
I believe the issue is because the child process directly inherits the stdin stream. Line 221 of js_run_devserver.mjs:
const proc = child_process.spawn(tool, toolArgs, {
    cwd: cwd,
    stdio: 'inherit',  // <----
    env: env,
})

Version
Development (host) and target OS/architectures: MacOS Monterey
Output of bazel --version: 6.2.0
Version of the Aspect rules, or other relevant rules from your
WORKSPACE or MODULE.bazel file<EMAIL_ADDRESS>(not the latest of 1.32.1, but the one that has https://github.com/aspect-build/rules_js/pull/1210 merged in for the moment until https://github.com/aspect-build/rules_js/pull/1233 merges :))
How to reproduce
Just playing with e2e/js_run_devserver/src, and running the :serve_simple script.
If I add the following snippet into simple.js, then js_run_devserver stops syncing:
process.stdin.on('data', chunk => {
    console.log(`Child process's chunk! `, chunk.toString());
});

Any other information?
I think the way to fix this may be to duplicate the stdin stream's contents inside js_run_devserver.mjs, and pass that to the child process after reading it for "IBAZEL_BUILD_COMPLETED SUCCESS" messages.
There's probably some good 3rd party libraries that do this in a one-liner, but just creating a new stream.Writable for the child process's stdin and writing to it should do the trick.

Actually, apologies, the fix is even simpler:
const proc = child_process.spawn(tool, toolArgs, {
    cwd: cwd,
    stdio: ['pipe', 'inherit', 'inherit'],  // <-- changed
    env: env,
})
process.stdin.pipe(proc.stdin)

I'll create a PR

Hmm, actually, was just thinking: what if we delayed the write of the "IBAZEL_BUILD_COMPLETED SUCCESS" message to the child process's stdin until after js_run_devserver has sync'd all the files to its sandbox?
I'm thinking that js_run_devserver wants to listen for "IBAZEL_BUILD_COMPLETED SUCCESS" to sync its files, and then maybe a wrapper around Webpack/Vite/esbuild/etc. running in the child process can use the message to trigger a rebuild immediately after (i.e. as soon as js_run_devserver's sync is complete).
Thoughts?

Implemented the above in #1244. Let me know what you guys think

Discovered another reproduction:
Add the following webpack config to e2e/webpack_devserver/webpack.config.js:
watchOptions: {
    stdin: true
}

Run ibazel :dev from the e2e/webpack_devserver folder.
js_run_devserver will no longer sync source files to the sandbox after they're saved ~90% of the time (it will sync once in a while)


OAuth2: resource-server / client

following https://github.com/jhipster/jhipster-lite/pull/443

Currently, the API OAuth2 generates:

client - https://www.baeldung.com/spring-security-5-oauth2-login
resource-server - https://www.baeldung.com/spring-security-oauth-resource-server

After some discussion with @Bolo89 and following this very important comment https://github.com/jhipster/jhipster-lite/issues/270#issuecomment-1014090299 too, let's discuss about how to have a better minimal option for microservice (for example)
cc @Bolo89 @pblanchardie

For user-facing monoliths without reusable APIs, a better minimal option would be "login-only" (without resource server). It was the first version of the previous PR, so it would be easy to reproduce.
Microservices and standard Web Services should not provide "login" but only JWT, so SecurityConfiguration should override the default configuration without oauth2Login(). See https://www.baeldung.com/spring-webclient-oauth2#avoiding-oauth2login
"login" must not be confused with "client":

oauth2Login() provides the OAuth2 login feature for end-users interacting with the application
oauth2Client() is used for machine-to-machine communications, with eg. WebClient

So there is another case, which is "client-only" for a job that calls APIs but doesn't not expose anything. It's a less common scenario, and although I implemented it in a previous attempt, I guess it won't be very useful.
Do you confirm that we prefer distinct endpoints over common endpoints with options?

Thanks for clarification @pblanchardie
Indeed you're right about oauth2Login(), see the generator-jhipster:

monolith
reactive

I'll see how to propose something smatter, with your initial idea. Maybe 2 versions of OAuth2:

one with login (generally, used with a front): probably the default one
one without login

About endpoints, yes, for now, I prefer distinct endpoints, until this ticket is solved: https://github.com/jhipster/jhipster-lite/issues/144
Then, it can be changed later, during refactoring if needed.

The new module OAuth2 is better now, thanks to @DamnClin
So this ticket can be closed, if there are some suggestions, we can open a new ticket to discuss


Make tests and examples executables conditional

Hi,
Having test and example executables optionally removed would be nice to have as it would cut down installation and package generation times (I'm writing an AUR package for ctpg right now btw).
Thanks for you work so far :)
Regards,
Jules

Not sure what you mean. The examples are not built at all in the cmake. You don't have to run tests either. I'm not really familiar how AUR packages work.

Tests are being built when make install is called, it doesn't break packaging at all but it makes installation dependent on having a compiler installed and add an unnecessary step for installation. AUR packages provide scripts to build and install software, users have to build them at each update, and thus being able to remove an unnecessary compilation step for installation would allow for quicker install for AUR package users. As I said it's just a nice-to-have, not a critical issue at all.

I'm ok doing this improvement. Can you save me some time and please provide a patch for CMakeLists.txt so that tests are built only for a specific 'test' target?

Thanks for help. It all looks fine.

Let me know when this reaches AUR, I'll mention it in the installation notes.


PING message

This is a draft of a PR to start a discussion on my thoughts on how to implement a PING message sent from server to client.
As it is now, the server will send a PING message to the client every 10 seconds unless there is any communication from the client. Any communication from the client will reset this timer.
10 seconds is of course an unreasonable interval, this is just for developing the functionality.
Still to implement:

[ ] Proper placement of .put() and manage to remove if user: checks.
[ ] Assert that client returns a PONG :mantatail within a given time after server sends a PING.

@Akuli: Looking for your thoughts on this way of implementing this functionality, and if it's good, what do I need to consider?

threading.Timer should make this a lot easier.

YAY! That's brilliant! I didn't know it existed, it even has a .cancel()!
Cred to be for the attempt of a brute-force solution, though? xD


Complain about Lark

Do you have any problems with Lark that aren't necessarily bugs?
Is there anything about the design that you don't like? Or the interface? Don't like how issues or releases are handled?
This is the place to complain!
It's okay if there are no practical solutions either. I'm just curious to hear.

My complain about lark is that I cannot use it when programming on C or C++, Java, Javascript, etc. A possible solution would be generate a LALR parser in C/C++, Java, Javascript, etc, which can be imported and used by these applications.
Although, while programming in Python, I never generated an parser. I just pip install lark-parser and import it directly into my application. Then, when programming on other languages, I would have to change my workflow. As part of the build process, I would have to call some script to run a Python program to generate a self contained Lark parser. This would be nice because still can install lark with pip install lark-parser and use it in any other language.
This would also be portable for old GCC compilers as 4.4 because on these systems as Debian 7, the available Python interpreter is Python 2 and lark supports Python 2. However, lark would have to generate C code compatible with standard 99 and C++ code compatible with standard 98.
I just wonder how the Python grammar would be exportable to C++, as it uses a python class directly for the indentation:
https://github.com/lark-parser/lark/blob/54027942515054682a2958d7a7570a162311c177/examples/python_parser.py#L15-L25
That is also something I do not understand well in lark. While looking into ANTRL grammars, I see they directly run Java code, for calculation the Python indentation in their Python grammar:
https://github.com/antlr/grammars-v4/blob/master/python3/Python3.g4#L36-L54
...
tokens { INDENT, DEDENT }

@lexer::members {
  // A queue where extra tokens are pushed on (see the NEWLINE lexer rule).
  private java.util.LinkedList<Token> tokens = new java.util.LinkedList<>();
  // The stack that keeps track of the indentation level.
  private java.util.Stack<Integer> indents = new java.util.Stack<>();
  // The amount of opened braces, brackets and parenthesis.
  private int opened = 0;
  // The most recently produced token.
  private Token lastToken = null;
  ...

  @Override
  public Token nextToken() {
    // Check if the end-of-file is ahead and there are still some DEDENTS expected.
    if (_input.LA(1) == EOF && !this.indents.isEmpty()) {
      // Remove any trailing EOF tokens from our buffer.
      for (int i = tokens.size() - 1; i >= 0; i--) {
        if (tokens.get(i).getType() == EOF) {
          tokens.remove(i);
        }
      }
      ...

Can lark grammars run Python like ANTLR runs Java code in their grammar files?

A possible solution would be generate a LALR parser in C/C++, Java, Javascript, etc,

Absolutely. That is exactly what I did here: https://github.com/erezsh/Lark_Julia
Of course, that still requires writing a lot of code in the target language.
Indenters would have to be written in the target language, and applied when loading the parser.

Can lark grammars run Python like ANTLR runs Java code in their grammar files?\

No, by design. It would be fairly easy to add, but it would also make grammars very difficult to read, and make them unportable. It's also very rare that this is actually required. Lark's Transformer class takes care of most cases in which it would be used (And postlexing takes care of many of the rest).

I think they are, from my understanding:

Not to make a thing out of it, but your only complaint was that Lark doesn't work outside of Python, which is a bit like complaining that Python doesn't run on Javascript. The rest was more a request for information. But there's no need to split hairs, I was just being silly.

But there's no need to split hairs, I was just being silly.

Me too 🙂

It is difficult to determine whether one has written an ambiguous grammar. Or, put another way, is it possible, given a Lark earley parser, to write a function that takes the parser and returns an input string, when fed into the parser, produces a tree with an _ambig node, or None if no such strings exist.

is it possible, given a Lark earley parser, to write a function that takes the parser and returns an input string, when fed into the parser, produces a tree with an _ambig node, or None if no such strings exist.

Can you give an example about how this would work (supposing/pretending lark already had implemented it)?

is it possible, given a Lark earley parser, to write a function that takes the parser and returns an input string, when fed into the parser, produces a tree with an _ambig node, or None if no such strings exist.

Can you give an example about how this would work (supposing/pretending lark already had implemented it)?

import lark

def find_ambiguity(parser):
    '''
    Returns a string, given a Parser, that when parsed with parser,
    would return a tree with an _ambig node (if ambiguity is explicit)
    '''
    # TODO: draw rest of owl
    return '1'

grammar = r'''
    start: LETTERS | NUMBERS
    LETTERS: /\w+/
    NUMBERS: /\d+/
'''
parser = lark.Lark(grammar, ambiguity='explicit')
ambigstr = find_ambiguity(parser)

ambigtree = parser.parse(ambigstr)
assert '_ambig' in str(ambigtree)

See paper for one strategy. It doesn't look easy by any means.

The error messages / debugging output is only ok--and the #1 thing I'd look for in a parser is GREAT error messages. You do consistently point to the character where there is a problem, but don't consistently explain what went wrong.
BTW I'm a quite new user (installed this 20 minutes ago), but somewhat familiar with parsers and EBNF already.
Why it's important
Most people using a pre-existing grammar are also using a pre-existing parser, so you should expect your users to be making a new grammar. Most people writing a grammar are doing it for the first time, and it's a fairly difficult task, so I think really good error messages are important.
There's two situations I know where lark prints errors--parsing the grammar, and running the parser. Of the two, running the parser is more important (and harder) to give good errors for. (I realize multiple backends probably makes that a pain).
One additional thing to consider here is, a lot of the projects using lark are just going to directly print lark errors, so it's probably important to be even more user-friendly than you'd expect.
Specific examples
Here are some specific errors I'm hitting within the first 20 minutes of trying out lark. I don't think it's that important to fix these specifically, just trying to explain ok vs great errors.

When parsing a EBNF grammar, I put '.' or '-' into a terminal name (only '_' works). The error message is lark.exceptions.GrammarError: Unexpected colon at line 3 column 14. A clearer message would be 'BLANK.PAGE' is not a valid terminal name because it contains '.'. (side note: https://lark-parser.readthedocs.io/en/latest/grammar/ contains an example name with '.' in it)
When parsing with my grammar, I see something like Expecting: {'__ANON_0'}, and a pointer to line 1, character 1. What is _ANON_0? I've never defined this (I assume this is a parenthesized expression in some rule? but I don't think most people would guess that). How much of a tree has it constructed, what rule is it on?

@za3k Thanks for your input!
I agree with everything you said. Good error messages are really helpful, especially to beginners, but they are also very difficult.
Part of the difficulty is that the best errors have some understanding of what the user was probably trying to accomplish. That requires some understanding of common usage and idiomatic expectations, that a parser cannot know.
So, the exceptions Lark throws are meant for the developers, not the users. And I agree that Lark has a lot to improve there. However, how to improve it isn't obvious, to me at least. But I might take a closer look at it in the near future.
Meanwhile, I made a small commit that might help debug lalr grammars when debug mode is on. It basically just prints the state stack, which might give you a clue (https://github.com/lark-parser/lark/commit/c56112eea39dcee34ec1509aef508665f558ba89)
Regarding _ANON_0, it's an unnamed token. And yes, it's not the best thing to display, just the easiest.

@za3k You can avoid the _ANON_0 by explicitly naming all your tokens. Lark has built-in names for the single-character tokens, but anything else, you'll need to come up with your own name.

Dumping the state stack seems like a helpful idea, I wouldn't have thought of it. Thanks for making the change. Is debug mode on by default? I would have no idea how to turn it on if not, so I don't think that will help most people. You'd need to

Have it on by default
OR put it prominently in the documentation. I'd suggest "to turn on more detailed debugging information..." in all-but-whitelisted exceptions as a good place to document it.

So having used lark a little more (I used it a couple days, then gave up and wrote a special-purpose parser, which was way easier to maintain and debug), I can actually say I ran into the _ANON problem several times, and it might be worth fixing specifically after all.
Also since I didn't say before, thanks for making this nonspecific thread and caring about user feedback! It's a good idea, I should steal it for my projects. I want people to tell me why my design and goals are wrong :)

@za3k Thanks for taking the time to describe your experience! I try to make Lark as simple and accessible as possible (without taking away from it), but that's not an easy task in this domain.
FWIW, You can turn on debug with Lark(..., debug=True).
It might be nice to have a FAQ section, or similar, for all the small and common things beginners might need. Like "what does _ANON mean" or "why doesn't my lookback regex work?", etc. I'll give it some thought!

I doubt this will be of any help whatsoever to anyone, but I just
thought I'd mention why I decided to use Lark (that is, a context free
grammar and parser--none of this is Lark-specific) at all, and then why
I stopped.
Before grabbing Lark, I had a hand parser, but it was a bit jumbled, and
the logic for parsing and for doing things with the parsed content was
all mixed up. I thought "aha, this will be easier to work with if I
write the format declaratively". The only way I know to write a(n
arbitrary) format declaratively is to use a grammar.
But, the declarative result was not easy to read, easy to debug, or even
easy to make describe what I wanted. One problem with "easy to describe
what I wanted" was that I wanted "split by..." functionality. For
example, I am parsing pages, and each one is separated by the phrase
"--page". This is super easy to do with regex split or even fixed-string
split. I'd like to be able to take this "top down" approach, where I
first get pages, then parse each page. Writing a (single) unambiguous
grammar is really hard, where "--page" cannot be included in any part of
the page--now that regexes have negative lookaround you can do it a bit
easier, but the result is ugly as hell to read. If my separators weren't
fixed strings, it would have been nearly impossible.
In an effort to add "split by", I first wrote a (small) parser-generator
where I could default to smallest-match rather than largest-first which
made ambiguous grammars default to the option I wanted (and IIRC with
explicit "split by", because I don't think that always works). It was
still really verbose and hard to follow as a human reader.
Then, I threw out the entire approach and wrote the entire thing in
terms of matching and splitting by regex (my hand parser also did this,
but I switched away from being declarative). This was way more readable.
I also split apart a checker/linter (makes sure everything is in the
exact right format) from a parser (parses that content assuming it's in
the right format), which simplified the parser enormously.
Based on this and a couple related experiences, I get the impression
that we need a declarative way to talk about formats that does not match
how context-free grammars are classically defined (maybe similarly to
how modern regular expressions are much better than just |,
concatenation, and '*'; maybe another tool entirely). This is certainly
not the only time someone has thought "aha, I want to write a
declarative spec for my format" and then gotten bogged down in grammars.

@za3k Context-free grammars are definitely not good for everything, and they can have difficulties when non-annotated free text is involved.
Usually I find that using Lark serves me better than what I could write manually, and on a wide range of parsing tasks. But I also have a lot of intuition on how to use it, since I wrote it and thought a lot about it, which is very hard to communicate.
Still, sometimes regex really is the best tool for the job. Or, at least, the easiest.

I feel like Lark has potential to help find ambiguities in grammars. Specifically, you could set parser='earley' and ambiguity='explicit', then see what _ambig trees are produced for your various test cases. However, the existence of #536 means you could have ambiguities that are not detected.

I noticed that Lark has hard-coded names for certain one-character literals that also appear in its error messages. This was quite surprising to me and at first I didn't understand what was going on. In fact, after having checked out the simple hello world example from the README and playing around with it, I ended up with an error like
lark.exceptions.UnexpectedEOF: Unexpected end-of-input. Expected one of:
        * BANG

which at first glance gave me the impression that this library doesn't have error messages whatsoever and just tells you "BANG - something went wrong, go figure it out for yourself". This is obviously in part on me because I am used to read Python exceptions in a bottom-up fashion, stopping as soon as I think I have the information that I need.
However, while I think having named terminals in error messages for non-printable characters can be quite neat, I think it would be more clear if they were instead named explicitly. E.g. the above error message reading something like Expected '!' or Expected the character '!'.
This is just a minor thing I've stumbled upon though - now that I know that named terminals are a thing I can fully appreciate that I have finally found a Python parser generator that can do proper error handling :heart:

which at first glance gave me the impression that this library doesn't have error messages whatsoever and just tells you "BANG - something went wrong, go figure it out for yourself"

I'm sorry, but that made me laugh out loud 😆
It's a good point, these error messages can be improved. I'm a little swamped lately, but maybe someone can take it upon themselves, or I'll get to it at some point. Thanks for your input!


[WIP] 1161-webapp-open-with-button

to resolve issue #1161

@zhiyuli What's the status of the PR?

@zhiyuli Any update on this PR?

@zhiyuli Seems there are file conflicts that need to be resolved.

@zhiyuli where are we at with this?

closing...will be replaced by a new pr


Add Financial Times support

Add support for Financial Times app, and Open Story action for content and video from the main FT site.
Note: All FT "content" requires a subscription to access and will prompt the visitor to purchase a subscription or sign in. Video should load without subscription.

Rad!! Thank you!

Heads up, I had to make one small update to this
https://github.com/timonus/OpenerManifest/commit/0934c5cefa6efe3c720382e1a70fdaf1091b581.9


Add ToTokens for tuples

I am aware of this discussion: https://github.com/dtolnay/quote/issues/54
I don't think it's a sufficient argument to remove tuple support. Having to remap tuples to quoted tuples every time is annoying.

Would it maybe be possible to support the #(#tuple)* syntax for tuples? I'm not sure what the underlying logic in quote is, but that would work around the concerns in #54.


fix the checkbox, check mark wasn't showing because images were missing

adds a few images back in, required for the checkboxes

Looks good!


Get running in openshift

This PR adds the changes necessary to get forklift-validation running as a pod in OpenShift. The deployment-opa.yaml and service-pa.yaml files can temporarily be used to hand-create the deployment and service, until the operator can install these

Actually, the deployment and service files need to be part of the forklift-operator repo, since it will be generated when installing Forklift.
Another thing to consider is using HTTPS. Have you tested running the pod with HTTPS? The cert and key will be provided by OpenShift and automatically mounted by the deployment. For other pods, we specify the paths to cert, key and CA chain as environment variables, so that it can change easily. This can be part of a separate PR.

Actually, the deployment and service files need to be part of the forklift-operator repo, since it will be generated when installing Forklift.
Another thing to consider is using HTTPS. Have you tested running the pod with HTTPS? The cert and key will be provided by OpenShift and automatically mounted by the deployment. For other pods, we specify the paths to cert, key and CA chain as environment variables, so that it can change easily. This can be part of a separate PR.

They are only in this repo for now until I start work on the operator.

They are only in this repo for now until I start work on the operator.

HTTPS will be in a future PR

HTTPS will be in a future PR


Can I opt-out of TypeScript-Hero displaying absolute paths in module suggestion list?

I don't know why, but when listing modules from the node_modules folder, typescript-hero lists these with an absolute path:

This isn't helpful as I cannot see which modules the items come from because the path is getting truncated.
Is there an option to have typescript-hero display all paths relative to the current root folder?

Actually, it should display all relative paths. I'd go for the reason "Windows" ;-)
I'll try that on my windows machine, because on OSX, you'll see all relative paths.

Thanks for the good work! :+1:


Missing hat

Cowboy hat is missing from the hats list. Instead it says "Thief" in it's place.

Fixed in v1.23. Thanks!


installation error on osx yosemite (easy_install)

full log:
~ ❯ sudo easy_install stormssh                                                                                ⏎
Searching for stormssh
Reading https://pypi.python.org/simple/stormssh/
Best match: stormssh 0.6.5
Downloading https://pypi.python.org/packages/source/s/stormssh/stormssh-0.6.5.tar.gz#md5=38a82b61bd3eb483657b9a7b7204e946
Processing stormssh-0.6.5.tar.gz
Writing /tmp/easy_install-6w7FK9/stormssh-0.6.5/setup.cfg
Running stormssh-0.6.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-6w7FK9/stormssh-0.6.5/egg-dist-tmp-5QEAx6
zip_safe flag not set; analyzing archive contents...
storm.web: module references __file__
Adding stormssh 0.6.5 to easy-install.pth file
Installing storm script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/stormssh-0.6.5-py2.7.egg
Processing dependencies for stormssh
Searching for flask
Reading https://pypi.python.org/simple/flask/
Best match: Flask 0.10.1
Downloading https://pypi.python.org/packages/source/F/Flask/Flask-0.10.1.tar.gz#md5=378670fe456957eb3c27ddaef60b2b24
Processing Flask-0.10.1.tar.gz
Writing /tmp/easy_install-XC5Zl8/Flask-0.10.1/setup.cfg
Running Flask-0.10.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XC5Zl8/Flask-0.10.1/egg-dist-tmp-_XdZpv
warning: no files found matching '*' under directory 'tests'
warning: no previously-included files matching '*.pyc' found under directory 'docs'
warning: no previously-included files matching '*.pyo' found under directory 'docs'
warning: no previously-included files matching '*.pyc' found under directory 'tests'
warning: no previously-included files matching '*.pyo' found under directory 'tests'
warning: no previously-included files matching '*.pyc' found under directory 'examples'
warning: no previously-included files matching '*.pyo' found under directory 'examples'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'docs/_themes/.git'
Adding Flask 0.10.1 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/Flask-0.10.1-py2.7.egg
Searching for termcolor
Reading https://pypi.python.org/simple/termcolor/
Best match: termcolor 1.1.0
Downloading https://pypi.python.org/packages/source/t/termcolor/termcolor-1.1.0.tar.gz#md5=043e89644f8909d462fbbfa511c768df
Processing termcolor-1.1.0.tar.gz
Writing /tmp/easy_install-nf36UM/termcolor-1.1.0/setup.cfg
Running termcolor-1.1.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-nf36UM/termcolor-1.1.0/egg-dist-tmp-xRtjpY
zip_safe flag not set; analyzing archive contents...
Adding termcolor 1.1.0 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/termcolor-1.1.0-py2.7.egg
Searching for paramiko
Reading https://pypi.python.org/simple/paramiko/
Best match: paramiko 1.15.1
Downloading https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz#md5=48c274c3f9b1282932567b21f6acf3b5
Processing paramiko-1.15.1.tar.gz
Writing /tmp/easy_install-91t7VN/paramiko-1.15.1/setup.cfg
Running paramiko-1.15.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-91t7VN/paramiko-1.15.1/egg-dist-tmp-SZPghq
zip_safe flag not set; analyzing archive contents...
Adding paramiko 1.15.1 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/paramiko-1.15.1-py2.7.egg
Searching for itsdangerous>=0.21
Reading https://pypi.python.org/simple/itsdangerous/
Best match: itsdangerous 0.24
Downloading https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-0.24.tar.gz#md5=a3d55aa79369aef5345c036a8a26307f
Processing itsdangerous-0.24.tar.gz
Writing /tmp/easy_install-Uvqc3C/itsdangerous-0.24/setup.cfg
Running itsdangerous-0.24/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Uvqc3C/itsdangerous-0.24/egg-dist-tmp-vIDI6Q
warning: no previously-included files matching '*' found under directory 'docs/_build'
Adding itsdangerous 0.24 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/itsdangerous-0.24-py2.7.egg
Searching for Jinja2>=2.4
Reading https://pypi.python.org/simple/Jinja2/
Best match: Jinja2 2.7.3
Downloading https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz#md5=b9dffd2f3b43d673802fe857c8445b1a
Processing Jinja2-2.7.3.tar.gz
Writing /tmp/easy_install-V2mWvj/Jinja2-2.7.3/setup.cfg
Running Jinja2-2.7.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-V2mWvj/Jinja2-2.7.3/egg-dist-tmp-SISMG0
warning: no files found matching '*' under directory 'custom_fixers'
warning: no previously-included files matching '*' found under directory 'docs/_build'
warning: no previously-included files matching '*.pyc' found under directory 'jinja2'
warning: no previously-included files matching '*.pyc' found under directory 'docs'
warning: no previously-included files matching '*.pyo' found under directory 'jinja2'
warning: no previously-included files matching '*.pyo' found under directory 'docs'
Adding Jinja2 2.7.3 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/Jinja2-2.7.3-py2.7.egg
Searching for Werkzeug>=0.7
Reading https://pypi.python.org/simple/Werkzeug/
Best match: Werkzeug 0.9.6
Downloading https://pypi.python.org/packages/source/W/Werkzeug/Werkzeug-0.9.6.tar.gz#md5=f7afcadc03b0f2267bdc156c34586043

Processing Werkzeug-0.9.6.tar.gz
Writing /tmp/easy_install-6KDzpg/Werkzeug-0.9.6/setup.cfg
Running Werkzeug-0.9.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-6KDzpg/Werkzeug-0.9.6/egg-dist-tmp-YUjIyQ
warning: no files found matching '*' under directory 'werkzeug/debug/templates'
warning: no files found matching '*' under directory 'tests'
warning: no previously-included files matching '*.pyc' found under directory 'docs'
warning: no previously-included files matching '*.pyo' found under directory 'docs'
warning: no previously-included files matching '*.pyc' found under directory 'tests'
warning: no previously-included files matching '*.pyo' found under directory 'tests'
warning: no previously-included files matching '*.pyc' found under directory 'examples'
warning: no previously-included files matching '*.pyo' found under directory 'examples'
no previously-included directories found matching 'docs/_build'
Adding Werkzeug 0.9.6 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/Werkzeug-0.9.6-py2.7.egg
Searching for ecdsa>=0.11
Reading https://pypi.python.org/simple/ecdsa/
Best match: ecdsa 0.11
Downloading https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz#md5=8ef586fe4dbb156697d756900cb41d7c
Processing ecdsa-0.11.tar.gz
Writing /tmp/easy_install-1FQ3XS/ecdsa-0.11/setup.cfg
Running ecdsa-0.11/setup.py -q bdist_egg --dist-dir /tmp/easy_install-1FQ3XS/ecdsa-0.11/egg-dist-tmp-WbKN4C
zip_safe flag not set; analyzing archive contents...
Adding ecdsa 0.11 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/ecdsa-0.11-py2.7.egg
Searching for pycrypto>=2.1,!=2.4
Reading https://pypi.python.org/simple/pycrypto/
Best match: pycrypto 2.6.1
Downloading https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz#md5=55a61a054aa66812daf5161a0d5d7eda
Processing pycrypto-2.6.1.tar.gz
Writing /tmp/easy_install-oJ3s2g/pycrypto-2.6.1/setup.cfg
Running pycrypto-2.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-oJ3s2g/pycrypto-2.6.1/egg-dist-tmp-CWckwa
configure: error: in `/private/tmp/easy_install-oJ3s2g/pycrypto-2.6.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
Traceback (most recent call last):
  File "/usr/bin/easy_install-2.7", line 11, in <module>
    load_entry_point('setuptools==1.1.6', 'console_scripts', 'easy_install')()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1925, in main
    with_ei_usage(lambda:
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1912, in with_ei_usage
    return f()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1929, in <lambda>
    distclass=DistributionWithoutHelpCommands, **kw
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 374, in run
    self.easy_install(spec, not self.no_deps)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 609, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 641, in install_item
    self.process_distribution(spec, dist, deps)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 687, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 568, in resolve
    dist = best[req.key] = env.best_match(req, self, installer)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 806, in best_match
    return self.obtain(req, installer) # try and download/install
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 818, in obtain
    return installer(requirement)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 609, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 639, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 825, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1031, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1016, in run_setup
    run_setup(setup_script, args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 69, in run_setup
    lambda: execfile(
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 120, in run
    return func()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 71, in <lambda>
    {'__file__':setup_script, '__name__':'__main__'}
  File "setup.py", line 456, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 185, in run
    cmd = self.call_command('install_lib', warn_dir=0)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 171, in call_command
    self.run_command(cmdname)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install_lib.py", line 20, in run
    self.build()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install_lib.py", line 111, in build
    self.run_command('build_ext')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "setup.py", line 251, in run
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "setup.py", line 278, in run
RuntimeError: autoconf error

Install with brew install stormssh, it works perfectly.

thanks @simonweil.


Scrape A Google Calendar?

@jamesturk Hi James, it's me Hailey. We worked together last year on the City Bureau City Scrapers project (I was building out the scrapers for Fresno).
Wanted to get your guidance on something. The below link is a Google Calendar on a web page. I remember you cautioning against scraping Google products. Would you say it's safe to scrape this calendar or should I not do that? Thanks.
https://www.dallascounty.org/about-us/calendar/

Hi Hailey (of course I remember!)
Generally speaking yes, they're pretty quick to block/throttle in my experience, and being blocked/throttled from Google is generally pretty frustrating.  (Everyone on the same IP having to do captchas for search)
Sometimes you can get an ICS link which is safe to use from Google Calendar but I'm not seeing a way on this embed from a quick look.

@jamesturk Gotcha, in that case I won't scrape this one. Thanks and hope you're enjoying teaching.


Unable to create schedule

Version
latest (cdn)
Development Environment
Chrome 78.0.3904.70
macOS Catalina 10.15
Current Behavior
I've wanted to create schedules. But it doesn't work
(I've changed how the data/schedules.js worked. Others remain unchanged)
function generateScheduleDetails(data) {
    data.activities.forEach((value, index, array) => {
      console.log('Adding ', value);
      var schedule = new ScheduleInfo();

      schedule.id = value.id;
      schedule.calendarId = value.calendarId;

      schedule.title = value.title;
      schedule.body = value.body;

      schedule.start = new Date(value.start);
      schedule.end = new Date(value.end);

      var calendar = findCalendar(value.calendarId);

      schedule.color = calendar.color;
      schedule.bgColor = calendar.bgColor;
      schedule.dragBgColor = calendar.dragBgColor;
      schedule.borderColor = calendar.borderColor;

      if (value.isAllday) {
        schedule.category = 'allday';
      } else {
        schedule.category = 'time';
      }

      if (schedule.category === 'milestone') {
        schedule.color = schedule.bgColor;
        schedule.bgColor = 'transparent';
        schedule.dragBgColor = 'transparent';
        schedule.borderColor = 'transparent';
      }
      console.log(schedule);

      ScheduleList.push(schedule);
    });
  }

An example of the log adding

Expected Behavior
The calendar should have some schedule pop up.
I've also tried to use the chrome console to fetch the schedule by cal.getSchedule(id, calendarId). But it said undefined

@LoYungSum
Check the createSchedules method
https://github.com/nhn/tui.calendar/blob/master/docs/getting-started.md#usage
 var cal = new tui.Calendar('#calendar', {
    ...
    useCreationPopup: true, // Did you turn this option on?
    useDetailPopup: true
  });

https://nhn.github.io/tui.calendar/latest/Calendar#createSchedules

I've turned the settings on
  defaultView: 'month',
  taskView: true,
  template: templates,
  useCreationPopup: true,
  useDetailPopup: true,
  calendars: calCalendars,
});

I think I've coded the createSchedules correctly. Is there something wrong that I've missed?
I've tried to check the array before the above method is executed.
function setSchedules() {
    cal.clear();
    generateSchedule(cal.getViewName(), cal.getDateRangeStart(), cal.getDateRangeEnd());
    cal.createSchedules(ScheduleList);
    console.log('The ScheduleList',ScheduleList);
    refreshScheduleVisibility();
  }

And the output is as follows

Does the ID of a schedule must be a UUID?

@jungeun-cho Do you know how to solve the problem?

@LoYungSum
Can you give me information with codepen or jsfiddle so that I can understand the scenario?
The codesandbox is fine too.

I'm hosting with Google Cloud, but there seems to be a shortage which caused the app to crash. I'll upload the code as soon as it's fixed.
https://status.cloud.google.com/

http://stlouis-cloud.web.app/calendar
There you go

@jungeun-cho

@LoYungSum Your method call order is wrong. Your post API returns ScheduleList data after setSchedules() called. It's asynchronous method problem.

Oh. Thanks for the help @dongsik-yoo . But now I get another problem.
Uncaught (in promise) TypeError: end.getTime is not a function
    at Object.range (tui-calendar.js:3085)
    at tui-calendar.js:24942
    at forEachArray (tui-code-snippet.js:947)
    at Object.forEach (tui-code-snippet.js:1024)
    at tui-calendar.js:24933
    at forEachArray (tui-code-snippet.js:947)
    at Object.forEach (tui-code-snippet.js:1024)
    at tui-calendar.js:24932
    at forEachArray (tui-code-snippet.js:947)
    at Object.forEach (tui-code-snippet.js:1024)

The error occurs when I switch a month (From Nov -> Dec)


Numerical instabilities with LoHa

System Info
Latest PEFT main.
Who can help?
No response
Information

[ ] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder
[ ] My own task or dataset (give details below)

Reproduction
import torch
from torch import nn
from peft import LoraConfig, LoHaConfig, get_peft_model

class MLP(nn.Module):
    def __init__(self, bias=True):
        super().__init__()
        self.lin0 = nn.Linear(10, 20, bias=bias)
        self.relu = nn.ReLU()
        self.drop = nn.Dropout(0.5)
        self.lin1 = nn.Linear(20, 2, bias=bias)
        self.sm = nn.LogSoftmax(dim=-1)

    def forward(self, X):
        X = X.float()
        X = self.lin0(X)
        X = self.relu(X)
        X = self.drop(X)
        X = self.lin1(X)
        X = self.sm(X)
        return X

def test_it(config_cls, device):
    input = torch.arange(90).reshape(9, 10).to(device)
    torch.manual_seed(0)
    if issubclass(config_cls, LoraConfig):
        config = config_cls(target_modules=["lin1"], init_lora_weights=False)
    else:
        config = config_cls(target_modules=["lin1"], init_weights=False)
    peft_model = get_peft_model(MLP(), config).eval().to(device)
    output = peft_model(input)
    is_finite = torch.isfinite(output).all().item()
    return is_finite

if __name__ == "__main__":
    n = 100
    print("LoHa")

    device = "cpu"
    print("Testing on CPU")
    successes = [test_it(LoHaConfig, device) for _ in range(n)]
    print(f"Success rate: {sum(successes) / n}")

    device = "cuda"
    print("\nTesting on GPU")
    successes = [test_it(LoHaConfig, device) for _ in range(n)]
    print(f"Success rate: {sum(successes) / n}")

    print("Lora")

    device = "cpu"
    print("Testing on CPU")
    successes = [test_it(LoraConfig, device) for _ in range(n)]
    print(f"Success rate: {sum(successes) / n}")

    device = "cuda"
    print("\nTesting on GPU")
    successes = [test_it(LoraConfig, device) for _ in range(n)]
    print(f"Success rate: {sum(successes) / n}")

Expected behavior
While running some tests that involved LoHa, I came across the issue that they were failing randomly. For some strange reason, LoHa seems to be numerically unstable, as running the attached script should show. It applies LoHa on a simple MLP and checks if the output is finite or not (if not, it's NaNs). For control, I run on GPU vs CPU and with LoHa vs LoRA:
LoHa
Testing on CPU
Success rate: 0.21
Testing on GPU
Success rate: 0.25

Lora
Testing on CPU
Success rate: 1.0
Testing on GPU
Success rate: 1.0

Even more strangely, the rate at which these instabilities occurs varies considerably, much more than should be expected by chance, e.g. sometimes I get (omitting LoRA, which always succeeds):
LoHa
Testing on CPU
Success rate: 0.21
Testing on GPU
Success rate: 0.25

And other times, I get:
LoHa
Testing on CPU
Success rate: 0.98
Testing on GPU
Success rate: 0.6

So the success rate for CPU can vary from 21/100 to 98/100! Chi² test gives a p< 0.00001 (uncorrected), so this cannot be an accident.
Can anyone reproduce?
Edit: Some more tests:

Using torch.randn(9, 10) as input doesn't help much.
Targeting ["lin0"] or ["lin0", "lin1"] makes matters worse.
r doesn't seem to make a difference.

ping @kovalexal

@BenjaminBossan, thanks for bringing it up.
I am wondering, why are you running your test with init_weights=False?
IMHO init_weights=False should be used only in the situation where you are trying to construct an empty adapter to load from a checkpoint later on (so, you don't want to spend time to initialize weights properly).
Under the hood, when you pass init_weights=False current LoHa and LoKr implementations create adapter tensors with torch.empty, which provides uninitialized memory buffers, so torch.randn does not make a difference in that case.
Here is a small demo that showcases what is happening under the hood without all the adapters logic:
import torch

def test_finite(device):
    w1a = torch.empty((2, 8)).to(device=device)
    w1b = torch.empty((8, 20)).to(device=device)
    w2a = torch.empty((2, 8)).to(device=device)
    w2b = torch.empty((8, 20)).to(device=device)

    # LoHa way for contructing delta
    w1a_w1b = w1a @ w1b
    w2a_w2b = w2a @ w2b
    delta = w1a_w1b * w2a_w2b

    return {
        "w1a": torch.isfinite(w1a).all().item(),
        "w1b": torch.isfinite(w1b).all().item(),
        "w2a": torch.isfinite(w1a).all().item(),
        "w2b": torch.isfinite(w1b).all().item(),
        "w1a_w1b": torch.isfinite(w1a_w1b).all().item(),
        "w2a_w2b": torch.isfinite(w2a_w2b).all().item(),
        "delta": torch.isfinite(delta).all().item(),
    }

n = 10000

# CPU results
cpu_results = [test_finite("cpu") for _ in range(n)]
cpu_results_combined = cpu_results[0]
for result in cpu_results[1:]:
    for key, value in result.items():
        cpu_results_combined[key] += value
print("Success rate CPU:")
for key, value in cpu_results_combined.items():
    print(f"{key}: {value / n}")

# GPU results
gpu_results = [test_finite("cuda:0") for _ in range(n)]
gpu_results_combined = gpu_results[0]
for result in gpu_results[1:]:
    for key, value in result.items():
        gpu_results_combined[key] += value
print("Success rate GPU:")
for key, value in gpu_results_combined.items():
    print(f"{key}: {value / n}")

Here is a sample output:
Success rate CPU:
Success rate CPU:
w1a: 0.9969
w1b: 0.681
w2a: 0.9969
w2b: 0.681
w1a_w1b: 0.6638
w2a_w2b: 0.6148
delta: 0.4431

Success rate GPU:
w1a: 0.9997
w1b: 0.6242
w2a: 0.9997
w2b: 0.6242
w1a_w1b: 0.6236
w2a_w2b: 0.6701
delta: 0.4167

Also, your sample starts to work as expected when you pass init_weights=True to LoHa.
Maybe I am missing some logic in terms of init_weights parameter, could you please clarify, how it should be processed by default when False is passed?

Under the hood, when you pass init_weights=False current LoHa and LoKr implementations create adapter tensors with torch.empty

Thanks, that explains the strange pattern I saw.

Maybe I am missing some logic in terms of init_weights parameter, could you please clarify, how it should be processed by default when False is passed?

It is indeed confusing, I also didn't understand it at first. The idea for init_weights=True is of course the initialize the weights as described by the paper. Often, this means that they are initialized in a way to be the identity transform, as that facilitates training.
When we do testing, we want the adapter not to be the identity transform, because that would mean that the results are the same as without adapter, i.e. there is no effect. Therefore, the possibility to set init_weights=False was added. It is basically a setting for debugging/testing. Of course, we could set init_weights=True and then train the adapter so  that it has an effect, but this is a lot of extra work and makes testing slower and more verbose. This is why a lot of tests use init_weights=False.
Note that for LoRA, we do not initialize the LoRA weights with empty tensors when using init_lora_weights=False:
https://github.com/huggingface/peft/blob/207229ad5e1854cd897306ce5ee725b0245b1064/src/peft/tuners/lora/layer.py#L78-L79

IMHO init_weights=False should be used only in the situation where you are trying to construct an empty adapter to load from a checkpoint later on

This is a good point. Probably it's not a huge time saver, as the adapter weights should typically be small, but could still be nice to have. I wonder if we can add it as a third option.

Also of note, when creating empty tensors, the results are not reproducible, even with fixed seed, which is one more argument in favor of not creating empty tensors.


how long does the model take to train?

I'm new to deep learning.I'm running 1/50 epoch and it is already more than an hour. Can someone tell me how long will it take to complete?

It depends on whether you're using a GPU or a CPU. One a GPU, this might take 4-6 hours. I don't know about CPU but it would be minimum a day for 1 epoch.


Bad signature error when delegating

Expected result

Sign delegating transaction
Transaction executed successfully

Actual result

Sign delegating transaction
Get the error "Transaction has a bad signature"

bad signature.log
https://github.com/user-attachments/assets/8f37ec38-fc26-45c3-bb28-0bfa5f70b235

The same error appears in Staking if you call multiple operations in a row like:

sign Stake more;
sign Unstake;
Sign Change validators - the error usually appears here, on the 3rd steps

Status verification: ✅


Pusher Sample Code doesn't work!!

I'm using libPusher 1.6. I can't even connect to pusher server. Is the libPusher still alive or nobody updates it anymore?
PTPusher *client = [PTPusher pusherWithKey:@"app-key" delegate:self encrypted:NO]; // I assume this is "key" not "secret" there.
[client connect];

PTPusherChannel *channel = [client subscribeToChannelNamed:@"test"];
NSLog(@"Channel: %@, %d", channel, channel.isSubscribed);

First of all, the delegate methods said that the "client is connecting", but didn't say "client did connected". Then the channel should subscribed automatically as document said, but it didn't.

@Bill-SnowWolf this project is still alive; its latest release was only a few weeks ago!
I see you've closed this, did you resolve the problem? The code above is just an example; you need a strong reference to your client object or it will just be deallocated.


Make sure selections don't time-out while shop inventory is open

Resolved in 7d77696d672919188dddeae4d0559e8cc5340160 : Selection gets refreshed when opening the shop, will still timeout if left open for too long but the inventory interface will then close up

Resolved in 7d77696d672919188dddeae4d0559e8cc5340160 : Selection gets refreshed when opening the shop, will still timeout if left open for too long but the inventory interface will then close up


DEC-1115 Add thumbnail create / update for media

Goal: Add functionality that supports adding a thumbnail / still image for a media file (audio or video).
Work: Implemented new service class, renamed some methods to make them more generic, and added configs

Coverage decreased (-0.01%) to 95.525% when pulling f2bc0893cd1514f1f55582b74a81519065e9b7be on DEC-1115-video-audio-thumbnail into c230237f244b3e60b6cfd51f8d8f6ebd739f7040 on master.

Coverage increased (+0.03%) to 95.571% when pulling 6c3b137d67188c2efcf65b676c20d36edf0f4695 on DEC-1115-video-audio-thumbnail into c230237f244b3e60b6cfd51f8d8f6ebd739f7040 on master.

Coverage increased (+0.03%) to 95.571% when pulling 6c3b137d67188c2efcf65b676c20d36edf0f4695 on DEC-1115-video-audio-thumbnail into c230237f244b3e60b6cfd51f8d8f6ebd739f7040 on master.

👍

👍


toastify design secessfully

i added toaster instead of alert message

Hey @RitiChandak ,check it and merged it
also add the label as per #472

Reverted in #570

Fixes #472


Add mobile section

This has been addressed. The new page is here https://developers.flow.com/mobile


The IP address prefix <IP_ADDRESS>/24 is not matching with the diagram in section - "Ingress SNAT (BGP-Enabled VPN Site)"

The Diagram and the explanation with regards to the IP address <IP_ADDRESS>/24 is confusing in the section "Ingress SNAT (BGP-Enabled VPN Site)", the diagram shows as <IP_ADDRESS>/24 whereas the explanation it is mentioned as <IP_ADDRESS>/24.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 511c8c14-818b-9447-63e6-3481d35aaa92
Version Independent ID: ded7bcfa-0369-255f-2bf3-d81e005526ca
Content: Configure VPN NAT rules for your gateway - Azure Virtual WAN
Content Source: articles/virtual-wan/nat-rules-vpn-gateway.md
Service: virtual-wan
GitHub Login: @cherylmc
Microsoft Alias: cherylmc

Thank you for you dedication to our documentation.
Unfortunately, we have been unable to review this issue in a timely manner. We sincerely apologize for the delayed response. We are closing this issue. If you feel that the problem persists, please respond to this issue with additional information.
Please continue to provide feedback about the documentation. We appreciate your contributions to our community.
#please-close


Agent execution

This provides execution over an ExtensionStreams connection implemented on chrome agent.  The client / server separation has been maintained, but dividing the command (chrome_command.js) and business-logic (chrome_agent.js) as well as the filesystem hosting (ChromeFileServer'). Tested this on several several versions of the chrome command.
chromeAgent (previously chromeAgentClient) should probably be turned into a proper class, but I thought it outside the scope of this PR.
I am comparing this to the PR for creating the ExtensionFilesystem as it has not been merged yet.  I will merge both in together or merge this in with as a separate CL once LGTM'd
PTAL @rpaquay and @ussuri (if available)

Cc @rginda


If you write the class attribute 2 times, the second one is silently discarded

Describe the bug
If you write the class attribute 2 times, the second one is silently discarded.
To Reproduce
In the templ component:

"
Resulting html:

Expected behavior
One of:

Go code generation fails with an error
Render() fails with an error
The two attributes are merged. i.e. class="a b"
The attributes are emitted verbatim, i.e. class="a" class="b"

templ info output
(✓) os [ goos=windows goarch=amd64 ]
(✓) go [ location=C:\Program Files\Go\bin\go.exe version=go version go1.22.0 windows/amd64 ]
(✓) gopls [ location=C:\Users\jrg\go\bin\gopls.exe version=golang.org/x/tools/gopls v0.16.1 ]
(✓) templ [ location=C:\Users\jrg\go\bin\templ.exe version=v0.2.771 ]

Desktop (please complete the following information):

OS: windows
templ CLI version: v0.2.771
Go version (go version) go version go1.22.0 windows/amd64
gopls version (gopls version) golang.org/x/tools/gopls v0.16.1
this is all in the templ info output, why do I have to repeat it here XD

Sorry, it is the browser that is doing this. I just checked the raw page source generated by templ and it emits the two attributes verbatim.


Error message in chart of accounts parse should include file and line.

A parse error in the chart of accounts yields this error:
-------------------------------------------------------------------------------
undefined method `[]' for nil:NilClass
-------------------------------------------------------------------------------

Instead there should be a more helpful message including the source file and line of the error.
To reproduce, introduce an unsupported document variable into the chart of accounts, e.g. @foo, and then run rock_books w.

Fixed in commits 33bf09a, 9e683d4.


Add "Stacks" Section

Remix Stacks are (going to be) a massive addition to the remix ecosystem,
Having them all in one place will make it very easy for users to find them.

You know what I'll make the pr for this


[Question] How to avoid "dangling" starting JSX tag

Just asking a question here.
TL;DR: I want to turn this code:
const a = () =>

  whatever

into any of these:
const a = () => (  // <--- This is the key point; indentation of next line or the final parenthesis does not matter

  whatever

)

const a = () => (

    whatever

)

const a = () => (

    whatever

)

Only the last one makes sense to me.
I’m not sure if there is a rule for that, though.


Cloud IoT API C++ Client Library example code quickstart giving compilation issues

Does this issue affect the google-cloud-cpp project?
Yes related to Cloud IoT API C++ Client Library example code quickstart.
What component of google-cloud-cpp is this related to?
$HOME/google-cloud-cpp/google/cloud/iot/quickstart
Describe the bug
Giving compilation issue when try to compile by using vcpkg.
To Reproduce
Steps to reproduce the behavior:

env VCPKG_ROOT="${vcpkg_dir}" $HOME/vcpkg/bootstrap-vcpkg.sh
./vcpkg install google-cloud-cpp[core,iot]
cd $HOME/gooogle-cloud-cpp/google/cloud/iot/quickstart
cmake -H. -B.build -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake

Expected behavior
Compilation log
Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found ProtobufWithTargets: TRUE
-- Found ZLIB: /home/vcpkg/installed/x64-linux/lib/libz.a (found version "1.2.12")
-- Found OpenSSL: /home/vcpkg/installed/x64-linux/debug/lib/libcrypto.a
-- Found c-ares: /home/vcpkg/installed/x64-linux/share/c-ares/c-ares-config.cmake (found version "1.18.0")
-- Found RE2 via CMake.
CMake Error at /home/vcpkg/scripts/buildsystems/vcpkg.cmake:606 (_add_library):
 _add_library cannot create ALIAS target
 "google-cloud-cpp::experimental-iot" because target "google-cloud-cpp::iot"
 is imported but not globally visible.
Call Stack (most recent call first):
 /home/vcpkg/installed/x64-linux/share/google_cloud_cpp_iot/google_cloud_cpp_iot-config.cmake:25 (add_library)
 /home/vcpkg/scripts/buildsystems/vcpkg.cmake:816 (_find_package)
 CMakeLists.txt:21 (find_package)

CMakeError.log
Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/google-cloud-cpp/google/cloud/iot/quickstart/.build/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/make cmTC_1402a/fast && /usr/bin/make -f CMakeFiles/cmTC_1402a.dir/build.make CMakeFiles/cmTC_1402a.dir/build
make[1]: Entering directory '/home/google-cloud-cpp/google/cloud/iot/quickstart/.build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_1402a.dir/src.cxx.o
/usr/bin/c++   -DCMAKE_HAVE_LIBC_PTHREAD  -o CMakeFiles/cmTC_1402a.dir/src.cxx.o -c /home/google-cloud-cpp/google/cloud/iot/quickstart/.build/CMakeFiles/CMakeTmp/src.
cxx
Linking CXX executable cmTC_1402a
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1402a.dir/link.txt --verbose=1
/usr/bin/c++  -DCMAKE_HAVE_LIBC_PTHREAD   CMakeFiles/cmTC_1402a.dir/src.cxx.o -o cmTC_1402a
/usr/bin/ld: CMakeFiles/cmTC_1402a.dir/src.cxx.o: in function `main':
src.cxx:(.text+0x46): undefined reference to `pthread_create'
/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach'
/usr/bin/ld: src.cxx:(.text+0x63): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_1402a.dir/build.make:87: cmTC_1402a] Error 1
make[1]: Leaving directory '/home/google-cloud-cpp/google/cloud/iot/quickstart/.build/CMakeFiles/CMakeTmp'

Operating system:
Ubuntu docker image (https://github.com/googleapis/google-cloud-cpp/blob/main/ci/cloudbuild/dockerfiles/demo-debian-buster.Dockerfile)
What compiler and version are you using?
Default vcpkg compiler
What version of google-cloud-cpp are you using?
Please include the output from git rev-parse HEAD if you are compiling from source, or the version number from the applicable google/cloud/*/version.h file.
Additional context
Add any other context about the problem here.

Docker Image is https://github.com/googleapis/google-cloud-cpp/blob/main/ci/cloudbuild/dockerfiles/demo-debian-buster.Dockerfile

Thanks for the bug report.  I think the "Right Thing":tm: to do here is to remove the experimental-* aliases, this library is GA (and has been for about 2 months), and the backwards compatibility alias does not work with vcpkg.
I will send a PR shortly, but after the PR is merged we need to create a release and then have the changed picked up by the vcpkg release.  I think it would be a couple of weeks before the fixes are usable.
For future reference, this is easy to repro using:
FROM debian:buster

RUN apt-get update && \
    apt-get --no-install-recommends install -y apt-transport-https apt-utils \
        automake build-essential ca-certificates ccache cmake curl git \
        gcc g++ libc-ares-dev libc-ares2 libcurl4-openssl-dev libre2-dev \
        libssl-dev m4 make ninja-build pkg-config tar wget zlib1g-dev

RUN apt-get update && apt-get --no-install-recommends install -y zip unzip tar cmake ninja-build

WORKDIR /var/tmp/build/vcpkg
RUN curl -sSL https://github.com/microsoft/vcpkg/archive/refs/tags/2022.04.12.tar.gz | \
     tar -xzf - --strip-components=1

RUN ./bootstrap-vcpkg.sh
RUN ./vcpkg install google-cloud-cpp[core,iot]

WORKDIR /var/tmp/build/google-cloud-cpp
RUN curl -sSL https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v1.39.1.tar.gz | \
     tar -xzf - --strip-components=1

WORKDIR /var/tmp/build/google-cloud-cpp/google/cloud/iot/quickstart
RUN cmake -H. -B.build -DCMAKE_TOOLCHAIN_FILE=/var/tmp/build/vcpkg/scripts/buildsystems/vcpkg.cmake

The latest release includes fixes for this problem, and it is now part of vcpkg (see https://github.com/microsoft/vcpkg/pull/24514).  I will test tomorrow and then close the bug if the problem is fixed.

Great, thanks for the update.
On Thu, May 5, 2022 at 9:21 AM coryan @.***> wrote:

The latest release includes fixes for this problem, and it is now part of
vcpkg (see microsoft/vcpkg#24514
https://github.com/microsoft/vcpkg/pull/24514). I will test tomorrow
and then close the bug if the problem is fixed.
—
Reply to this email directly, view it on GitHub
https://github.com/googleapis/google-cloud-cpp/issues/8793#issuecomment-1118137519,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AS4DXIK4R7ULVSCQWYZJ7BLVINAUFANCNFSM5UL74ZTQ
.

ANY OPINIONS EXPRESSED, IMPLIED, OR PRESENTED ARE SOLELY THOSE OF THE
AUTHOR AND ARE NOT THOSE OF PRETLIST. IF YOU ARE NOT THE INTENDED
RECIPIENT, THEN PLEASE DESTROY THIS EMAIL AND ITS ATTACHMENTS, AND LET US
KNOW AT ONCE. ANY COPYING, DISTRIBUTION OR USE OF THIS EMAIL, ITS
ATTACHMENTS, OR ANY INFORMATION CONTAINED HERE IS PROHIBITED.

It works.  I used this Dockerfile to verify it:
FROM debian:buster

RUN apt-get update && \
    apt-get --no-install-recommends install -y apt-transport-https apt-utils \
        automake build-essential ca-certificates ccache cmake curl git \
        gcc g++ libc-ares-dev libc-ares2 libcurl4-openssl-dev libre2-dev \
        libssl-dev m4 make ninja-build pkg-config tar wget zlib1g-dev

RUN apt-get update && apt-get --no-install-recommends install -y zip unzip tar cmake ninja-build

WORKDIR /var/tmp/build/vcpkg
#              https://github.com/microsoft/vcpkg/archive/refs/heads/master.zip
RUN curl -sSL https://github.com/microsoft/vcpkg/archive/40a4e68a4f177c1569aca69bfe1ba59b8153a8a1.tar.gz | \
     tar -xzf - --strip-components=1

RUN ./bootstrap-vcpkg.sh
RUN ./vcpkg install google-cloud-cpp[core,iot]

WORKDIR /var/tmp/build/google-cloud-cpp
RUN curl -sSL https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v1.40.1.tar.gz | \
     tar -xzf - --strip-components=1

WORKDIR /var/tmp/build/google-cloud-cpp/google/cloud/iot/quickstart
RUN cmake -H. -B.build -DCMAKE_TOOLCHAIN_FILE=/var/tmp/build/vcpkg/scripts/buildsystems/vcpkg.cmake
RUN cmake --build .build


Feedback from Alex

Hi Anna,
Thanks for the great workshop! I found it very easy and fluent to complete the whole workshop, and the difficulty increases gradually, which is awesome! I've also learned more about the MaterialState* that used to exist without some proper explanations.

Estimate total time to take the workshop: 40 minutes

Though I still have some questions and concerns, some of them are addressed in the PR, I'll tell others in the below description.
Linter rules ignore
I saw all dart files are marked with multiple linter rules ignored, as I found they're unnecessary to ignore, I've removed most of them and filled codes with a proper format. Please let me know if you have some other opinion about it.
Confusion in instructions

In fact, under the hood, the MaterialApp widget passes the given theme value to the inner Theme widget, which wraps all application screens.

Given the fact of the source code, I don't think it actually wraps all application screens, but wraps at the top of the application. I've update the sentence in the change.

Customize global iconTheme. The email and globe icons should become lime and half-transparent. The account icon in the top corner should become half-transparent.

I got a bit confused here since the account icon has its own requirement without Colors.lime, but I saw it still has a different color from other icons, which should be inherited from the AppBarTheme. I'm wondering if such inherit relation needs to tell users.

However, describing all TextStyle fields of TextTheme is unnecessary.

It might be typically unnecessary, just a nit.

and is not showing an error;

There are multiple short sentences with the same suffix here, which might be redundant.

Hi Alex, thanks for the detailed feedback!
Looks like the ignored linter rules are the hottest topic of my workshop, because there were discussions around them with opinions on both sides 🙂 Originally, I did not have them, but found the code to be noisy with unnecessary details like const constructors or variable types. My goal is to provide the maximum information with the minimum of the code and avoid distracting readers. Though in real projects I would completely agree with the suggested changes, in this workshop the formatting and linter settings are intentional.
I will close this PR and make some of the changes directly to the main branch.
Thanks for taking the time to review!


Compatibility with Crosswalk

Just want to say that i tried it with crosswalk and it does not work. (Maybe it was not developed with crosswalk in mind, just saying...)

@boltex I use crosswalk as well, and the plugin works without any problem. Try to update all versions to the latest

@boltex Sorry, I know the thread is closed but can you please post your versioncodes for cordova (also for cordova plattform add android@[version]), Crosswalk, ...? That would be great for everyone who has the same problem.
Thank you!

cordova version 4.0.0
On Wed, Mar 4, 2015 at 12:49 PM, SeKra24<EMAIL_ADDRESS>wrote:

@boltex https://github.com/boltex Sorry, I know the thread is closed
but can you please post your versioncodes for cordova (also for cordova
plattform add android@[version]), Crosswalk, ...? That would be great for
everyone who has the same problem.
Thank you!
—
Reply to this email directly or view it on GitHub
https://github.com/katzer/cordova-plugin-background-mode/issues/57#issuecomment-77208373
.

@boltex, the latest android platform has version code 3.7.1

What does that imply?
On Thu, Mar 5, 2015 at 5:41 AM, Sebastián Katzer<EMAIL_ADDRESS>wrote:

@boltex https://github.com/boltex, the latest android platform has
version code 3.7.1
—
Reply to this email directly or view it on GitHub
https://github.com/katzer/cordova-plugin-background-mode/issues/57#issuecomment-77342423
.

@chemerisuk would you be so kind to inform us here which versions you used for cordova (also for cordova plattform add android@[version]), Crosswalk, ...?? Thank you so much!

@SeKra24 crosswalk 10-11 works for me. Cordova version 3.6.3


Fixes multiple matching commands for autocomplete

hey @dthree this is a small set of the autocomplete changes I made against a previous build a few months ago - I still see some of these problems in 1.10.10, this fixes those cases and adds tests to make sure we never regress

Thanks! :+1:

Would you be able to publish a new build to npm which includes this fix?
In the meantime I've been referencing this git revision in my package.json
and have had reports of failing installs because users didn't have git
installed.
thanks!
Jeff
On Thu, Apr 7, 2016 at 10:11 AM, dc<EMAIL_ADDRESS>wrote:

Thanks! [image: :+1:]
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/dthree/vorpal/pull/142#issuecomment-206998101

Ping :)  Could you publish the latest build to npm with this fix?

Hey Jeff. Doing it now :)

Ok, this is published in v1.11.1.

great, thanks!


Unknown fragment Error [HELP WANTED]

Unknown fragment Error
I'm getting this error Unknown fragment commentView. I have the following structure.
Component.js
export default compose(
  connect(mapStateToProps, mapDispatchToProps),
  postComment,
  postAction,
  deleteAction,
  queryStream
)(Component);

Actions.js
import commentView from '../fragments/commentView.graphql';

export const queryStream = graphql(STREAM_QUERY, {
  options: () => ({
    fragments: [commentView],
    variables: {
      asset_url: url
    }
  })
});

fragment commentView on Comment {
    id
    body
    created_at
    user {
        id
        name: displayName
        settings {
            bio
        }
    }
    actions {
        type: action_type
        count
        current: current_user {
            id
            created_at
        }
    }
}

This inline method (http://dev.apollodata.com/react/fragments.html) is not useful fot my case.
I tried to use createFragment but it has been deprecated. I don't know what else can I try.
Note: I'm using Webpack for .graphql files.
Am I doing something wrong here? Feedback, Solutions and Helpful links will be extremely appreciated.
Thank you!

Fixed! https://dev-blog.apollodata.com/webpacking-your-graphql-documents-bf9697ed259b#.hhyutip3w
I added this #import "./CommentsPageComment.graphql" on the top of each .graphql file
I'd gladly submit a PR or collaborate to build a strong documentation.
We are setting up Apollo in @coralproject. We are looking forward to contribute in the future!
Thanks!

@okbel - great! I think some docs PRs would be super!


s-ol.nu formatting broken

Name of the site: mmm.s-ol.nu
The site is displayed as mmm.s-ol in the index, when it should rather be mmm.s-ol.nu or s-ol.nu.
In general as the "index" URL I prefer s-ol.nu (without subdomain), which will redirect to https://mmm.s-ol.nu, but I understand if you want to avoid the redirect.

The url wasn't broken, the display name didn't show the extension .nu.
I've changed it to s-ol.nu, but the link still points to mmm, that's how you made the PR.

Yeah that's what I meant, the "broken link" label was just the closest of the template issues. Thanks :)


Additions to the Website

@CodingSpecies I just wanted to ask you whether you would like me to add create webpages for the links on the navigation bar that currently redirect you to the homepage again? Thanks

Yes @AvidCoder101 however please use the template css and html from the index.html and .css file

@AvidCoder101 any updates? Thank you.

@CodingSpecies so so sorry, I'll hopefully be sending my first PR out soon with some of my changes 🙂

#2


Eliminating the 300ms touch delay on mobile devices

I have attempted to implement the FastClick library to eliminate the 300ms delay on many UI elements when browsing from a mobile device.  It works extremely well in most cases, making the UI seem extremely fast and responsive in a mobile browser.
https://github.com/ftlabs/fastclick
Unfortunately, there are few cases where it fails (dropdowns, menu select) because these elements already have the correct events being fired for mobile.  The FastClick documentation suggests using class='needsclick' on the element in question.  This workaround doesn't appear to be compatible with Semantic UI.
Would you consider looking into this as an enhancement?  The speed with which the UI performed on the iPad I tested it was truly amazing with the FastClick library enabled.  With a few tweaks this could be a great addition.

+1

1 needsclick has issues when you have more than one dropdown on a page

Changed the event name to 'touchstart' in dropdown.js which worked really well with fastclick
line 23
hasTouch       = ('ontouchstart' in document.documentElement),
to
hasTouch       = ('touchstart' in document.documentElement),

I'd imagine that would disable touch event handlers.

Sorry, I forgot about my use case that I am using HammerJS library for touch events thus why 'touchstart' even handler is used by me. Otherwise, the dropdown would open and close on mobile on single tap.


python310Packages.gtts: 2.2.3 -> 2.2.4

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.gtts is: "A Python library and CLI tool to interface with Google Translate text-to-speech API"
meta.homepage for python310Packages.gtts is: "https://gtts.readthedocs.io"
meta.changelog for python310Packages.gtts is: "https://gtts.readthedocs.io/en/latest/changelog.html"
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
Warning: no invocation of /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4/bin/gtts-cli had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4/bin/.gtts-cli-wrapped had a zero exit code or showed the expected version
0 of 2 passed binary check by having a zero exit code.
0 of 2 passed binary check by having the new version present in output.
found 2.2.4 with grep in /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4
found 2.2.4 in filename of file in /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4

Rebuild report (if merged into master) (click to expand)

7 total rebuild path(s)

4 package rebuild(s)

4 x86_64-linux rebuild(s)
3 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
home-assistant-component-tests.google_translate
mnemosyne
python310Packages.gtts
python39Packages.gtts

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.gtts https://github.com/r-ryantm/nixpkgs/archive/1353d1fbdee6bdd1904623326c2f1d2ef13e2a2d.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4
ls -la /nix/store/873pwi701riis9y1l86av9f389vgi7w1-python3.10-gtts-2.2.4/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

4 packages built:

home-assistant-component-tests.google_translate
mnemosyne
python310Packages.gtts
python39Packages.gtts

Maintainer pings
cc @unode for testing.

Result of nixpkgs-review pr 164288 run on x86_64-linux 1

4 packages built:

home-assistant-component-tests.google_translate
mnemosyne
python310Packages.gtts
python39Packages.gtts

Result of nixpkgs-review pr 164288 run on x86_64-linux 1

4 packages built:

home-assistant-component-tests.google_translate
mnemosyne
python310Packages.gtts
python39Packages.gtts


Is there a way to create js object (JsValueRef) from JSON string through ChakraCore API?

I uses the latest code in release/2.0 branch. Commit id:
commit 34c3ab15197056f15ec2aaac7c4843ba5855e13f
Merge: 796a580c fb42d22b
Author: Rajat Dua<EMAIL_ADDRESS>Date:   Tue May 16 14:04:44 2017 -0700

    [MERGE #2976 @rajatd] Fix linux builds in 2.0

    Merge pull request #2976 from rajatd:fix-linux-build-2.0

I didn't find anything about how to create a js object(JsValueRef) from JSON string through ChakraCore API.
There is an API in spidermonkey, v8, javascriptcore to achieve that, but I could not find anything in ChakraCore. Am I missing something?
In SpiderMonkey, we get:
JS_PUBLIC_API(bool)
JS_ParseJSON(JSContext* cx, JS::HandleString str, JS::MutableHandleValue vp);

In V8, we have:
static V8_WARN_UNUSED_RESULT MaybeLocal<Value> Parse(
      Local<Context> context, Local<String> json_string);

In JavascriptCore, there is:
JS_EXPORT JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) CF_AVAILABLE(10_7, 7_0);

But how to do it in ChakraCore?
Is there a API for doing this?
Currently, a workaround is:

Getting a global JSON object
Getting the parse property of JSON object
Passing json string to JsCallFunction and return the result

But unfortunately,  I got crash in Type::GetLibrary, the crash stack is:

ChakraCore doesn't have native JSON APIs. I'd do the same. Your crash stack doesn't seem to have JSON frames? Is there a way to reproduce/investigate? Probably you ran into some other issue.

Looks like this question is answered. Are there any follow up Tasks that need to be created?


[QUERY] How to create a SAS Uri with v12

Query/Question
Hi, I am porting my old v11 code to v12 and I find very unconvenient to generate SAS Uris with the new API. Old code was very simple:
			var serviceClient = account.CreateCloudBlobClient();
			var containerClient = serviceClient.GetContainerReference(containerName);
			var blobClient = containerClient.GetBlockBlobReference(blobName);

			var sasUri = blobClient.Uri + blobClient.GetSharedAccessSignature(new SharedAccessBlobPolicy()
			{
				SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
				Permissions = SharedAccessBlobPermissions.Read |
							  SharedAccessBlobPermissions.Delete
			});

Given a blob client, I was able to get a SAS Uri without having to get the account key from the connection string, which was very conenient given that if the connection string was "UseDevelopmentStorage=true".
If I am correct the new API requires to call ToSasQueryParameters() and provide a StorageSharedKeyCredential built from account name and account key. This requires me to parse the connection string, but I don't know exactly what to do with "UseDevelopmentStorage=true". The new code is:
			var containerClient = serviceClient.GetBlobContainerClient(containerName);
			var blobClient = containerClient.GetBlobClient(blobName);

			BlobSasBuilder sasBuilder = new BlobSasBuilder(BlobSasPermissions.Read | BlobSasPermissions.Delete, DateTimeOffset.UtcNow.AddHours(24))
			{
				BlobContainerName = containerClient.Name,
				BlobName = blobName,
				Resource = "b",
			};
			string sasBlobToken = sasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(serviceClient.AccountName, "<ACCOUNT KEY HERE, WHAT IF UseDevelopmentStorage=true?>")).ToString();

			var sasUri= blobClient.Uri + "?" + sasBlobToken;

Is there a way to get the StorageSharedKeyCredential directly from a BlobServiceClient?
Thanks!

I have to beg pardon since the question has already been presented here and also here but both issues are more than 6 months old and have NOT been addressed yet...

Thank you for your feedback.  Tagging and routing to the team best able to assist.

@amnguye can you take a look?

Currently there's a bug in GetClient where the StorageSharedKeyCredential is not getting passed from the parent client. I submitted a PR to addressed this however you will have to wait until the next release of the SDK to receive the fix.
Here's a short sample based on your snippet in v12 to construct a SAS Uri, that way you don't have to pass the StorageSharedKeyCredential from any of clients to the builder to generate a SAS Uri when this PR comes out.
var containerClient = serviceClient.GetBlobContainerClient(containerName);
var blobClient = containerClient.GetBlobClient(blobName);

// This generates a sasUri based on the blobClient information, so the containerName, blobName and resource will already be populated
Uri sasUri = blobClient.GenerateSas(BlobSasPermissions.Read | BlobSasPermissions.Delete, DateTimeOffset.UtcNow.AddHours(24));

However with the current released version you would have to initialize the client with a connection string to a StorageSharedKeyCredential for now.
e.g.
var blobClient = new BlobClient(connectionString, containerName, blobName);
OR
var  blobClient = new BlobClient( blobEndpoint, sharedKeyCredential, options);

// This generates a sasUri based on the blobClient information, so the containerName, blobName and resource will already be populated
Uri sasUri = blobClient.GenerateSas(BlobSasPermissions.Read | BlobSasPermissions.Delete, DateTimeOffset.UtcNow.AddHours(24));

I believe we don't have any plans to expose the StorageSharedKeyCredential from the client.
Sorry for the inconvenience.

Ok, thanks for the answer. I'll wait for the next release, I have to since I am also blocked by a nasty memory leak with v12.

This sample I provided above should currently work with the latest released preview version of Azure.Storage.Blobs .

Please re-open if you have further questions.


lostPointerCapture event cancels pinch gestures

Hello 👋🏼
At tldraw we use use-gesture for our canvas interactions. We recently noticed one situation where we use a long press on our canvas (the gesture target elem) to open a context menu. In iOS safari, this was firing a pointerdown event on the canvas and a pointerup event on the context menu. This left the PinchEngine in a broken state where it thought that the pointer was still down because it never received the pointerup event.
I noticed that you use the lostpointercapture event in the DragEngine to handle precisely this kind of situation, and it seems to work for the PinchEngine too. At least in our case.
I'd normally add tests for a PR like this, but I ran into problems with your test setup and it seems like a rabbit hole to figure out so I didn't add any tests yet. Please let me know if you'd like me to dig in and figure that out.

Hey @ds300 thanks a lot for the PR, I'm a huge fan of tldraw. I'll merge this tomorrow. Just curious if you ran into a similar issue with drag?

@ds300 would you mind giving me access rights to the branch or running pnpm changeset and pass this as a patch change if you know how this works?

@dbismut done!
And no we don't use the drag gesture so we haven't seen any issues there.


extensions release1.0.0-alpha.1

Coverage remained the same at 81.794% when pulling ba9044218b692d57b97bc86fd790f2640770b545 on msal-node-extensions/release1.0.0-alpha.1 into f20b1687f40152d8d6b26750557d4872f8176713 on dev.


npm package incorrectly published

Current Behaviour
<EMAIL_ADDRESS>If you look into the source code for v3.0.2, the handlePastedText logic is still there despite being removed. Which suggests that the package is incorrectly published !
 Digging in, thanks for the heads up