Stage 3 Specification Review: Waldemar Horwat

This is a placeholder task for the Stage 3 Specification Review feedback from Waldemar Horwat (@waldemarhorwat), per https://github.com/tc39/notes/blob/master/meetings/2019-07/july-25.md#explicit-resource-management-for-stage-2-continuation-from-tuesday

Spelling in spec: hygenic → hygienic

The invariants are a bit confusing. I was trying to figure out whether the [[DisposeMethod]] of a DisposableResource can be undefined. CreateDisposableResource calls GetDisposeMethod, which can return undefined in its first statement, and stores the result into [[DisposeMethod]]. On the other hand, the first statement of GetDisposeMethod is actually dead code since it's never called with V set to null or undefined.

Why is for (using const x in …) allowed by the grammar but turned into a syntax error by a static semantic rule? The simplest thing is to allow it, just like in for-of. I wouldn't worry about mandating early errors for obscure cases where we can determine that x doesn't have a . There's not much point in trying to turn things like using const x = 5 into early errors.

Please document the return values of HasCallInTailPosition. It's hard to read the spec without knowing what possible values it can return and what they mean. For example, does "not-found" mean that nothing blocking the call from being considered to be in a tail position was found?

CaseBlock without default clause: "first CaseClauses" → "CaseClauses"

A using const directly inside a switch statement will cause all subsequent statements to be non-tail-call even if they are in separate case clauses with an intervening unconditional break or return. It's an obscure case though, and I'm not sure trying to fix it is worth it.

Various for statements have HasCallInTailPosition defined as "Return HasCallInTailPosition of Statement with argument call". But don't some more of them need to account, for example, a LexicalDeclaration inside a three-clause for's parentheses containing using const?

The readme is inconsistent with the semantics. Which one is correct?

The readme states that multiple exceptions are handled as:
    if ($$try.errors.length > 1) {
      throw new AggregateError($$try.errors);
    }
    if ($$try.errors.length === 1) {
      throw $$try.errors[0];
    }

whereas the semantics seem to unconditionally create an AggregateError if any disposers produce errors. I like the version in the semantics much better. However, it still suffers from the potential issue that if you have several consecutive using const statements then you might get a tree of AggregateErrors.

Also, regarding switch: HasCallInTailPosition is a Static Semantics rule, so it doesn't differentiate between case 2 and case 3 below anyways:
function f() {
    switch (x) {
        case 1:
            return f(); // probably tail callable
        case 2:
            using const y = ...;
            // falls through
        case 3:
            return f(); // possibly not a tail callable?
    }
}

Even if we could solve for case 1, we would have to assume that the return in case 3: is not tail-callable since we can reach it from two different case clauses, only one of which contains a using const. If we did some kind of control flow analysis of switch, then we would have cases where the code "seems" tail callable but isn't due to a fall-through case clause, which would make it more difficult for a developer to determine if their function will be properly tail-call optimized. Instead, having a coarse-grained rule about tail calls in switch is actually more predictable.

I addressed the above comments in #75. You find the rendered version of the spec with these changes here: https://tc39.es/proposal-explicit-resource-management/pr/75

for..in and for..of are already ambiguous in the spec language. If we truly wanted this to be an LR(1) production we'd need to rewrite ForStatement and ForInOfStatement to use a cover grammar and then reparse once we encounter ,, ;, in, or of.

BoundNames — ForDeclaration : LetOrConst ForBinding
IsDestructuring — ForDeclaration : LetOrConst ForBinding
ForDeclarationBindingInitialization — ForDeclaration : LetOrConst ForBinding
ForDeclarationBindingInitialization — ForDeclaration : LetOrConst ForBinding
Static Semantics: Early Errors (for ForInOfStatement) — ForInOfStatement : `for` `(` ForDeclaration `in` Expression `)` Statement
ForInOfLoopEvaluation — ForInOfStatement : `for` `(` ForDeclaration `in` Expression `)` Statement
ForIn/OfBodyEvaluation — has Assert: lhs is a ForDeclaration
Additions and Changes That Introduce Incompatibilities with Prior Editions — References ForDeclaration in relation to for..in

Wouldn't we need to change all of these to support that refactor?

The refactoring hazard issue I raised at the meeting hasn't been addressed yet.
{
 using const x = ...;
 using const y = ...;
 z();
}

has observably different behavior when exceptions are thrown from:
{
 using const x = ...;
 {
  using const y = ...;
  z();
 }
}

We should make the behavior the same. One way to do this is to avoid merging multiple errors from the same scope together into a single AggregateError and instead always nest errors one at a time. If several resource disposers in the same scope throw errors, the last-destroyed one should create a record whose cause points to the record of the previously-destroyed one whose cause points to … and so on. This would fix the refactoring hazard above.

Why should we make them the same?

Because a reader of those two snippets of code would not expect them to have different behavior.

Why wouldn't they? Two different scopes have different behavior wrt const/let, and certainly would with the scope of using. Why is it reasonable to assume that adding curly braces around code leaves the behavior unchanged?

Well, let me make a weaker claim: I definitely would not expect those two snippets of code to have different behavior. I strongly suspect many readers will share my intuition, regardless of how reasonable it is.

Just to clarify my understanding, it's only the shape of the error that would diverge, right? All disposal would still be performed, in the same order, regardless of any error occuring during disposal. And all errors would still be available, just through a different path (flat errors vs errors+cause).
I personally do not believe it's that much of an hazard if that's the case.

The let and async of lookaheads are hard to get rid of for practical reasons, but the using const lookahead isn't needed and shouldn't be added.

Since it already has to lookahead, I guess it's not too problematic for implementors to add another case

Just to clarify my understanding, it's only the shape of the error that would diverge, right? All disposal would still be performed, in the same order, regardless of any error occuring during disposal. And all errors would still be available, just through a different path (flat errors vs errors+cause).

That is correct, the only difference would be in the shape of the AggregateError. All other errors would still be reachable.

@waldemarhorwat: I'd appreciate another look at the specification text prior to the September meeting, if possible.

Has the refactoring hazard issue been fixed? See the proposed fix above, which as far as I can tell has not been implemented.

The jagged AggregateError fix has not been implemented in the version of the spec I can see.

Thank you for the link. The proposal looks good with the change in #117.

#117 has merged, along with a few other minor issues noticed by @zloirock. @waldemarhorwat, should I consider this sign-off on the proposal specification text?


Improve article 1303.6051

The whole paper is based on data falsification ! See at PubPeer and at the Crystallography Horror Museum : http://cristal.org/CHM/CHM.html#18

@xtalb are you suggesting this paper should be removed from ar5iv?

This paper should (will) be retracted soon. Whole story here : http://www.cristal.org/Mesli-et-al.pdfAny chemist can see that Fe-F interatomic distance set at <1 angstrom is insane.They have transformed my neutron experimental data presented in Q(Anstrom-1)into radial distribution function in R. This is simply crazy. If you were a specialistin radiation diffusion by glasses you would see that immediately.Do what you want.Best,Armel Le Bailenvoyé : 28 avril 2024 à 19:26de : Deyan Ginev @.>à : dginev/ar5iv @.>cc : xtalb @.>, Mention @.>objet : Re: [dginev/ar5iv] Improve article 1303.6051 (Issue @.*** are you suggesting this paper should be removed from ar5iv?—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

@xtalb until now there have been a very small number of requests (until 4) for removals from ar5iv, all of which from the papers' authors.
I understand the concern, and the situation sounds very unpleasant.
For other retractions from arXiv (there are actually quite a number for the entire corpus), when the sources are retracted from the main site, and I update the ar5iv sources on my end, the article disappears on the next major conversion. I just did such an update on February 22, so any article retracted before that date should already be gone from ar5iv.
I will leave the issue open, feel free to ping it again when the arxiv.org retraction happens. You really want a retraction in the main site here, as they are the primary "source of truth", ar5iv is basically just an HTML mirror.
Thanks for the report and I am sorry you're dealing with this!


💭 Android: Avoiding crashes caused by reading codes after camera closed, or avoid repeating paused code reading requests

Question
When setting the camera inActive after reading a QR code, and activating it after that later (without any QR code visible), there seem to be events triggered, still from the last read QR code.
How can I avoid this?
What I tried
We are trying to implement a simple QR code reader in our Android app:

User taps on QR icon
Camera opens fullscreen
If a QR code is read, an overlay button will appear in the middle (the camera is still on and reading)

This did not work for us, as the app crashed constantly because of something trying to read images from the already closed camera.
So we implemented a next step:

If a QR code is read, the overlay button appears, and the camera stops (isActive=false)
the overlay can be closed by the user, which will cause the camera to activate again to read QR codes

No, we don't have any crashes any more. But there seem to be code reading requests in the "queue" (or where ever) that are replayed when re-enabling the camera.
Once the overlay is closed, it shows up again instantly, codeScanner.onCodeScanned is executed, even if there is no QR code visible.
In the logs I could see following lines, between our logs (and no QR code is visible):
ReactNativeJS                 D  closeOverlay
ReactNativeJS                 D  'codeScanningResult', null
CameraView                    I  Updating CameraSession...
CameraSession                 I  configure { ... }: Waiting for lock...
CameraSession                 I  configure { ... }: Updating CameraSession Configuration... Difference(deviceChanged=false, outputsChanged=false, sidePropsChanged=false, isActiveChanged=true)
PersistentCamerCaptureSession D  --> setIsActive(true)
PersistentCamerCaptureSession D  Configure() with isActive: true, ID: 0, device: android.hardware.camera2.impl.CameraDeviceImpl@6c2742c, session: android.hardware.camera2.impl.CameraCaptureSessionImpl@361405c
PersistentCamerCaptureSession D  Updating repeating request...
PersistentCamerCaptureSession D  Configure() done! isActive: true, ID: 0, device: android.hardware.camera2.impl.CameraDeviceImpl@6c2742c, session: android.hardware.camera2.impl.CameraCaptureSessionImpl@361405c
CameraSession                 I  configure { ... }: Completed CameraSession Configuration! (isActive: true, isRunning: true)
CameraView                    I  invokeOnStarted()
ReactNativeJS                 D  'onCodeScanned', [ { frame: { width: 221, y: 23, height: 212, x: 300 }, ...

What does PersistentCamerCaptureSession D  Updating repeating request... mean?
Can I somehow clean the "queue"?
Thanks!
VisionCamera Version
3.9.1
Additional information

[ ] I am using Expo
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar questions in the issues page as well as in the discussions page and found none.

Hey - I think this issue has been fixed in VisionCamera 4.0.0. 🥳
Please try V4 and let me know if you still experience this issue;

if not, please consider 💖 sponsoring me on GitHub 💖 to support the development of VisionCamera and thank me for my time spent on fixing bugs and building new features.
if you still see this issue, please comment and we can re-open this. But please update your native logs with the native (Xcode/Android Studio) logs from running VisionCamera V4 so I can investigate this.


cudnn_ops_infer64_8.dll issues

Hi there, sorry for trobles, but would be possible to point me out how solve following problem?
Loading faster whisper model tiny for device None
Could not load library cudnn_ops_infer64_8.dll. Error code 126
Please make sure cudnn_ops_infer64_8.dll is in your library path!
I got on my pc countless cuda toolkits, 20 copy of cudnn_ops_infer64_8.dll  across stable diffusion and many others projects and yet i got following error. I tryied install toolkit and cudnn by conda command (cuda list toolkit and cudnn shows nothing on list), but failed to download and install them.
Where is possible library patch that should contain cudnn_ops_infer64_8.dll  ?

I recommend you seek help at the upstream repository.
https://github.com/guillaumekln/faster-whisper/issues
The pined issue seems quite relevant to you.

ok thanks for suggestion. I will in that case


Add ability to run JS scripts during archiving with Playwright/Puppeteer

https://github.com/GoogleChrome/puppeteer is fantastic for scripting actions on pages before making a screenshot or PDF.
I could add support for custom puppeteer scripts for certain urls that need a user action to be performed before archiving (e.g. logging in or closing a welcome message popup).
Puppeteer code looks like this:
        const browser = await puppeteer.launch({headless: false})
        const page = await browser.newPage()

        await page.goto('https://carbon.now.sh')

        const code_input = 'div.ReactCodeMirror div.CodeMirror-code > pre:nth-child(11)'
        await page.click(code_input)
        await page.keyboard.down('Meta')
        await page.keyboard.down('a')
        await page.keyboard.up('a')
        await page.keyboard.up('Meta')
        await page.keyboard.press('Backspace')

Would go well with: https://github.com/checkly/puppeteer-recorder

archive.is has a nice set of scripts that do things like expanding all Reddit threads or scrolling through Twitter timelines before taking a snapshot. This is the kind of thing I've seen develop a nice community around with youtube-dl.

The beginnings of this will start to be implemented with our move from chromium-browser to pyppeteer: #177, then these will be possible:

support for scripted user flows (this ticket)
dismissing gdpr / cookie / subscription / donation popups automatically: #175
autoscroll before archiving with full-page dynamic height screenshots: #80
dynamic/interactive requests saving into the WARC with pypetteer running through pywb: #130

I have experience with coding Puppeteer scripts and I'm willing to start either implementing fixes for #175 #80 #130 as independent code samples in preparation for pyppeteer or to start a branch that just replicates current functionality but with pyppeteer depending on whether or not you've started a private branch or prefer to implement it yourself

Sweet, the super-rough planned design is for ArchiveBox to run user-provided scripts like this:
archive_scripts = {
    'dismiss_modals: '() => {document.querySelectorAll(".modal").delete()}',
    ...
}

browser = await launch()
page = await browser.newPage()

for link in links:
    await page.goto(link['url'])

    for script_name, script_js in archive_scripts:
        link['history'][script_name].append(await page.evaluate(script_js))

    link['history']['screenshot'].append(await page.screenshot({'path': 'screenshot.png'}))
    link['history']['pdf'].append(await page.print_pdf({'path': 'output.pdf'}))

await browser.close()

Alright cool, I will start working on getting that implemented on my fork.
Planning to do this in 3 phases across two milestones which I think align well with the current roadmap.
Phase I. import pyppeteer and replace all current chromium-browser calls with pyppeteer equivalents.
Milestone I. ArchiveBox migrated to pyppeteer
Phase II. Implement minimalist scripting support allowing users to extend browser-based modules using javascript.
Milestone II. Codebase aligned with Roadmap's Long Term Change to allow user-defined scripting of the browser.
Phase III. Bootstrap collection of browser scripts by creating and including

fullscreen_screenshot.js  - screenshot capturing of the entire page
anti_detection - bypasses detection/blocking of headless browser via selective overwriting of page-wide getter properties

We'll go to next steps from there

If possible, work on the Phase III scripts first. Those would be most helpful to me, as I've already started work on the phase I and II steps you outlined above over the last few months.

I found some huge repositories of Seleneium/Puppeteer scripts for dismissing modals and logging in to lots of sites. These are going to be super useful:

https://github.com/CriseLYJ/awesome-python-login-model
https://github.com/facert/awesome-spider
https://github.com/duyetdev/awesome-web-scraper
https://github.com/BruceDone/awesome-crawler

Whoops closed/reopened by accident.  A quick update for those following this issue, we have a number of blocking tasks before we're going to get around to this:

Finish refactoring extractors into independent plugin-style modules that define their own config and dependencies
Refactor ArchiveBox to use a message-passing/event-sourcing architecture so that all tasks are handled by workers listening on queues
Create a playwright/puppeteer message queue worker to handle all headless-browser related tasks in a single browser instance (to avoid launching and closing a browser for each URL/extractor run)
Define a spec for user-contributed playwright scripts that are callable by the playwright worker during archiving

Lots of work has been done so far to get us to step 1, but we're still at the foothills of what will be required before this feature is ready for prime-time. It's still high up on our list of desired features but don't expect it anytime soon.

Whoops closed/reopened by accident.  A quick update for those following this issue, we have a number of blocking tasks before we're going to get around to this:

Finish refactoring extractors into independent plugin-style modules that define their own config and dependencies
Refactor ArchiveBox to use a message-passing/event-sourcing architecture so that all tasks are handled by workers listening on queues
Create a playwright/puppeteer message queue worker to handle all headless-browser related tasks in a single browser instance (to avoid launching and closing a browser for each URL/extractor run)
Define a spec for user-contributed playwright scripts that are callable by the playwright worker during archiving

Lots of work has been done so far to get us to step 1, but we're still at the foothills of what will be required before this feature is ready for prime-time. It's still high up on our list of desired features but don't expect it anytime soon.

Looking very forward for these feautures to be implemented. Since Cloudflare now effectively blocks content crawling for many many adopting sites (such as Medim), functionality of Archivebox has a risk to be limited only to a sites which are not yet utilizing Cloudflare's bot detection systems.
(p.s.: Many sites are transitioning to Cloudflare's such services. There it is currently very likely to crawl an empty/failing archive like below example.)

+1 to that.
Really, REALLY annoying to see Cloudflare being so overly aggressive.
Like sure, you can be hammering down on me if I try to pull pages from sites protected by your network in the hundreds per minute, fine. I get that.
But to blatantly block me only because JS execution doesn't verify my humanness? Sketchy at best!

I've started mocking up what a playwright-based pluginized refactor would look like for ArchiveBox, and I think it's pretty elegant so far! This is still a ways away, but I'm starting to crystalize what I want the plugin-style interface to be between the browser and the extractors.
from playwright.sync_api import sync_playwright

CRUCIAL_STEPS = (
    BrowserSetupStep,
    PageLoadStep,
)

MINIMAL_STEPS = (
    BrowserSetupStep,
    PageLoadStep,
    TitleRecorderStep,
    HTMLRecorderStep,
    ScreenshotRecordeStep,
)

ALL_STEPS = (
    BrowserSetupStep,
    ExtensionSetupStep,
    SecuritySetupStep,
    ProxySetupStep,

    DialogInterceptorStep,
    TrafficInterceptorStep,

    DownloadRecorderStep,
    ConsoleLogRecorderStep,
    WebsocketRecorderStep,
    TrafficRecorderStep,
    TimingRecorderStep,

    PageLoadStep,

    ScriptRunnerStep,
    TitleRecorderStep,
    HTMLRecorderStep,
    PDFRecorderStep,
    TextRecorderStep,
    StorageRecorderStep,
    ScreenshotRecorderStep,
    VideoRecorderStep,
)

r = CompleteRunner()
r.run(url='https://example.com')

class EmptyRunner(BrowserRunner):
    steps = CRUCIAL_STEPS

class MinimalRunner(BrowserRunner):
    steps = MINIMAL_STEPS

class CompleteRunner(BrowserRunner):
    steps = ALL_STEPS

class BrowserRunner:
    steps = ()

    # runtime mutable state
    url = None
    browser = None
    context_args = None
    context = None
    page = None
    config = None

    def run(self, url, config):
        self.url = url
        self.config = config

        self.setup_browser()
        self.setup_context()
        self.setup_page()
        self.run_pre_load()
        self.run_load()
        self.run_post_load()

    def setup_browser(self):
        for step in self.steps:
            step.setup_browser(runner=self)

        return self.browser

    def setup_context(self):
        for step in self.steps:
            step.setup_context(runner=self)

    def setup_page(self):
        for step in self.steps:
            step.setup_page(runner=self)

    def pre_load(self):
        for step in self.steps:
            step.pre_load(runner=self)

    def load(self):
        for step in self.steps:
            step.load(runner=self)

    def post_load(self):
        for step in self.steps:
            step.post_load(runner=self)

class BrowserRunnerStep:
    @staticmethod
    def setup_browser(runner):
        pass

    @staticmethod
    def setup_context(runner):
        return {}

    @staticmethod
    def setup_page(runner):
        pass

    @staticmethod
    def run_pre_load(runner):
        pass

    @staticmethod
    def run_load(runner):
        pass

    @staticmethod
    def run_post_load(runner):
        pass

class BrowserSetupStep(BrowserRunnerStep):
    @staticmethod
    def setup_browser(runner):
        runner.browser = sync_playwright.chromium

    @staticmethod
    def setup_page(runner):
        runner.context = runner.browser.launch_persistent_context(**runner.context_args)
        runner.page = runner.context.new_page()

    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            executable_path: "path-to-chromium",
            timeout: 30_000,
        })

class PageLoadStep(BrowserRunnerStep):
    @staticmethod
    def run_load(runner):
        runner.page.goto(url)

class ExtensionSetupStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            args: ["--load-extension: ./my-extension"],
        })

class EmulationSetupStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            headless: True,
            user_agent: runner.config['BROWSER_USER_AGENT'],
            viewport: { 'width': 1280, 'height': 1024 },
            has_touch: False,
            is_mobile: False,
            device_scale_factor: 2,
            locale: 'de-DE',
            timezone_id: 'Europe/Berlin',
            permissions: ['geolocation', 'notifications'],
            geolocation: {"longitude": 48.858455, "latitude": 2.294474},
            color_scheme: 'light',
            **sync_playwright.devices['Pixel 2'],
        })

class SecuritySetupStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            user_agent: 'My user agent',
            java_script_enabled: True,
            chromium_sandbox: True,
            permissions: ['geolocation', 'notifications'],
            extra_http_headers: '...',
            bypass_csp: True,
            ignore_https_errors: True,
        })

class ProxySetupStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            proxy: {
              "server": "http://myproxy.com:3128",
              "username": "usr",
              "password": "pwd",
              "bypass": "github.com,apple.com"
            },
        })

class DialogInterceptorStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        # handle any dialog boxes
        runner.page.on("dialog", lambda dialog: dialog.accept())

class TrafficInterceptorStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        # intercept certain requests
        runner.page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json"))

class DownloadRecorderStep(BrowserRunnerStep):
    @staticmethod
    def get_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            accept_downloads: True,
            downloads_path: '.',
        })

    @staticmethod
    def run_pre_load(runner):
        # handle any download events
        runner.page.on("download", lambda download: print(download.path()))

class ConsoleLogRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        # save console.log to file
        runner.page.on("console", lambda msg: print(msg.text))

class WebsocketRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        # handle any websockets opening/closing
        runner.page.on("websocket", lambda websocket: print(
            websocket.url,
            # web_socket.on("close", lambda event: print(event))
            # web_socket.on("framereceived", lambda event: print(event))
            # web_socket.on("framesent", lambda event: print(event))
            # web_socket.on("socketerror", lambda event: print(event))
        ))

class TrafficRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        # save requests and responses to file
        runner.page.on("request", lambda request: print(">>", request.method, request.url, request.all_headers()))
        runner.page.on("response", lambda response: print(
            ">>",
            response.request.method,
            response.request.url,
            response.request.headers,
            response.status,
            response.status_text,
            response.url,
            response.headers,
        ))

class TimingRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_pre_load(runner):
        self.start_time = time.now()

        # measure timing
        runner.page.once("load", lambda: print("page loaded!", self.start_time, time.now()))

class ScriptRunnerStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        # run any scripts in the page
        someresult = runner.page.evaluate('object => object.foo', { 'foo': 'bar' })

        # get page dimensions
        dimensions = runner.page.evaluate('''() => {
          return {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight,
            deviceScaleFactor: window.devicePixelRatio
          }
        }''')

class TitleRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        # get title
        return runner.page.title()

class HTMLRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        # get full page html
        html = runner.page.context()

class TextRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        # get page innerText
        text = page.inner_text("body")

class StorageRecorderStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            user_data_dir: "/tmp/test-user-data-dir",
            storage_state: "./state.json",
        })

    @staticmethod
    def run_post_load(runner):
        # Save storage state into the file.
        runner.context.storage_state(path="state.json")

class ScreenshotRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        runner.page.screenshot(path='screenshot.png', full_page=full_page)

class PDFRecorderStep(BrowserRunnerStep):
    @staticmethod
    def run_post_load(runner):
        # generates a pdf with "screen" media type.
        runner.page.emulate_media(media="screen")
        runner.page.pdf(path="page.pdf")

class HARRecorderStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            record_har_omit_content: True,
            record_har_path: './har',
        })

    @staticmethod
    def run_post_load(runner):
        # TODO: save the HAR file path to output dir
        pass

class VideoRecorderStep(BrowserRunnerStep):
    @staticmethod
    def setup_context(runner):
        runner.context_args = (runner.context_args or {}).update({
            record_video_dir: './video',
            slow_mo: 0,
        })

    @staticmethod
    def run_post_load(runner):
        # save the video path
        Path(runner.page.video.path()).move_to('./screenrecording')

@pirate Do you have the playwright-based refactor in a public branch? I'd love to contribute if possible. :-)

Not yet but soon! It's just in a gist right now. Will publish it once I've moved >50% of the old codebase into the new structure. I'm traveling in Mexico right now with limited work time but will keep everyone posted as it progresses!
The new design is quite exciting, I'm able to add new features as plugins with <10min of boilerplate work per feature.

@pirate Do you have the playwright-based refactor in a public branch? I'd love to contribute if possible. :-)

Me as well. A few thoughts I've had:

Network interception disables cache. To reduce network load, you can set up a redis that will store a given request URL as the key, and the response body/headers as the value. Whether that's useful depends on how many things you are archiving I suppose.
You can load evasions from puppeteer-extra as js to help access pages protected by Cloudfare or another similar service.
In addition to js-based evasions, ideally, chrome is being launched in headful mode - using Xvfb as a dummy display.
Chrome and/or puppeteer has a reputation for leaking like a sieve (at least in js land), so it's critical to release resources no longer in use. As an added safeguard, you can also periodically kill and re-spawn the chrome process.

If there's any interest in these things, I can help implement them when the time comes. 👍

Useful scripts for evading bot detection with playwright/puppeteer in the future: https://github.com/niespodd/browser-fingerprinting#technical-insights-into-bypassing-bot-detection

Chrome now supports a new framework-agnostic JSON user flow export from the DevTools recording pane. I'd like to use this format if possible instead of playwright/puppeteer directly.
Waiting for a response to see if playwright will implement replay support for it. If so browsertrix-crawler will get support soon after, and I'm likely to just build on top of browsertrix crawler.
Related:

https://github.com/microsoft/playwright/issues/22345
https://github.com/webrecorder/browsertrix-crawler
https://developer.chrome.com/blog/new-in-devtools-101/#recorder
https://developer.chrome.com/blog/new-in-devtools-92/#puppeteer-recorder
https://developer.chrome.com/docs/devtools/recorder/reference/

Otherwise we could also add a custom recorder format for ArchiveBox to the archivebox-extension so that export scripts can be generated directly in our own format (but I prefer the JSON approach above instead^):

https://developer.chrome.com/blog/extend-recorder/

I have experience with coding Puppeteer scripts and I'm willing to start either implementing fixes for #175 #80 #130 as independent code samples in preparation for pyppeteer or to start a branch that just replicates current functionality but with pyppeteer depending on whether or not you've started a private branch or prefer to implement it yourself

https://github.com/ArchiveBox/ArchiveBox/issues/51#issuecomment-475906694

https://github.com/GoogleChrome/puppeteer is fantastic for scripting actions on pages before making a screenshot or PDF.
I could add support for custom puppeteer scripts for certain urls that need a user action to be performed before archiving (e.g. logging in or closing a welcome message popup).
Puppeteer code looks like this:
        const browser = await puppeteer.launch({headless: false})
        const page = await browser.newPage()

        await page.goto('https://carbon.now.sh')

        const code_input = 'div.ReactCodeMirror div.CodeMirror-code > pre:nth-child(11)'
        await page.click(code_input)
        await page.keyboard.down('Meta')
        await page.keyboard.down('a')
        await page.keyboard.up('a')
        await page.keyboard.up('Meta')
        await page.keyboard.press('Backspace')

https://github.com/GoogleChrome/puppeteer is fantastic for scripting actions on pages before making a screenshot or PDF.
I could add support for custom puppeteer scripts for certain urls that need a user action to be performed before archiving (e.g. logging in or closing a welcome message popup).
Puppeteer code looks like this:
        const browser = await puppeteer.launch({headless: false})
        const page = await browser.newPage()

        await page.goto('https://carbon.now.sh')

        const code_input = 'div.ReactCodeMirror div.CodeMirror-code > pre:nth-child(11)'
        await page.click(code_input)
        await page.keyboard.down('Meta')
        await page.keyboard.down('a')
        await page.keyboard.up('a')
        await page.keyboard.up('Meta')
        await page.keyboard.press('Backspace')

185

I've been doing some work for paying ArchiveBox consulting clients to implement advanced puppeteer-based archiving. Here's what I can share so far:
Puppeteer Script to Archive TikTok w/ Auto-login, full-page screenshots, and screenrecording video+audio mp4
My clients (all non-profits) pay for my time needed to learn about and implement these features, so getting it working for their immediate needs is my priority, but the plan is to integrate these new features back into the main open-source ArchiveBox codebase so everyone can benefit!

For what it's worth this functionality is quite similar to how ChangeDetection works.
https://github.com/dgtlmoon/changedetection.io/tree/master/changedetectionio/content_fetchers
It's very useful to just plug in an additional service into the docker-compose for browserless.io and then pass the websocket URL to the app and get a full browser experience totally headlessly on Ubuntu.


feature: keep disable packages in the json

Did you check the docs?

[X] I have read all the lazy.nvim docs

Is your feature request related to a problem? Please describe.
When a package has "enabled = false" then the package is removed from package.json (I believe).
Because the version is removed then if I enable a package again it's a different version from last time.
It's especially annoying that I have a work PC and a home PC with different packages enabled (controlled via env variable). My packages are therefore not properly locked to their versions on both of my PC and I have a ton of noise because git status shows me that package.json is different everytime I start nvim on my home/work PC.
A workaround I use is to use two differents package.json and loads them  conditionnaly depending if it's work/home PC. But now every single package potentially has different versions so it's worse in that regard (but less noise in git status)
Describe the solution you'd like
Do not remove disabled packages from package.json
Describe alternatives you've considered
Make my solution optional (enable it via a flag). But I think it's better if always enabled
Another solution would be using the same package.json for my two environnements (for the packages enabled in both environnements) and have then two other package.json, one for each environnement, for only the packages that are enabled conditionnally. But it's kinda complicated I think because then how to specify what package.json to use etc.
Additional context
No response

I need this too. I just migrated to lazy, and it works very nicely except for this only one thing.
In some cases, I want to enable/disable plugins for certain conditions. E.g. I use obsidian for note taking, but I only want to enable it when I'm in the obsidian directory not just any markdown files.
I tried both enabled and cond, but they behave similarly. If either enabled or cond is false, the plugin will be removed from the lock file.

See #1606

Plugins with cond=false or disabled=true now remain in the lockfile


Deprecate normative/optional, parse a list of fields under schema

Worth warning arcs chat before landing?

Worth warning arcs chat before landing?

Will do.


ANC - C-Section - Reasons [4h]

Issue
On this screen, we are updating the check box list for reasons for c-section.
Changes:

Take away "none" as an option
Add in "previous c-section" as an option
Keep all others the same

To Do:

updated check box list
let jeanette know if you need an updated design for this

@adamhstewart @anvmn

nutrition env
tablet

Checked and Approved:
Options in Reason for C-section question were updated: the "none" option has been removed and the "previous c-section"  option has been added


Button not working if initialized as true

Behaviour: When a variable associated with a button is initiated as true, it will never become reactive. See MWE below
MWE
using GenieFramework
@genietools

@app begin
    @in process = true # change this to false and all will work as expected

    @onbutton process begin
        @info "Button clicked"
    end
end

function ui()
    btn("Send", @click(:process))
end

@page("/", ui)
Genie.isrunning(:webserver) || up()

Versions:

Julia 1.10.0
GenieFramework v1.26.11 // tried v2.0.0 and same problem

That's the expected behaviour. If you want that the button is pressed right at the beginning, you should trigger it upon isready:
@app begin
    @in process = true # change this to false and all will work as expected

    @onbutton process begin
        @info "Button clicked"
    end

    @onchange isready begin
        process = true
    end
end

Good to know, took me 2 hours of debugging! Thank you.

Sorry to hear that. Happy coding anyway.
We're currently bringing Genie to Vue3/Quasar2 so stay tuned.

Exciting!
@hhaensel, would you mint commenting on why does initialization value break everything?
It doesn't fit with my mental model of how Stipple works.
When debugging, I saw that the HTML look correct (v- attributes), the VUE inspector looked correct, the generated model in .js looked correct, etc.

why does =true break its functionality?
where would YOU look to debug such issue?

Thank you!

There is definitely something else going on - in past versions of StippleUI, I could use:
@click("btn_reset=!btn_reset") inside a button, but that no longer works either. It must be @click(:btn_reset)

@svilupp not sure what you'd expect to happen in your initial example. What happens is that you set process to true and the button's click also sets it to true.

Here I just looked in the browser's inspector:
a) no errors
b) process is already true

c) page source shows that onclick event does not change the value:

There is definitely something else going on - in past versions of StippleUI, I could use: @click("btn_reset=!btn_reset") inside a button, but that no longer works either. It must be @click(:btn_reset)

You can still use that. Per my tests snippets:
@onbutton process begin
    @info "Button clicked"
end

@onchange process begin
       @info "Changed"
end

function ui()
       btn("Send", @click("process = !process"))
end

However I see something wrong @hhaensel
a) initially process is true
b) upon click, only the changed handler is triggered, not the onbutton -> process switches to false
c) after that, changed gets triggered twice (presumably changing process twice which stays false, never becoming true)
REPL output:

Console output:

That's all normal, I'd say.
@onbutton looks for a switch from false to true, executes the handler and sets the button back to false. If you'd print "changed to $process" you would see that.

If you want a different behaviour, use the @onchange process and do the handling yourself.

When you set loading = :process the button starts spinning and waits for being set true. I think in that case you cannot change the buttons's state by clicking.

Closing as answered! Thank you


[DEVHAS-438]get latest Alizer

What does this PR do?:

Pulls in latest Alizer from devfile org with the controller-runtime rolled back to 0.14.4
Which issue(s)/story(ies) does this PR fixes:

https://issues.redhat.com/browse/DEVHAS-438
PR acceptance criteria:

[ ] Unit/Functional tests

[ ] Documentation

[ ] Client Impact

How to test changes / Special notes to the reviewer:

/retest

/retest

@johnmcollier @maysunfaisal @kim-tsao  Need a quick review for this PR. Thanks!


[Question] - Reinitialization of the entire AR system

Hi @achuvm,
When the AR system is initialized  the onTrackingInitialized method of the ViroARScene gets invoked once.
I'm wondering if that process can be repeated let's say with a reset button?
Thanks,
Tom

Hi @dittmarconsulting,
We don't currently have a way to "reset" AR, but it is something we may consider.
I am curious of what behavior you'd expect from a "reset" in AR though. Would the camera position simply go back to [0,0,0]? Would the planes that have been found be lost?
I'd also like to learn of the use cases you have for this feature to see if whether or not we can accomplish them with our existing API's.
Andy

Hi Andy,
What I want to do is to is to re-init (find a new ground plane) using ARPlaneSelector.
What I do right now is to invoke the private function _onTrackingInitialized() of the ViroARScene, which works fine if the initial position is almost the same.
I have a REDUX props that decides when this function gets invoked in my version of the `ViroARScenes' component
componentDidUpdate() {
        // REDUX prop & function
        const { reinit, setSetReinit } = this.props
        if(reinit) {
            // re-init
            this.mainScene._onTrackingInitialized()
            // set the bool to false again (singleton)
            this.props.setSetReinit(false)
        }
    }

For some reason it remembers the initial position and it's hard to assign another plane somewhere else. I have tried to reset planeIsSelected and arPlaneSizes of the ViroARPlaneSelector but it seems it remembers the coordinates in another place?

Hi @dittmarconsulting,
If you want to reset the ViroARPlaneSelector, there's a reset() function that you can call here:
http://docs.viromedia.com/docs/viroarplaneselector#methods
That'll show all the surfaces again and allow your users to select the next plane. I believe that's what you need.
As for _onTrackingInitialized() that's a function that's called when the underlying AR system (in this case, ARKit) has finished initializing and has started to track the camera position. It should only really callback when the user first opens your app.
Let me know if that solves your issue (or if I'm misunderstanding you).
Andy

Hi Andy,
I tried reset() but all what it does it sets the selectedSurface props back to -1 so that the _getARPlanes function can push a new ViroARPlane to the array of arPlanes
reset() {
    this.setState({
      selectedSurface : -1
    });
  }

I have set _maxPlanes of the ViroARPlaneSelector to one. Hence it will only push 1 ViroARPlane to the array. Although it should reset the surfacePosition as well I'm not able to select a surface on another spot and it only work 2 or 3 times until it doesn't find a surface at all anymore without restarting the app.
I haven't been able to find the problem why that is.
Cheers,
Tom

Yeah, unfortunately that's a limitation of our existing APIs.
Essentially, the underlying system may find N number of planes, but there's no way for the developer to easily control which detected plane a ViroARPlane will attach to as we'll automatically assign ViroARPlane to whichever detected plane satisfies the minHeight/minWidth requirements.
One way you "could" do this is to simply add a bunch of ViroARPlanes and listen to their callbacks for when they are attached/updated/removed. With the callbacks you can determine the position of the planes and you can manually move your content to the ViroARPlane you want to use.
In our next update (~mid-November), we'll be exposing the full API that'll let the developer listen for found anchors without adding a Viro component. Then the developer can use an anchor ID to attach the a ViroARPlane to the underlying anchors.
Thanks,

Thanks Andy,
I'm happy to wait for the next update.
I'm really excited about the lib. There is so much potential, especially since you have implemented ArKit.
Regarding the reset, I will try to reset the entire JS part of the app using this package. I hope that will reset the underlaying system as well.
Thanks again.
Tom

Hi @achuvm,
Just for the reference my approach with react-native-restart works perfectly.
I reset the entire JS project, which re-initiates the AR system as well. I get a new plane at any other location now.

Is there a now proper way to handle resetting an ARScene where ARPlaneSelector will detect new planes (not just push next ones)?


Update javadoc build to use Hyperledger Bot

Signed-off-by: James Taylor<EMAIL_ADDRESS>

Missed something


Additional tokens for data_leak

I would suggest to add the following to the list we currently have:

google_oauth_token
google_oauth
google_b64
awsBucket
xoxo-
(used by slack)
https://outlook.office.com/webhook/

https://github.com/OWASP/OFFAT/pull/107/files

closing since PR is merged.


SPFx library component not displaying the assets location

Target SharePoint environment
SharePoint Online
What SharePoint development model, framework, SDK or API is this about?
💥 SharePoint Framework
Developer environment
None
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[X] 💥 Microsoft Edge
[X] 💥 Google Chrome
[X] 💥 FireFox
[X] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

browser version
SPFx version
Node.js version
etc

Describe the bug / error
When deploying an SPFx library component to the app catalog, it doesn't display the location from which assets are loaded.
Steps to reproduce

Create an SPFx library component and ensure that includeClientSideAssets is set to false
Upload the files needed for the library component to external resource like Azure storage or some other CDN.
Upload the component to the app catalog.
It shows up like this:

Notice the lack of this text:

Expected behavior
It displays the location from where assets are being loaded.
Works fine if its a webpart or an extension.
It should be displayed like this and show the content location of the assets which are being loaded :

@gautamdsheth  - are you seeing the same issue with modern experience?

Yes, in modern as well


RDF output gets garbled on fast machines

Turns out the input processor is faster than the output generator! The latter also runs in a separate thread, so
multiple output processors may be running.

And thank Sander Boymans for spotting this one.

There is a fix in 0.8.3-pre4 with 83a6d7572b5cb625304fb9aedf5231cc7aa2c01a


Port VxWorks OSAL to shared/ng OSAL architecture

This is a follow-on to #5.
The original change set was merged to development branch as of the 2018-10-09 CCB, without yet having an implementation for VxWorks that uses the refactored architecture.
Before the next OSAL release, there should be an implementation for VxWorks using the shared layer, to go with posix-ng and rtems-ng.

Imported from trac issue 208.  Created by jphickey on 2019-03-08T12:32:47, last modified: 2019-08-29T15:38:05

Trac comment by jhageman on 2019-07-17 15:44:54:
Updated to this release to support build verification platform.

Trac comment by jhageman on 2019-07-26 15:13:27:
Milestone renamed

Trac comment by jhageman on 2019-08-14 12:41:26:
CCB 8/14/2019 - Goal is by 8/21, select issue and a signals issue in work

Trac comment by jphickey on 2019-08-19 21:44:57:
Commit [changeset:861fc3a3] is a good candidate for review and merge.
Verified that the test programs in "osal/src/tests" all work (in conjunction with #231).  This ensures that queues, tasks, semaphores, timers, files, and the symbol API are all working OK.
CFE runs and loads the apps successfully.
Update 2019-08-20: Fixed some additional coverage test items.  Coverage is at ~95% functions and ~90% lines.  Might still be opportunities to improve this before release but this shouldn't hold up CCB review.

Trac comment by jhageman on 2019-08-21 13:03:30:
CCB 8/21/2019 - Introduced topic, will perform in-depth review off-line with key stakeholders

Trac comment by jphickey on 2019-08-23 09:48:41:
Update - Rebased to commit [changeset:634c86e].
Now based off the ic-ccb-20190821 integration candidate branch, which includes the OSAL boolean deprecation.  This now only uses C99 true/false and bool type.

Trac comment by acudmore on 2019-08-27 13:15:29:
Notes from code review:
Overall: I don't see anything that I don't think will work. comments and questions below.
vxworks-ng - all files - update copyright year
- is it worth removing NOSA license info in preparation for Apache release? Risk is changes will be required if Apache 2.0 release is not approved
Nit pick on function names in comments: Add _Impl to some of the functions names in the comment headers.
vxworks-ng/osapi.c:
Line 162: I'm not sure how this table is initialized:
is [OS_OBJECT_TYPE_OS_TASK] = {.mem = OS_task_table_mut_mem }, doing the following:
For the VX_MUTEX_TABLE entry indexed by OS_OBJECT_TYPE_OS_TASK, assign the .mem member, and do not init the vxid member?
Line 178: why is the enum needed?
Line 302: Why is the while(0) needed? For the break statement to work?
Lines 441 - 480 - If re-using a block from the heap for the stack, does is there a chance of a memory leak? I don't think there is, because even if the pre-allocated block was bigger than the stack size needed, the whole heap block would eventually be returned/freed. (sound right?)
Would it be simpler just to free and allocate new every time instead of adjusting?
Line 493: why round down?
Line 499: Does _STACK_GROWS_DOWN mean that it goes from address 100 to address 0 ( down numerically?). If so, line 500 makes sense to me
Line 657: Is the comment block on OS_task_key needed?
Line 668: Is this line why the TCB needs to be first in the internal task record?
Line 1418: Tick API comment block still needed?
vxworks-ng/osfileapi.c
Line 82: are we OK with including C files in OSAL/cFS in general? I think it's OK, but does it violate any standards for class A?
vxworks-ng/ostimer.c
General comments -
I think there is one task per timebase created, right? How many timers is reasonable to support?
OK to have all timer tasks running at highest priority? Will they only be waiting, or calling a user callback? I suppose a user could break the system by hogging the CPU at priority 0 in a callback, but the same thing (or worse ) could have happened in an ISR based timer callback.
vxworks-ng/osselect.c
is this file needed if it just includes the generic one?
( If the argument is to allow for vxWorks includes, and for build consistency, then I say it's OK)
vxworks-ng/osfileapi.c
Line 150: fixme note: Does this apply? wouldn't the directory listing only show files or sub-directories? I suppose you could do something like put "../../" in paths to break out of the mounted volume, in which case you would start seeing something different from the virtual paths. I would vote to not try to fix that here.

Trac comment by jhageman on 2019-08-27 14:03:44:
Does the target_link_libraries order matter in src/unit-test-coverage/CMakeLists.txt?
Comments out of date - see osapi.c, claims testing against a specific version of VxWorks
Os_taskRegister, OSQueueGetInfo comment block doesn't match implementation
OS_BinSemCreate (and many others) - comments don't match implementation, specifically return values

Trac comment by jhageman on 2019-08-27 15:22:54:
8/27/2019 code review notes:
OS_Lock and Unlock Global - could check vxid nonzero instead of null check, although only used internally so extensive checking not really gaining much (and less efficient)
Architectural comments - related to return codes.  What to do if basic things fail (taskSuspend, etc).  Really needs to be addressed at a higher level.  Don't plan to address that here.
Virtual directories - this translation not currently all that useful on RTEMS/Linux, although does help for keeping config files consistent between test environments.  Suffixes still an issue even with virtual directories.  Bigger/different scope than this ticket.  May move description to shared layer.
Possible future ticket for stack size and handling - timer task calls handler so could blow stack based on an unfriendly handler so could be configurable... similar issue with timing.
Discussion on ifndef and providing defaults - 5.0 release doesn't have to support last gen osconfig.h, backwards compatibility not really required here.  Would include cleaning up osconfig.h.

Trac comment by jphickey on 2019-08-27 16:42:19:
Submitted #240 for action item about function header comments

Trac comment by jphickey on 2019-08-27 16:07:55:
A couple additional points on things that came up during review but might be worth clarification now that I've had a moment to review them again:

To implement OS_TaskGetId in the previous vxworks6 implementation, it used the taskVarAdd function.  This function is incompatible with SMP systems as it basically just resets a global on every kernel task switch (i.e. it depends on only running one task at a time).  Hence why something better was needed to be SMP-compatible.  This is why being able to control the address of the WIND_TCB structure is beneficial in several ways.

Because we //do// now actually use the stack pointer that is passed in, this can be statically allocated in the application too.  So tasks can also avoid all dynamic memory allocation, if designed to do so.  The only thing that really can't avoid it is Queues as they are not of predefined length.  The memory for these will be allocated from the heap and is therefore subject to the risks thereof.

I did reference the code in VxWorks for taskSpawn - it is actually implemented in a call to taskCreateWithGuard.  There is more logic in here for adjustments than what is in OSAL, but this appears to be more for special cases that OSAL doesn't need to be concerned with.  For the logic related to rounding and growing up/down it looks basically the same.

The only (possible) concern is that at least for older versions of VxWorks (5.x) the task stack and TCB must have been allocated adjacent to eachother in memory (i.e. the TCB structure was basically at the beginning of the stack space).  The documentation would suggest that in VxWorks 6.x this is not required anymore, but I do get the impression this is a lesser-used feature.  There may be some code somewhere that still assumes the TCB and stack base pointer are adjacent to eachother.
If any VxWorks experts out there can weigh in on that aspect, that would be helpful.  If we must allocate the stack and TCB together, then it breaks the logic used for OS_TaskGetId_Impl.  FWIW, the MCP750 vxworks6.9 combo seems to handle this (separate stack/tcb) just fine, the only question is whether there is a risk of other platforms having issues.

Trac comment by jphickey on 2019-08-27 22:46:24:
Updated per code review comments in [changeset:fd8ce5e]
Note this is a successor commit and not an amend, so it only contains the changes per the review comments.  Specifically:

Testing vxid rather than mem pointer
Remove a FIXME comment and put a better note in the shared layer as it affects all implementations
Fix a format string mismatch causing a warning

Trac comment by jhageman on 2019-08-29 13:50:26:
Tested in ic-ccb-20190828
CCB 8/28/2019 - Code reviewed and approved for merge to development branch

Trac comment by jphickey on 2019-08-29 15:37:42:
Validated in ic-ccb-20190828 branch

Trac comment by jphickey on 2019-08-29 15:38:05:
Merged to development branch


Roll Engine from 64b13b8eff25 to 93f3991842fb (3 revisions)

https://github.com/flutter/engine/compare/64b13b8eff25...93f3991842fb
2021-11-20<EMAIL_ADDRESS>Reland: Display Features support (flutter/engine#29585)
2021-11-19<EMAIL_ADDRESS>Roll Skia from 940086c81587 to 9b35cd642f98 (4 revisions) (flutter/engine#29852)
2021-11-19<EMAIL_ADDRESS>[ci.yaml] Update engine enabled branches (flutter/engine#29820)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


OSD on TELEM1?

Hi,
I know there is options in QGC to setup TELEM2 port to send OSD data. However, some people use it as a companion link at 921600, and keep TELEM1 for telemetry. However, I can not see options to send OSD via TELEM1. It would be more flexible to have options parameter for TELEM1 just like TELEM2.
Thanks.

Does an OSD work with the default telemetry configuration on 1? That's 57600 baud and the "normal" set of messages.

What I know is that TELEM1 does not send OSD.

hello ,friends .i have a question .i want to change the  baud of TELEM2 from 57600 to 115200 .but 115200 doesn't exist in the qgc .what should i do ?

@KJNKJNKJN I can see it's already handled here,
https://github.com/PX4/Firmware/blob/da8724accb2fe83ebee82c9db9fc9f8f1680db6b/ROMFS/px4fmu_common/init.d/rcS#L702
but the option is not included in QGC yet. You might want to try to set it manually through NSH
 nsh> param set SYS_COMPANION 3115200. Then, reboot, and check.

@dagar OSD mode just streams less: https://github.com/PX4/Firmware/blob/45af77a5431a35444afd4d80e32aabc8feb36c66/src/modules/mavlink/mavlink_main.cpp#L2048
so it should work just as well on telem1

WIP PR to add options for the default interface. https://github.com/PX4/Firmware/pull/5184


chore(deps): update dependency typescript to v4.2.3

Closes

User facing changelog

Additional details

How has the user experience changed?

PR Tasks

[ ] Have tests been added/updated?
[ ] Have docs been added/updated?
[ ] Have stories been added/updated?

:tada: This PR is included in version 1.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Wheel support for linux aarch64

Summary
Installing regex on aarch64 via pip using command "pip3 install regex" tries to build wheel from source code
Problem description
regex doesn't have wheel for aarch64 on PyPI repository. So, while installing regex via pip on aarch64, pip builds wheel for same resulting in it takes more time to install regex. Making wheel available for aarch64 will benefit aarch64 users by minimizing regex installation time.
Expected Output
Pip should be able to download regex wheel from PyPI repository rather than building it from source code.
@regex-team, please let me know if I can help you building wheel/uploading to PyPI repository. I am curious to make regex wheel available for aarch64. It will be a great opportunity for me to work with you.

Not sure how you ended up here, but this is not the home of the Python regex package.


Unable to use USB cam

Hi, I have been working on blueos and I have been trying to use a simple usb camera. This video stream doesn't seem to show out in the GCS(Cockpit). SO, I tried to read the cam feed and encoded it to h264 using ffmpeg command. The GCS reads feed from a websocket, so I read the data in TCP and sent out the same data in websocket to the ip:port, that it was expecting(i.e., <IP_ADDRESS>:6021). But the data doesn't seem to show up. When asked in cockpit they asked to look through mavlink-camera-manger rather than trying out to change in the OS. But I am very much new to rust and mavlink-camera-manager. Any help, would be appreciated.
Thank you

Hi @2vin2vin, in BlueOS, when you go to the video page, is your device showing there?

Yes, it is showing only after I add the stream

Right, can you send a screenshot of what you see?

Closing due to inactivity. Feel free to comment so we can reopen it.


Multiple improvements

Add compatibility for components used by React Router routes:
<Route component={Foo} />
Add option to hide third party components (i.e. from node_packages)
Add option to include extra directory of components:
For example, if you use webpack for imports relative to the src dir
Fix reporting multiple imports from a single source (e.g. import {Foo, Bar} from 'package'
Sort the output components alphabetically
Output component names with their directory/module
Allow components from index.js, e.g.:
import App from App -> App/index.jsx
Allow relative imports (e.g. ../Foo)

I ended up removing Bluebird and the promise stuff; I didn't find it to be necessary in my testing.

Thanks for your contribution @kane-c! Just wanted to let you know we will be reviewing this over the next couple of days.

No worries! Loving the project, by the way. It's something I've been wanting for a while.

Looks great, thanks so much for the help!


Updated dependency versions to latest available

rusttype = 0.8
vulkano = 0.17
vulkano-shaders = 0.17
Updated lib.rs to match the modified Vulkano API. Removed and/or refactored code that referenced deprecated/refactored Vulkano API.
Updated examples to function with the Vulkano API changes.
Incremented version number in Cargo.toml to 0.12 from 0.11

Hey, thanks for the PR!
I dont use vulkano anymore and therefore dont use this project either. (I've moved onto wgpu)
I compiled and run your changes and it seems to work so i'll go ahead and merge + release it.
I havent thoroughly reviewed the code at all though, but this project is small enough that I dont mind.
btw usual etiquette for properly maintained projects is to not touch the crates.io version, but in this unusual case I dont mind, saves me some effort :P

Thanks for the feedback, I had no idea about the crates.io version. It makes a lot of sense to leave that to the maintainer.


[flutter run] open Android Emulator

It will be nice to make the flutter run command open android emulator if it is not open.

@Andy-Python-Programmer , this behaviour is not intended as flutter supports other platforms too. So opening the android emulator will not be suitable. That said, flutter run already has a -d argument to run on the device


Windows 10 now supports process isolation

Hi, Windows 10 supports process isolation now through the --isolation=process flag. Could this matrix be updated to reflect that? (Currently, it still says Windows 10 hosts only support Hyper-V isolation.)
Thanks!

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

ID: c47037c4-4b2e-b41c-64a3-d82ec79c18c4
Version Independent ID: 947b1d95-3cd5-53d4-042f-71afe8bb3bdf
Content: Windows Container Version Compatibility
Content Source: virtualization/windowscontainers/deploy-containers/version-compatibility.md
GitHub Login: @taylorb-microsoft

Any update on this. Why does the table indicate process isolation mode is not supported on  Windows 10?  Is this some sort of "it works", but it's "not supported" trickery?

Hey
Im also confused. I have exactly this not "supported" feature running on multiple PC's. Does anyone know more about this?

We removed the block, but it is not officially supported.

Thanks for your reply.
I was referring to this page.
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/containerd
Here is the same sentence.
Not official supported means what? You give no guarantee that process isolation does run?

If you call customer support, it's a best effort resolution vs a fully supported feature that would need to be fixed. There are enough kernel level variations between client and server that we can't be assured everything will work exactly the same.  For example, the default scheduling mode for client prioritizes foreground applications, server does not.

As I understood correct the isolation process is working with Windows 10 Hosts and it is part of the operating system, with some differences between Windows 10 vs Windows Server
I think this is also what is highlighted here, right?: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility
If I'm right that means that ContainerD is able to support process isolation also on Windows 10 hosts, correct?
But not fully supported by windows in terms of I get no direct customer support.

Cool. Thanks for clarification.
Would be nice if we can reflect this in the documentation as well.

We hugely appreciate your contribution, feedback, and support to our technical documentation.
We’ve phased out GitHub Issues on this repository as the feedback mechanism for content and have replaced it with a new feedback system. For more information see, Content User Feedback. As part of this rollout, we are migrating your issue where our team will use your comments to improve the documentation experience. Unfortunately, this does mean you won't be able to access this issue after the migration is complete.
All issues will be migrated by Thursday 29th August 2024.
Once again, thank you for your valuable feedback, we hope you’ll continue to contribute using our new feedback system.


Test microplan in Windows machine

We have to test the application in a windows machine and fix if issues are there.

I think, we need to use https://www.appveyor.com/

Closing. works with windows 7/10.


templates/dashboards: Set uid to a fixed string

This way the generated url on app-sre's grafana instances will always be
...d/image-builder-crc.

I plan to update all references to the dashboard after this, and then we'll hopefully never have to make sure the urls are up to date ever again :)

Unrelated failure, no resources available in a specific gcp zone, they'll come back when they come back :)


reset field tabindex values in templates/slicer_tab.jinja2

This patch restores field order to its logical (document) order. All input fields had previously had tabindex="-1", and this was preventing tab focus from working. Tested on Firefox and Firefox mobile.
Apologies if there's some upstream magic I'm missing, but I'm more about
sed 's/tabindex="-1" //g;' slicer_tab.jinja2 > slicer_tab.jinja2-patched

than installing Docker.

Great job @scruss You change will go out with next release. :)


NoMethodError: undefined method `at_xpath' for nil:NilClass

I'm probably missing something.
Assuming I have the file example.xml with the content:
<?xml version="1.0"?>
<tag>test</tag>

Then I followed your example, and executed the code (replacing the cert, key files and password):
require "signer"

signer = Signer.new(File.read("example.xml"))
signer.cert = OpenSSL::X509::Certificate.new(File.read("cert.pem"))
signer.private_key = OpenSSL::PKey::RSA.new(File.read("key.pem"), "password")

signer.document.xpath("//u:Timestamp", { "u" => "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" }).each do |node|
  signer.digest!(node)
end

signer.document.xpath("//a:To", { "a" => "http://www.w3.org/2005/08/addressing" }).each do |node|
  signer.digest!(node)
end

signer.sign!(:security_token => true)

but I get NoMethodError: undefined method 'at_xpath' for nil:NilClass

By default signer expects a SOAP message with soap:Body, soap:Header tags and oasis:Security tags already present.
But signing of simple XMLs is possible too. Look in this test for inspiration: signer_spec.rb#L91-L110
Probably we should rewrite README a bit.

I had the same problem but the spec helped me. Thanks, rewritten README would be awesome :)

This line is required to avoid the above error
signer.security_node = signer.document.root

This line is required to avoid the above error
signer.security_node = signer.document.root

Actually, it doesn't have to be the root node, it depends entirely on where in the XML document you want to insert the signature.


Traefik with Consul catalog backend + Registrator

What version of Traefik are you using (traefik version)?
1.1.2 camembert
What is your environment & configuration (arguments, toml...)?
Config.toml to enable Consul Catalog backend
[consulCatalog]
endpoint = "<IP_ADDRESS>:8500"
domain = "service.consul"
prefix = "traefik"

Rules.toml (File backend which works correctly)
# rules
[backends]
  [backends.backend2]
    [backends.backend2.maxconn]
      amount = 10
      extractorfunc = "request.host"
    [backends.backend2.LoadBalancer]
      method = "drr"
    [backends.backend2.servers.server1]
    url = "http://<IP_ADDRESS>:4040/"
    weight = 1
    [backends.backend2.servers.server2]
    url = "http://<IP_ADDRESS>:4000/"
    weight = 2

  [backends.backend3]
    [backends.backend3.servers.server1]
    url = "http://<IP_ADDRESS>:5030/"
    weight = 1

  [backends.backend4]
    [backends.backend4.servers.server1]
    url = "http://<IP_ADDRESS>:7050/"
    weight = 1
  [backends.web-backend]
    [backends.web-backend.servers.server1]
      url = "http://<IP_ADDRESS>:3080/"
      weight = 1
    [backends.web-backend.servers.server2]
      url = "http://<IP_ADDRESS>:3088/"
      weight = 1

[frontends]
  [frontends.frontend2]
    backend = "backend2"
    passHostHeader = true
    priority = 10
      [frontends.frontend2.routes.test_1]
      rule = "Host:admin-ewr.com"

  [frontends.frontend3]
    backend = "backend3"
    passHostHeader = true
      [frontends.frontend3.routes.path1]
      rule = "PathPrefix:/search"

  [frontends.storage]
    backend = "backend4"
    passHostHeader = true
      [frontends.storage.routes.path1]
      rule = "Path:/files/new;Method: POST"

  [frontends.web]
    backend = "web-backend"
    passHostHeader = true
      [frontends.web.routes.path1]
      rule = "HostRegexp:{subdomain:[a-z]+}.ewr.com"

What did you do?
Trying to get Traefik working with consul catalog backend working. The file backend works correctly. The Consul Catalog node endpoint reports the Service data correctly:
"core-01:web1:80":{
    "ID":"core-01:web1:80",
    "Service":"web",
    "Tags":[
    "traefik.frontends.web.backend=web-backend",
    "traefik.frontends.web.passHostHeader=true",
    "traefik.frontends.web.routes.path1.rule=HostRegexp:{subdomain:[a-z]+}.ewr.com",
    "traefik.backends.web-backend.servers.server1.url=http://<IP_ADDRESS>:46755/",
    "traefik.backends.web-backend.servers.server1.weight=1"
    ],
    "Address":"",
    "Port":46755,
    "EnableTagOverride":false,
    "CreateIndex":883,
    "ModifyIndex":883
}

What did you expect to see?
The path1 rule to be picked
What did you see instead?

Traefik route is default one instead of path1 rule
Not sure what i am doing wrong.
EDIT: Pasting the screenshot of Backend for Web and it seems it is creating the name with the tags:

NVM..........got it working. If anyone else lands here looking for an answer here is what i did.
Below i register three instances of my "web" service with one frontend and 3 backend servers. Consul expects unique IDs for your service instances, the name does not have to be unique.
curl -X PUT -H "Content-Type: application/json" --data '{ "address": "<IP_ADDRESS>", "id" : "web1",   "Name": "web",  "Port": 46755, "Tags": [
        "traefik.frontends.web.backend=web-backend",
        "traefik.frontends.web.passHostHeader=true",
        "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.ewr.com",
        "traefik.backend.loadbalancer=drr",
        "traefik.backends.web-backend.servers.server1.url=http://<IP_ADDRESS>:46755/",
        "traefik.backend.weight=1"
    ]}' http://<IP_ADDRESS>:8500/v1/agent/service/register

curl -X PUT -H "Content-Type: application/json" --data '{ "address": "<IP_ADDRESS>", "id" : "web2",   "Name": "web",  "Port": 46756, "Tags": [
        "traefik.frontends.web.backend=web-backend",
        "traefik.frontends.web.passHostHeader=true",
        "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.ewr.com",
        "traefik.backend.loadbalancer=drr",
        "traefik.backends.web-backend.servers.server2.url=http://<IP_ADDRESS>:46756/",
        "traefik.backend.weight=1"
    ]}' http://<IP_ADDRESS>:8500/v1/agent/service/register

curl -X PUT -H "Content-Type: application/json" --data '{ "address": "<IP_ADDRESS>", "id" : "web3",   "Name": "web",  "Port": 46757, "Tags": [
        "traefik.frontends.web.backend=web-backend",
        "traefik.frontends.web.passHostHeader=true",
        "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.ewr.com",
        "traefik.backend.loadbalancer=drr",
        "traefik.backends.web-backend.servers.server3.url=http://<IP_ADDRESS>:46757/",
        "traefik.backend.weight=1"
    ]}' http://<IP_ADDRESS>:8500/v1/agent/service/register

Now it looks like this on Traefik dashboard, calls are sent dynamically to each of them in a round robin fashion:


Fix GitHub URLs in package.json

There were not pointing to this repo

@sitegui,
Thanks, great catch!
Could you please sign our CLA so we can merge this? https://github.com/sendgrid/nodejs-http-client/blob/master/CONTRIBUTING.md#cla


[libogg] Build error on x64-windows, upstream server failure

Package<EMAIL_ADDRESS>Host Environment

Host: x64-windows
Compiler: MSVC 19.41.34123.0
vcpkg-tool version: 2024-10-18-e392d7347fe72dff56e7857f7571c22301237ae6
vcpkg-scripts version: 6ebf8c123 2024-10-17 (9 days ago)

To Reproduce
vcpkg install
Failure logs
-- Downloading https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.5/ogg-v1.3.5.tar.gz -> xiph-ogg-v1.3.5.tar.gz...
[DEBUG] To include the environment variables in debug output, pass --debug-env
[DEBUG] Trying to load bundleconfig from C:\vcpkg\vcpkg-bundle.json
[DEBUG] Failed to open: C:\vcpkg\vcpkg-bundle.json
[DEBUG] Bundle config: readonly=false, usegitregistry=false, embeddedsha=nullopt, deployment=Git, vsversion=nullopt
[DEBUG] Metrics enabled.
[DEBUG] Feature flag 'binarycaching' unset
[DEBUG] Feature flag 'compilertracking' unset
[DEBUG] Feature flag 'registries' unset
[DEBUG] Feature flag 'versions' unset
[DEBUG] Feature flag 'dependencygraph' unset
warning: Download failed -- retrying after 1000ms
warning: Download failed -- retrying after 2000ms
warning: Download failed -- retrying after 4000ms
error: Missing xiph-ogg-v1.3.5.tar.gz and downloads are blocked by x-block-origin.
error: https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.5/ogg-v1.3.5.tar.gz: WinHttpSendRequest failed with exit code 12002
error: https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.5/ogg-v1.3.5.tar.gz: WinHttpSendRequest failed with exit code 12002
error: https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.5/ogg-v1.3.5.tar.gz: WinHttpSendRequest failed with exit code 12002
error: https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.5/ogg-v1.3.5.tar.gz: WinHttpSendRequest failed with exit code 12002
[DEBUG] D:\a\_work\1\s\src\vcpkg\base\downloads.cpp(1030):
[DEBUG] Time in subprocesses: 0us
[DEBUG] Time in parsing JSON: 5us
[DEBUG] Time in JSON reader: 0us
[DEBUG] Time in filesystem: 856us
[DEBUG] Time in loading ports: 0us
[DEBUG] Exiting after 1.5 min (91281713us)

CMake Error at scripts/cmake/vcpkg_download_distfile.cmake:32 (message):

      Failed to download file with error: 1
      If you are using a proxy, please check your proxy setting. Possible causes are:

      1. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable
         to `https://address:port`. This is not correct, because `https://` prefix
         claims the proxy is an HTTPS proxy, while your proxy (v2ray, shadowsocksr
         , etc..) is an HTTP proxy. Try setting `http://address:port` to both
         HTTP_PROXY and HTTPS_PROXY instead.

      2. If you are using Windows, vcpkg will automatically use your Windows IE Proxy Settings
         set by your proxy software. See https://github.com/microsoft/vcpkg-tool/pull/77
         The value set by your proxy might be wrong, or have same `https://` prefix issue.

      3. Your proxy's remote server is out of service.

      If you've tried directly download the link, and believe this is not a temporary
      download server failure, please submit an issue at https://github.com/Microsoft/vcpkg/issues
      to report this upstream download server failure.

Call Stack (most recent call first):
  scripts/cmake/vcpkg_download_distfile.cmake:270 (z_vcpkg_download_distfile_show_proxy_and_fail)
  scripts/cmake/vcpkg_from_gitlab.cmake:[11](https://github.com/dosbox-staging/dosbox-staging/actions/runs/11534900777/job/32109422091#step:11:12)3 (vcpkg_download_distfile)
  buildtrees/versioning_/versions/libogg/98e27727c32704393494d32615c25b7b16eb3067/portfile.cmake:1 (vcpkg_from_gitlab)
  scripts/ports.cmake:192 (include)

Additional context
vcpkg.json
{
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
  "name": "dosbox-staging",
  "description": "DOSBox Staging is a modern continuation of DOSBox with advanced features and current development practices.",
  "version": "0.83.0-alpha",
  "dependencies": [
    "fluidsynth",
    "gtest",
    "iir1",
    "libmt32emu",
    "libpng",
    "libslirp",
    "opusfile",
    "sdl2",
    "sdl2-net",
    "speexdsp",
    {
      "name": "tracy",
      "platform": "!(windows & arm64)"
    },
    "zlib-ng",
    {
      "name": "pkgconf",
      "host": true
    }
  ],
  "builtin-baseline": "6ebf8c[12](https://github.com/dosbox-staging/dosbox-staging/actions/runs/11534900777/job/32109422091#step:11:13)3bc8077dc9216db6438eeabaa154c473"
}

gitlab.xiph.org -> This site can’t be reached
ERR_ADDRESS_UNREACHABLE
Is it possible for single-point-of-failures to fallback to a list of mirrors?
For example, this same ogg-v1.3.5.tar.gz file is available on their GitHub repo here https://github.com/xiph/ogg/releases

Duplicate #41802.

Thanks for flagging the dupe, @dg0yt. Closing.


Corrupted packages file generated at build

When I run pub run build_runner build --output=build as admin (https://github.com/pulyaevskiy/firebase-functions-interop/issues/56), the corrupted file functions/build/node/packages is generated.
If I run firebase deploy --debug --only functions, I get the following error:
[2019-07-11T18:19:46.508Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 11 Jul 2019 18:19:46 GMT, server=ESF, cache-contro
l=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43,39", accept-ranges=none, transfer-encoding=chunked
[2019-07-11T18:19:46.934Z] Error: EPERM: operation not permitted, stat 'C:\Users\hugoc\IdeaProjects\Flutter\buster\functions\build\node\packages'

Error: Could not read source directory. Remove links and shortcuts and try again.

After deleting packages, I'm able to deploy.
I'm using the exact pubspec.yaml, node/index.dart and build.yaml, as shown in the readme.

I just ran into this as well. Back in the day that file was a junction with an absolute path reference. Now it's a symlink with a relative path reference and it does not work. Not sure what should be done.

This is probably why we're running into this problem. https://github.com/dart-lang/sdk/issues/33966
dart:io's Link.create used to create junctions but now creates symlinks in Windows.
Firebase CLI does not seem to like symlinks. I guess we could add a npm postbuild command that replaces build/node/packages with a junction.
Not sure who is creating the build/node/packages symlink, anyway. It is created after pub run build_runner build --output=build but I'm not sure where exactly is the link creating code.

@hugocbpassos @gazialankus i am new with this package and node, can you show me a example project? i can't setup a readme example :(

@basketball-ico StackOverflow is probably better for this. The readme file is quite sufficient, actually. Ask in SO and we can answer in more detail.

@gazialankus Thanks, i have the same issue here and https://github.com/pulyaevskiy/firebase-functions-interop/issues/56 , which version of dart I need to use to make this work? i really want to test it

@gazialankus Thanks, i have the same issue here and #https://github.com/pulyaevskiy/firebase-functions-interop/issues/56 , which version of dart I need to use to make this work? i really want to test it

I'm using Dart 2.3.2, I didn't try 2.4.0.

@gazialankus  I tested with Dart 2.1 - 2.2 - 2.3.2 - 2.41 - 2.5
And ever get this errors

Wow you really tried all versions, huh. I'm sorry you're having this issue. I use IntelliJ, not VS Code. Did you really try the steps here one by one? https://github.com/pulyaevskiy/firebase-functions-interop/blob/master/README.md Could you try on the command line rather than VS Code?

@gazialankus yes, check https://github.com/basketball-ico/functions_test-
Also I test on the command line and is the same of run in vs code
and pub run build_runner build --output=build not have problems in console, but the files in package folder have errors.
Also if I run pub run build_runner build --output=build  second time I got this like https://github.com/pulyaevskiy/firebase-functions-interop/issues/56 :
FileSystemException: Cannot create link, path = 'build\node\packages' (OS Error: A required privilege is not held by the client.
, errno = 1314)

I solve with administrator command line but why I need to run this in an Administrator Command line?
and when try firebase deploy --only functions  i got
Error: Could not read source directory. Remove links and shortcuts and try again.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! functions@ deploy: `firebase deploy --only functions`
npm ERR! Exit status 1

dart 2.3.2
Also if I remove the build/node/packages.symlink I can deploy but  it take some time to deploying  it is only a simple function and  have 37.9 MB like https://github.com/pulyaevskiy/firebase-functions-interop/issues/57
i  deploying functions
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (37.9 MB) for uploading
+  functions: functions folder uploaded successfully
i  functions: updating Node.js 8 function helloWorld(us-central1)...
+  functions[helloWorld(us-central1)]: Successful update operation.

+  Deploy complete!

Thanks, please help me 🤗

This is what at also have. I remove the packages symlink and I also get a huge upload like 40mb.
I'm able to use IntelliJ but I don't know about VS Code. I think the only real issue you have is about running it locally. You run it using npm. After adding this https://github.com/pulyaevskiy/firebase-functions-interop/blob/master/README.md#7-scripts-optional you can say npm serve or npm run serve (forgot which) and you can run locally.
If you fix your IDE, you will be same as what I have here...

@gazialankus I solve the error of VScode by excluding the build folder for analysis like https://github.com/pulyaevskiy/firebase-functions-interop/blob/master/analysis_options.yaml,
This is good?
But i can't deploy
Error: Could not read source directory. Remove links and shortcuts and try again.

what is the solution you said

Firebase CLI does not seem to like symlinks. I guess we could add a npm postbuild command that replaces build/node/packages with a junction.
Thanks


fix(schema): fix default schema/json-mapper groups behavior

Information

Type
Breaking change

Fix
Yes

This PR fix the default json-mapper serialization over all endpoints (returned value).
Now by default, Groups rules are applied by default on all endpoints without declaring @Returns().Groups("somethings").
/!\ This change introduce breaking change. We have to add optin to enable this mode and prepare a migration note for the next major version.
Todos

[x] Tests
[x] Coverage
[x] Example
[x] Documentation

:tada: This PR is included in version 7.69.0 :tada:
The release is available on:

v7.69.0
GitHub release

Your semantic-release bot :package::rocket:


Issues with Demo URLs

A number of the demonstration URLs (demo DOIs, Acme links, etc.) don’t resolve to valid pages (but that may be OK). (Richard Kroon = RK)

Bruce says many have been removed. Can't replicate now.


Add VanGogh Validator

My current testnets:
Namada (4 times I applied for a PR and each time they didn’t accept it, I’m terribly upset about this))) Taiko
Shardeum
Lamina
Obol
Lava
Massa
Ojo
Nibiru
Fleek
Nym
Took part:
Aptos
Sei
Aleo
Kujira
Nolus
Sui
Minima
Paloma
StarkNet
Participated in trusted setup ceremony:
Manta
Ethereum
I actively study the backend, most of the time I devoted to Python.  I will be extremely happy to stand at the origins of Namada)
Description
If this is an UPDATE for a previous genesis validator
Checks are made against your net_address. If this has changed since the previous testnet, make sure you provide links of previous prs merged from your previous git username.
Thanks in advance!
Checklist before merging to draft

[x] Only one toml is added in this PR
[x] The file being added is indeed a .toml file
[x] The toml being added is to the correct folder, and only to the correct folder
[x] The eth_hot_key and eth_cold_key are present

Please link your old PRs to the description of this one. This will mean you are more likely to get merged as it follows the instructions

You are the best, thank you)) considering that the PR is closed, I created a new one just in case) And of course edited the current one)


[cloud_firestore] Support for atomic FieldValue.increment

Description
This PR adds support for incrementing using FieldValue.
Example usage:
      final DocumentReference ref = firestore.collection('mycollection').document();
      await ref.setData(<String, dynamic>{
        'value': 1,
        'created_at': FieldValue.serverTimestamp(),
      });
      await ref.updateData(<String, dynamic>{
        'value': FieldValue.increment(1),
      });
      DocumentSnapshot snapshot = await ref.get();
      expect(snapshot.data['value'], 2);

I thought about naming the API incrementDouble/incrementInteger but leaning towards overloading increment. I'd love to get feedback on this.
Related Issues
Fixes flutter/flutter#31034
Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[X] No, this is not a breaking change.

Why is version 0.10.0 not avaible on Pub? https://pub.dartlang.org/packages/cloud_firestore


Problem loading model state

Hi,
I'm trying using the .load_state() function, but the result is:
TypeError                                 Traceback (most recent call last)
 in
1 model_t = dm.MatchingModel(attr_summarizer="hybrid")
----> 2 model_t.load_state("model_1.pth")
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/deepmatcher/models/core.py in load_state(self, path, map_location)
479             MatchingDataset.finalize_metadata(train_info)
480
--> 481             self.initialize(train_info, self.state_meta.init_batch)
482
483         self.load_state_dict(state['model'])
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/deepmatcher/models/core.py in initialize(self, train_dataset, init_batch)
353                 sort_in_buckets=False)
354             init_batch = next(run_iter.iter())
--> 355         self.forward(init_batch)
356
357         # Keep this init_batch for future initializations.
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/deepmatcher/models/core.py in forward(self, input)
417         for name in self.meta.all_text_fields:
418             attr_input = getattr(input, name)
--> 419             embeddings[name] = self.embedname
420
421         attr_comparisons = []
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
887             result = self._slow_forward(*input, **kwargs)
888         else:
--> 889             result = self.forward(*input, **kwargs)
890         for hook in itertools.chain(
891                 _global_forward_hooks.values(),
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/deepmatcher/models/modules.py in forward(self, *args)
185             module_args.append(arg.data if isinstance(arg, AttrTensor) else arg)
186
--> 187         results = self.module(*module_args)
188
189         if not isinstance(args[0], AttrTensor):
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
887             result = self._slow_forward(*input, **kwargs)
888         else:
--> 889             result = self.forward(*input, **kwargs)
890         for hook in itertools.chain(
891                 _global_forward_hooks.values(),
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/torch/nn/modules/sparse.py in forward(self, input)
143
144     def forward(self, input: Tensor) -> Tensor:
--> 145         return F.embedding(
146             input, self.weight, self.padding_idx, self.max_norm,
147             self.norm_type, self.scale_grad_by_freq, self.sparse)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-33cf32f5-60db-4ff5-acdf-2c87c014459e/lib/python3.8/site-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
1911         # remove once script supports set_grad_enabled
1912         no_grad_embedding_renorm(weight, input, max_norm, norm_type)
-> 1913     return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
1914
1915
TypeError: embedding(): argument 'indices' (position 2) must be Tensor, not AttrTensor

Hello @amilton-reis
I am facing the same problem.
It happened to me when I tried to load a deepmatcher model in Databricks.
I could not find the solution yet.
Anyone can help?

Dear @sidharthms,
Would you have any advice?
Thanks in advance

Could you share a colab notebook replicating the issue? Knowing the
sequence of events that lead to this will make it easier to debug.
On Mon, May 2, 2022, 12:29 PM JoaoGF21 @.***> wrote:

Hello @amilton-reis https://github.com/amilton-reis
I am facing the same problem.
It happened to me when I tried to load a deepmatcher model in Databricks.
I could not find the solution yet.
Anyone can help?
—
Reply to this email directly, view it on GitHub
https://github.com/anhaidgroup/deepmatcher/issues/97#issuecomment-1115278385,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABWE5ZJH5DQWMVTU6ZHUCPLVIAUJBANCNFSM5UWJNRNQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Weird scrollbar on first menu opening

Found while sanity testing the 1.63 stable build (Windows 64).

Reload or open VS Code.
Do nothing for ~5 seconds
Click on a menu to open it.

Repros 100% of the time for me and with extensions disabled.

Can also confirm on my setup Windows_NT arm64 10.0.22000, issue is not present in 1.62.3 stable and bisect shows issue was first introduced in Version: 1.63.0-insider, Commit: 4e303fcc52269ab578affa6cb1eb455eacab445f

duplicate https://github.com/microsoft/vscode/issues/138110
@deepak1556 thanks for bisecting as I could not repro


[DO NOT MERGE] check gazebo_mavlink_interface abort()

This is to check if abort() is called anywhere in https://github.com/PX4/sitl_gazebo/blob/master/src/gazebo_mavlink_interface.cpp.

It doesn't look like this was the problem, closing.


Create kishore1

PR Type
enhancement, other

Description

Added environment variable configurations for Bitbucket and OpenAI.
Implemented repository cloning using GitPython.
Fetched PR details and diff from Bitbucket API.
Integrated OpenAI API to analyze and summarize PR changes.
Printed and saved the analysis report to a file.

Changes walkthrough 📝
Relevant filesEnhancement

kishore1Implement Bitbucket PR analysis using OpenAI API

kishore1
Added environment variable configurations for Bitbucket and OpenAI.  Implemented repository cloning using GitPython.  Fetched PR details and diff from Bitbucket API.  Integrated OpenAI API to analyze and summarize PR changes.  Printed and saved the analysis report.

+57/-0

💡 PR-Agent usage:
Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

/improve

/ask


Add background layer switcher

Adding a separate tool / module to switch background layers. Detailed layout has to be done.
Background layers have to be marked in app-config, e.g. bglayer: true
Inspiration by existing solutions:

https://www.geoportal.de/map.html?map=tk_01-stromnetz
https://geoportal.brandenburg.de/de/cms/portal/start

I can start working on this feature. Before i get going:
Is any of the existing solutions mentioned above based on Wegue? Or is there otherwise any preexisiting code you would like me to incorporate?
Design-wise I would go into the direction of the examples you provided: A custom module will place a toggle button overlay on the map and then open a sort of sheet to pick one of the background layers.

I can start working on this feature.

Cool, very much appreciated.

Is any of the existing solutions mentioned above based on Wegue? Or is there otherwise any preexisiting code you would like me to incorporate?

As far as I know there is no Wegue based solution or at least I am not aware of it.

Design-wise I would go into the direction of the examples you provided: A custom module will place a toggle button overlay on the map and then open a sort of sheet to pick one of the background layers.

Yes, sound good :+1:

I noticed, that the docs already define a flag 'isBaseLayer' for this purpose - which currently has no effect. I will use this as the marker for background layers.

I`m almost there with the basic functionality. Now I'm thinking about the layer preview images, which should appear on the selection control:

The simplest solution apparently is to provide image resources for each layer, although not very maintainable.
We could include the ol-ext package, as it provides layer previews - example here
Another option would be to just incorporate the code from https://github.com/Viglino/ol-ext/blob/master/src/layer/GetPreview.js and tweak it (maybe go without modifications to the OL prototypes).

Personally I would prefer to create the previews implicitly without having to provide images but anything goes. An opinion on this is strongly appreciated!

I'd also prefer to have an automatically generated preview images at least for layer types where this is easily doable TileWMS, ImageWMS and Tile, which should cover most use-cases for background layers. Nevertheless I'd like to have a config option to set an explicit preview image URL, which "beats" the automatic one.
Incorporate some code snippets from https://github.com/Viglino/ol-ext/blob/master/src/layer/GetPreview.js, if license allows it, would be my preferred way instead of including the whole ol-ext library.

Ok, great. I also came to the conclusion that this is the way to go and I have been already working in this direction.
Here is a screenshot of the control with autogenerated previews based on a customized util module derived from GetPreview.js.

I have some meetings going on this week but I hope I can finalize it by the middle of next week.

Meanwhile the functionality the works well on desktop. Big thanks to @fschmenger
Currently It does not work well on mobile phones yet. See screenshot:

I have to admit I didn't test this on a real mobile device, just in the chrome emulator. Are the overflow slide buttons not clickable on a real mobile device?

I also tested it in the emulator of the browser. It basically works. My impressions:

I find sliding in the basemap-menu a bit confusing
after opening the menu, there appeared scrollbars at the right and the bottom

we can just remember this for the future. I am already very happy about the desktop functionality

OK, thanks for the clarification. Wrapping the layer selection by a v-slide-group was actually by design and will appear on desktop too (provided you have a lot of layers or small screen width). Any better ideas on how to resolve an overflow are welcome.
Having a vertical slider appear is definitely a bug. I will look into this.