text:
Crash Windows 10 x64 Anniversary Update

Hello.i got  windows crash and restart on Windows 10 x64 Anniversary Update
Can you confirm this.and try to fix

Windows 10 x64 Anniversary Update. I don't get crash of the system. The emulator works correctly.

If we disable virtual device support on bios.it works.if we enable it not work.

"Disable virtual device support on bios" - Do you mean disabling Intel VT-x?

Could you please clarify:

What is Virtual Device support?
The issue is actually:
2.a   You installed leapdroid to Windows 10 anniversary update but found it not working.
2.b   You installed leapdroid to Windows 10 (old version) and then upgraded to Windows 10 anniversary update, but found it not working? Did it work before upgrading Windows 10?
2.c   Like 2.b. Even if you uninstall and reinstall leapdroid to upgraded Windows 10,  you still cannot get it work?
2.d   or anything else, could you please describe a bit more? Such as upgrading from Windows 7 to Windows 10.....
Could it be possible to set up a remote access to your computer?

I also have this problem. Had LeapDroid installed and updated to Anniversary Update (from Windows 10 1511), starting LeapDroid and it crashed, IRQL_NOT_LESS_OR_EQUAL.
Latest BIOS, and drivers. Did uninstall LeapDroid, so I could install the latest version. But when I started the installation, Windows crashed with the same error,  IRQL_NOT_LESS_OR_EQUAL

I was unable to properly install Leapdroid. And I'm thinking that it might be related to the driver signing changes in the Windows 10 Anniversary Update (version 1607). I've explained my issue in detail in #30.

@mbsSe Hi, we really cannot reproduce the issue here. We do tried with several boxes at hand and they are upgraded to Windows 10 1607 without causing problem.
Is it possible to send us your crash dump file? Depending on your Windows crash dump settings, it might be placed at C:\Windows\memory.dmp or C:\Windows\Minidump\xxxxx.dmp. If there are multiple files, you basically can determine the target file by looking at when the file is created.

@LeapdroidDev99 Sorry, I cleaned out my crash dumps a week ago. And when I try to install LeapDroid today (hope to get a new crash dump), the installation starts, but just die's.  nothing happens. Can I find a installation-logfile somewhere?

Hi @LeapdroidDev99, now I have crash dump files. Where do I send/upload them (1.32GB + 416kB)?

Thanks indeed! This is pretty big. Could you help to upload to this location? I have created a shared drive on google as below:
https://drive.google.com/drive/folders/0B3QfdHIyAqyzc0huYUpNRkpoeVk?usp=sharing

@LeapdroidDev99 Now the files are uploaded. Please, remove them from drive.

Thanks for your help! We will take a look now.

@mbsSe After examining the crash dump, the only useful information is memory corruption happened in Windows kernel space. But the component that triggered this bugcheck is a module shipped by Microsoft. It is hard to to debug, we probably will need to find a way to reproduce the issue. I was suspect some kind of messing up as a result of Windows upgrade. Sometime app with a kernel driver does not work cross a major OS release upgrade.

Ok, thanks for letting me now!
I did go around the problem for myself yesterday and installed LeapDroid in Windows 10 AU running on Hyper-V, so I am about to agree it must be a result of the upgrade Windows 10 AU on my physical computer.

Hey there,
I just had exactly the same problem after installing the Win 10 Anniversary Update on my Surface Pro 4 (m3).
So after the update the old installation of Leapdroid gave me BSODs. Iirc, it only said it encountered an error and has to restart (no stop code) while building the crash dump.
After some fiddling around with Hyper-V preferences to no avail, I downloaded the lastest Leapdroid and tried to install that. But after telling the setup which camera stream to record (that is a part of your installation routine now, right?), I get a BSOD with IRQL_NOT_LESS_OR_EQUAL.
The installation seems to be half way done because I have the installation folder pretty populated and something must be running already, since I can't delete the folder again without using Windows safe mode.
I will try the BIOS/UEFI suggetions posted here as well and will report back.
Pls let me know if I can provide more help to find the problem.

Hi, thanks for the feedback and the offer to help. We also want to fix this issue and we even bought a SF Pro 4 (but not the core m model), but failed to reproduce the issue (we also got the upgrade last weekend).
It would be great that we can take a remote access. Is it possible to do a team viewer?
I can give a short explanation: the camera stuffs is newly added. So this is something we do not expect. We found that this would appear on boxes with both front and rear cameras. But it happened not to appear on our test box. We will fix it later.

Hi, I had the same problem and this was really annoying. But I have a solution: in windows search box just type "optionalfeatures" and uncheck the Hyper-V features. after that it works.

Hey, wow, thank you, pascalvanderheiden! That really did the job. I assume the update rolled back any Hyper-V related preferences, so we have to deactivate everything again. It took some restarts and then Hyper-V was completely gone again and I had no problem installing and running Leapdroid again.
@LeapdroidDev99: Sorry for not coming back to you immediately, I didn't have much time the last days. But since pascalvanderheiden helped to solve my problem, you won't probably need more from me, right? I actually didn't think of looking for Hyper-V in Windows features again, since I didn't know that it would silently reinstall and reactivate everything. But I should have known better when it comes to Microsoft's ridiculous update policies, I guess.

Glad to help others. I really love leapdriod. Keep up the good work.

We are so happy that you guys figured out a way to solve the issue. Great! And the information is helpful to us too. We will try hyper-V case on our own box. In theory, we should be able to run with Hyper-V (but with greatly decreased performance). We hope at least we can still make this case work (though not optimized). At least, we will put a new trouble shooting on our webpage.

Hi, Guys,
We've tried this. It seems from Windows 10 1607, Hyper-V and VBox together will produce a BSOD. I found a similar thread on vbox forom. https://forums.virtualbox.org/viewtopic.php?f=6&t=79028#p368859
Probably we will need either MS or Oracle to fix this issue.

authors: LeapdroidDev99 Mendim MrMyth kinahr leapdroid mbsSe pascalvanderheiden sicut

repo: leapdroid-team/leapdroid


text:
Feature expose position joints

[ ] In the Rigged_Hands_AutoRig_Example.unity scene, run the autorig script on the either pair of hands.  In the RiggedHand component for each hand, toggle both SetLeapEditorPose and DeformPositionsInFingers.

OK done, thanks for the catch.

source: gharchive/pull-request

repo: leapmotion/UnityModules

license_type: permissive

license_source: github-api


text:
Update ios template

Updates the iOS lab templates. Adds the following changes:

Updates the syntax for including CocoaPods with liftoff
Updates the test_runner.sh file to remove the learn-xcpretty dependency.
Updates the test suite to include Contributing and License files.

thanks @ipc103 sorry for the delay!

repo: learn-co/learn-generate

license: mit

license_source: bigquery


text:
Added Jira contribution to Task_Management_Software.md

Added the following sections:

Getting started with Jira
Core features of Jira
Best practices for task management
Useful resources

Hi Celina, thank you so much for taking the time to review the Jira documentation!
I appreciate your suggestion about adding links to documentation or examples in the specified sections. I completely agree, and I'll find and incorporate relevant links to provide users with examples for a more hands-on experience.
Additionally, your comment about the short summaries in sections 3a and 3b enhancing the flow is insightful. I'll certainly add this to improve the flow and structure throughout the entry.
Thanks again for your feedback and positive remarks! I'll add these improvements promptly.

Revised Task_Management_Software.md
Added links to relevant documentation to specified sections
Added best practices blurbs at the end of sections

license: MIT


text:
Add how to deploy a frontend application with Vercel CLI

Includes steps from installing the CLI all the way to deploying the application
Also includes an example of adding env's during deployment

I will be working on this too

Clear instructions for deploying projects using the Vercel CLI, covering essential steps such as installation and login.

authors: Satoshiest iamyanbo


text:
Resolve conflict with OKX wallet (hydration error with  component in NextJS)

checked existed issues
Yes, I have checked existed issues.
what happend
With Leather wallet installed, nextjs app throw a hydration error if content was set under a  component.
If I uninstall leather or disabled it, the error disappears.

demo repo
https://github.com/xie-yue/my-nextjs-app
It's simply a nextjs created by cli. I just add a  component under

I found it just happened when I installed OKX wallet and Leather wallet at same time.
If I disabled one of them, the error disappears.

Thanks for the report! This seems at first glance related to server-side rendering. OKX may be doing something unexpected when another extension like Leather is installed. Can you disable server-side rendering and see what happens when trying to use the app when both are installed?

@markmhendrickson
I moved the  to a client component, and the error has gone.
SSR should be the point.
here is the commit.
https://github.com/xie-yue/my-nextjs-app/commit/462acad61a61b5949e3a12f1a112281d4673448b

source: gharchive/issue

authors: markmhendrickson xie-yue

repo: leather-io/extension


text:
feat: replaced dlc-wasm-wallet with @dlc-link/dlc-tools

Try out this version of Leather — download extension builds.

We've replaced the dlc-wasm-wallet package with the @dlc-link/dlc-tools package. While it maintains the same core functionality, we've added some new features to the wasm code. Additionally, we've moved the package from a temporary user account to our official company account.

@Polybius93 please rebase and see if this fixes CI

repo: leather-wallet/extension


text:
Potential STATUS_HEAP_CORRUPTION from dsp.get_info() implementation

Hi!
In my crate I loop through all dsp's (including plugin DSPs) in all channel groups and call get_info() on each. It looks like sometimes this causes a STATUS_HEAP_CORRUPTION when my game starts. Sadly I'm not able to reproduce the issue consistently.
However, looking into get_info(), it looks like there might be a safety issue. name, which should be a 32 byte buffer, is initialized like this:
let name = CString::from_vec_unchecked(b"".to_vec()).into_raw();
and after FMOD_DSP_GetInfo cast into a String like this:
CString::from_raw(name)
                        .into_string()
                        .map_err(Error::String)?

The comments on CString::from_raw state the following: "It should be noted that the length isn't just "recomputed," but that the recomputed length must match the original length from the CString::into_raw call. This means the CString::into_raw/from_raw methods should not be used when passing the string to C functions that can modify the string's length."
So I tried initializing it with the same length, 32:
let name = CString::from_vec_unchecked(b"foodfoodfoodfoodfoodfoodfoodfood".to_vec()).into_raw();
And since then I haven't seen the issue (but then again, I wasn't able to reproduce consistently so I could be on a lucky streak so to say).
What do you think? Could this be an issue or would you like to have something reproducible?

Its worth noting that this seems to happen on Windows. Let me know if you need something reproducable.

Hi! Thanks for investigation. I'll try to fix this issue.

So, there are 20 incorrect function implementations that have out argument with buffer-based string type:
OUT FMOD_ChannelGroup_GetName name
OUT FMOD_DSP_GetParameterFloat valuestr
OUT FMOD_DSP_GetParameterInt valuestr
OUT FMOD_DSP_GetParameterBool valuestr
OUT FMOD_DSP_GetParameterData valuestr
OUT FMOD_DSP_GetInfo name
OUT FMOD_Sound_GetName name
OUT FMOD_Sound_GetSyncPointInfo name
OUT FMOD_SoundGroup_GetName name
OUT FMOD_Studio_Bank_GetStringInfo path
OUT FMOD_Studio_CommandReplay_GetCommandString buffer
OUT FMOD_Studio_EventDescription_GetParameterLabelByIndex label
OUT FMOD_Studio_EventDescription_GetParameterLabelByName label
OUT FMOD_Studio_EventDescription_GetParameterLabelByID label
OUT FMOD_Studio_System_GetParameterLabelByName label
OUT FMOD_Studio_System_GetParameterLabelByID label
OUT FMOD_System_GetDriverInfo name
OUT FMOD_System_GetPluginInfo name
OUT FMOD_System_GetRecordDriverInfo name
OUT FMOD_System_GetNetworkProxy proxy

The problem is specification of buffer length varies in each function:

an explicit length argument
almost explicit part of the structure definition (like Dsp name)
implicit text notes in the documentation 😢

The solution is to write correct string retrieving manually for each function via [0;len].as_mut_ptr() + CStr::from_raw.
But the number of manual overrites is too big for the main concept of libfmod as "automatically generated library" =) Need more time to think how to do it better.
Workaround for now if it blocks your work:
pub fn get_dsp_info(dsp: &Dsp) -> Result<(String, u32, i32, i32, i32), Error> {
    unsafe {
        let mut name = [0i8; 32];
        let mut version = u32::default();
        let mut channels = i32::default();
        let mut configwidth = i32::default();
        let mut configheight = i32::default();
        match ffi::FMOD_DSP_GetInfo(
            dsp.as_mut_ptr(),
            name.as_mut_ptr(),
            &mut version,
            &mut channels,
            &mut configwidth,
            &mut configheight,
        ) {
            ffi::FMOD_OK => Ok((
                CStr::from_ptr(name.as_ptr()).to_string_lossy().to_string(),
                version,
                channels,
                configwidth,
                configheight,
            )),
            error => Err(err_fmod!("FMOD_DSP_GetInfo", error)),
        }
    }
}

Awesome, thanks again for the quick resolution! Things are looking solid now

authors: BrianWiz GitGhillie lebedec

repo: lebedec/libfmod


text:
Hi, I like your library ❤ , but I can’t get rid of those "jumps" when the application is initialized.

Mac OS 10.14

react-native-swiper v1.5.14
react-native v0.57.8

Expected behaviour
There should be no "jumps" when rendering.
Actual behaviour
I can’t get rid of those "jumps" when the application is initialized
Create Simple component with 3 children.
<Swiper activeDotColor={colors.green} loop={false} removeClippedSubviews={false}>
     <Com1 style={style} />
     <Com2  style={style} />
     <Com3  style={style} />
</Swiper>

style = {
    alignItems    : 'center',
    flex          : 1,
    justifyContent: 'center',
}

I hope this help you. (here video)
https://fex.net/340252544258

The same issue...

also seeing the same issue, anyone have a solution?

also seeing the same issue, anyone have a solution?
I don’t know how to fix it, but the setTimeout() helped me a little :)

authors: DanForstinger Senocico TaylerGur Valentinishe

repo: leecade/react-native-swiper


text:
[PR] 파일 정리 및 모듈화

파일정리 및 모듈화
작성자: 정우찬
날짜: 24/06/02~24/06/04
PR 내용 :
src폴더 (소스 모음)
check_word_validation 폴더(모더레이션 완성 후 머지예정)
generate_explanation (ai답변생성 모듈)

init.py (프롬프트)
find_similar_word.py (유사도검색)

routes (라우터모음)

init.py
chooseMeaning_routes.py
feedback_routes.py
main_routes.py

word_list (prefix, bad word , good word .. 모아둔 모듈)

init.py
get_korean_meaning.py (단어 크롤링)

test

모더레이션 테스트코드
...

static

IMG_8946.PNG (만화)
...
app.py : 실행파일 (이전이름 : index.py)

특이사항

수정사항이 많아서 잘 작동될지 걱정되네요. 제 컴퓨터는 잘 작동합니다.
꼭 테스트 해보신 후 질문사항이나 이상한 부분 있으면 코멘트 남겨주세요.

다음주 월요일 10일 데모때까지 수시로 테스트 해서 이상한 부분 있으면 DB에서 수정하겠습니다


text:
Update scalafmt-core to 3.7.16

About this PR
📦 Updates org.scalameta:scalafmt-core from 3.7.4 to 3.7.16
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scalameta", artifactId = "scalafmt-core" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #84.

repo: lefou/mill-vaadin


text:
Suppress max/min macros in windows.h

Using MS Visual Studio, when you #include <windows.h>, some preprocessor macros are defined by default for min() and max(). As a result, windows.h interferes with the C++ STL, for example, std::numeric_limits::min() and std::max() in the algorithm header.
See minwindef.h for the offending code. This header is included by windef.h, which is included by windows.h. Thankfully, these definitions of min and max are surrounded by an #ifndef NOMINMAX, so we have a ready solution to the problem.
Alternatives: You could just not ever use the Visual Studio compiler; the windows.h file that ships with my MSys2 mingw-gcc does not have this problem. You could use some preprocessor #defines and/or #undefs in your otherwise pristine ISO-compliant C++ code. I prefer to use good cmake defaults that prevent this kind of thing from ever showing up. You shouldn't ever have to think about weird stuff like this.
Potential for improvement: I think that it might be worth moving this kind of code to a separate file in the cmake folder, perhaps called cmake/Definitions.cmake, but I'm not sure that's necessary.
Background: I just ran into this conflict between windows.h and std::numeric_limits in another project. When I googled the two terms together, I was so mad that so many other people complaining about this problem that I had to do something. Please, let's have sane defaults that make it easier to use the C++ STL, and not clobber the std namespace with legacy preprocessor macros!

I thought I should add some clarification as to why I think this PR belongs in the project, and what exactly this intends to fix.
Consider the following code:
#include <limits>
#include <windows.h>

constexpr auto get_amt() { return std::numeric_limits<int>::max(); }

When I compile this file with mingw-gcc or with clang on windows, without linking, compilation is successful. If I compile it with cl.exe (the MS Visual Studio compiler), compilation fails and I get this error:
limits.cpp(4): warning C4003: not enough arguments for function-like macro invocation 'max'
limits.cpp(4): error C2589: '(': illegal token on right side of '::'
limits.cpp(4): error C2062: type 'unknown-type' unexpected
limits.cpp(4): error C2059: syntax error: ')'

If I remove the #include <windows.h> line, cl.exe compiles the file correctly. This is because windows.h defines min and max as macros, and the preprocessor has no choice but to substitute the word max for that macro before evaluating my code.
This is not due to a bug in cl.exe or in windows.h. This is due to a design choice made decades ago by Microsoft, before std::max existed, and Microsoft cannot reverse that choice without breaking people's code.
The cleanest fix to this problem, other than abandoning MSVC (not an option for many of us), is to add the definition NOMINMAX to your project. This definition prevents the min and max macros from being defined. My solution puts that definition in a CMakeLists.txt file, upstream of any code where it would be needed. It's so far out of the way that, unless you go looking for it, you'll never even know this was a problem: you can just get to work, using std::max and std::numeric_limits::max without any problem.
Maybe this fix doesn't belong in this project. Maybe the text NOMINMAX has some meaning in some other library I don't know about, and by including this definition I am breaking someone else's project, though I doubt it. If so, I will happily close this PR unmerged.
To my understanding, the purpose of this project is to make it easier to write clean C++ that follows best-practices as much as possible. Once in a while, some of us have to get into the weeds with some platform-specific Windows code; when that happens, the NOMINMAX definition will be necessary in order to use some features of the STL. If you're not familiar with all the pitfalls involved with windows.h, you won't know what's happening when you see the error message listed above. This PR will prevent people from dealing with that headache, and make it more natural to write good C++.

I thought I should add some clarification as to why I think this PR belongs in the project, and what exactly this intends to fix.
Consider the following code:
#include <limits>
#include <windows.h>

constexpr auto get_amt() { return std::numeric_limits<int>::max(); }

When I compile this file with mingw-gcc or with clang on windows, without linking, compilation is successful. If I compile it with cl.exe (the MS Visual Studio compiler), compilation fails and I get this error:
limits.cpp(4): warning C4003: not enough arguments for function-like macro invocation 'max'
limits.cpp(4): error C2589: '(': illegal token on right side of '::'
limits.cpp(4): error C2062: type 'unknown-type' unexpected
limits.cpp(4): error C2059: syntax error: ')'

If I remove the #include <windows.h> line, cl.exe compiles the file correctly. This is because windows.h defines min and max as macros, and the preprocessor has no choice but to substitute the word max for that macro before evaluating my code.
This is not due to a bug in cl.exe or in windows.h. This is due to a design choice made decades ago by Microsoft, before std::max existed, and Microsoft cannot reverse that choice without breaking people's code.
The cleanest fix to this problem, other than abandoning MSVC (not an option for many of us), is to add the definition NOMINMAX to your project. This definition prevents the min and max macros from being defined. My solution puts that definition in a CMakeLists.txt file, upstream of any code where it would be needed. It's so far out of the way that, unless you go looking for it, you'll never even know this was a problem: you can just get to work, using std::max and std::numeric_limits::max without any problem.
Maybe this fix doesn't belong in this project. Maybe the text NOMINMAX has some meaning in some other library I don't know about, and by including this definition I am breaking someone else's project, though I doubt it. If so, I will happily close this PR unmerged.
To my understanding, the purpose of this project is to make it easier to write clean C++ that follows best-practices as much as possible. Once in a while, some of us have to get into the weeds with some platform-specific Windows code; when that happens, the NOMINMAX definition will be necessary in order to use some features of the STL. If you're not familiar with all the pitfalls involved with windows.h, you won't know what's happening when you see the error message listed above. This PR will prevent people from dealing with that headache, and make it more natural to write good C++.

license: unlicense


authors: KentLavi lelinhtinh


text:
Convert background of PWA images to transparent.

following #48
Mooncake image  was used as PWA logo  but that image has grayish background which doesn't look good.
Your mission should you choose to accept it
Take this Mooncake image or another similar from web

Generate icons  here https://www.pwabuilder.com/imageGenerator
And update the existing logo under static/img/pwa
Make sure rhe background is transparent.
Pretty straightforward  :)

@lelouchB All images need to be replaced? Including Splash screen?

@lelouchB All images need to be replaced? Including Splash screen?

When you Generate logo from the website,  just replace everything in pwa folder.
Remember to rename the image before generating images.
After updating test the build on your local machine.
Are you interested in this issue?

I'm interested in this issue. Want me to work on it? Or @mayank, are you on it?

I'm interested in this issue. Want me to work on it? Or @mayank, are you on it?

Hey  @jackie-kinsler
I am assigning this issue to you.
Let me know if you have any questions.
Like I said it should be pretty straightforward.

authors: jackie-kinsler lelouchB mayank

repo: lelouchB/final-space-api


text:
feat: auto reconnect in case broker fail

I hope to you can implement this feature because when the broker dies, we need to restart the deno to get it to reconnect, which is unacceptable for event handling.

Thanks for reporting. You should not have to restart deno to reconnect, but rather create a new connection and run through your setup flow.
As mentioned in a similar feature request here: https://github.com/amqp-node/amqplib/issues/25, reconnecting a client to the broker involves more things than just setting up the AMQP Connection.
Here is the consume_message.ts example rewritten to handle connection errors:
import { connect } from "../mod.ts";

const queueName = Deno.args[0];
if (!queueName) {
  console.log(`No queue name specified`);
  Deno.exit(1);
}

while (true) {
  const connection = await connect({ hostname: "127.0.0.1" });

  try {
    const channel = await connection.openChannel();

    await channel.declareQueue({ queue: queueName });
    await channel.consume(
      { queue: queueName },
      async (args, props, data) => {
        console.log(JSON.stringify(args));
        console.log(JSON.stringify(props));
        console.log(new TextDecoder().decode(data));
        await channel.ack({ deliveryTag: args.deliveryTag });
      },
    );

    await connection.closed();
  } catch (error) {
    console.error(error);
    await new Promise((resolve) => setTimeout(resolve, 1000));
  } finally {
    await connection.close();
  }
}

Thanks for reporting. You should not have to restart deno to reconnect, but rather create a new connection and run through your setup flow.
As mentioned in a similar feature request here: amqp-node/amqplib#25, reconnecting a client to the broker involves more things than just setting up the AMQP Connection.
Here is the consume_message.ts example rewritten to handle connection errors:
import { connect } from "../mod.ts";

const queueName = Deno.args[0];
if (!queueName) {
  console.log(`No queue name specified`);
  Deno.exit(1);
}

while (true) {
  const connection = await connect({ hostname: "127.0.0.1" });

  try {
    const channel = await connection.openChannel();

    await channel.declareQueue({ queue: queueName });
    await channel.consume(
      { queue: queueName },
      async (args, props, data) => {
        console.log(JSON.stringify(args));
        console.log(JSON.stringify(props));
        console.log(new TextDecoder().decode(data));
        await channel.ack({ deliveryTag: args.deliveryTag });
      },
    );

    await connection.closed();
  } catch (error) {
    console.error(error);
    await new Promise((resolve) => setTimeout(resolve, 1000));
  } finally {
    await connection.close();
  }
}

This code does not seem to handle the error-case where the queue does not exist.
PS C:\dev\amqp-test> deno run --allow-net test.ts
error: Uncaught (in promise) Error: EOF
      throw new FrameError("EOF");
            ^
    at AmqpFrameReader.#readBytes (https://deno.land/x/amqp@v0.24.0/src/amqp_frame_reader.ts:18:13)
    at eventLoopTick (ext:core/01_core.js:175:7)
    at async AmqpFrameReader.#readFrame (https://deno.land/x/amqp@v0.24.0/src/amqp_frame_reader.ts:25:20)
    at async AmqpSocket.read (https://deno.land/x/amqp@v0.24.0/src/amqp_socket.ts:159:14)
    at async listen (https://deno.land/x/amqp@v0.24.0/src/amqp_multiplexer.ts:108:23)

The line const connection = await connect({ hostname: "127.0.0.1" }); needs to be inside the try-catch block too in order to catch this error aswell.
I've been stumped for a while figuring out why this library seems to crash my server in one way or another. 😃

authors: H01001000 bramtechs lenkan

repo: lenkan/deno-amqp


text:
[Bug]: Dev backoffice links are broken

What happened?
Many links to the dev backoffice are broken. They link to the /register page that does not exist anymore.
Change the link to target the /
What browsers are you seeing the problem on?
No response
Version
No response
Relevant log output
No response

Not reproduced.

repo: lenra-io/website


text:
Extension child pages in clusterPageMenus get wrong styling

Describe the bug
Hi, I'm facing an issue when adding a page as a child of another page in clusterPageMenus like so:
    {
      parentId: this.#menuItemParentId,
      target: { pageId: this.#projectsPageId },
      title: "Projects",
      components: {
        Icon: FilterTiltShiftIcon,
      }
    },

when I add parentId: this.#menuItemParentId, I am seeing that my component is cropped to about 1/3rd of the screen eventhough there are a lot objects to render (> 60 or >100):
when I remove the parentId: this.#menuItemParentId, I get the result I intended to render.
Expected behavior
The styling to be applied as in a cluster page that is a non-child page.
Screenshots
https://i.imgur.com/e5HuoTe.png
Environment (please complete the following information):

Lens Version: 4.0.6
OS: Windows

Thanks for submitting this issue! Can you provide us with a minimal extension code example that replicates this behavior?

Thanks for submitting this issue! Can you provide us with a minimal extension code example that replicates this behavior?

@Nachasic hi, the crucial part is really setting up the field parentId: this.#menuItemParentId in the element of clusterPageMenus:
Take any of your extensions, then go to renderer.tsx and adjust the entries of clusterPageMenus:
export function FilterTiltShiftIcon(props: Component.IconProps) {
  return <Component.Icon {...props} material="airplay"/>
}

  #menuItemParentId = "some-parent-id";
  #routesPageId = "whatever-id";
  clusterPageMenus = [
    {
      id: this.#menuItemParentId,
      title: "Parent",
      components: {
        Icon: FilterTiltShiftIcon,
      }
    },
    {
      parentId: this.#menuItemParentId,
      target: { pageId: this.#routesPageId },
      title: "Routes",
      components: {
        Icon: FilterTiltShiftIcon,
      }
    }
]

you would also need something to be rendered in the sub-page so you'll also need to extend the clusterPages array as well
  clusterPages = [
    {
      id: this.#routesPageId,
      components: {
        Page: () => <RoutePage extension={this} />,
      }
    },
]

hope this helps, lmk if you need more information

@Nachasic hi, the crucial part is really setting up the field parentId: this.#menuItemParentId in the element of clusterPageMenus:
Take any of your extensions, then go to renderer.tsx and adjust the entries of clusterPageMenus:
export function FilterTiltShiftIcon(props: Component.IconProps) {
  return <Component.Icon {...props} material="airplay"/>
}

  #menuItemParentId = "some-parent-id";
  #routesPageId = "whatever-id";
  clusterPageMenus = [
    {
      id: this.#menuItemParentId,
      title: "Parent",
      components: {
        Icon: FilterTiltShiftIcon,
      }
    },
    {
      parentId: this.#menuItemParentId,
      target: { pageId: this.#routesPageId },
      title: "Routes",
      components: {
        Icon: FilterTiltShiftIcon,
      }
    }
]

you would also need something to be rendered in the sub-page so you'll also need to extend the clusterPages array as well
  clusterPages = [
    {
      id: this.#routesPageId,
      components: {
        Page: () => <RoutePage extension={this} />,
      }
    },
]

hope this helps, lmk if you need more information

Further testing shows that if a clusterPageMenu item either has child page menus or is a child page menu then the icon does not render.

@juv is this still an issue. From my testing this looks like neither case gets expanded to height: 100% without explicit styling.

Closing as I cannot reproduce this

authors: Nachasic Nokel81 juv

repo: lensapp/lens


text:
How to add cluster

Describe the bug
Clicking on "Add cluster" opens a page. But it is not clear what/how to add a kubeconfig here
To Reproduce
Steps to reproduce the behavior:

Go to 'Add cluster'
Click on '....'
Scroll down to '....'
See error

Expected behavior
In version 4 there was the possibility to select a kubeconfig.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment (please complete the following information):

Lens: 5.1.3-latest.20210722.1
OS: [e.g. OSX] macOS 11.4
Installation method (e.g. snap or AppImage in Linux): upgrade from version 4

This will be fixed by #3234
For the meantime, you can go to user preferences and add your kubeconfig files to the list of syncs. Sorry that it wasn't more obvious.

It doesn't work. I tried to add files/folders to the Kubeconfig Syncs section and nothing has changed.
In v4 it was very easy.

You can pin clusters by clicking the triple dots in the catalog. In the future we plan to allow drag'n'drop entities to the hotbar (see #2825 )

@Nokel81 Is there a way to use the v4 UI? This new one seems more complicated and I have a harder time finding the clusters I care about. Also adding a new cluster is much more cumbersome than v4 which allowed adding a file. I have to work with a lot of different clusters and I keep configs separated by env and who owns them though this new UI makes it harder to keep that without having to go through the cmd line to do so. At that point I can just use k9s or something else if I have to go to the terminal to fetch this info.

Clusters were added to the catalog, and then you can add them to the sidebar.

That was chosen so that you can have several hotbars, we are planning to add the ability to add keyboard shortcuts and multiple window support so that swapping between clusters can be done very quickly.

I have a harder time finding the clusters I care about.

Does having several hotbars (you can create them either by opening up the command-pallet by pressing "Shift+CmdOrCtrl+P" or by clicking on the number at the bottom) not afford enough highlighting?
We are planning on adding support for folders to the catalog in the future so that you can organize any entities (including clusters) there as well.

Also, having all kubefiles sync is less than ideal as I don't need them all in Lens.

It doesn't cost anything to have them in Lens, and some people find it much more convenient to be able to open Lens and all their clusters are there from the get go.
Furthermore, if you don't want to sync all the files within ~/.kube you can go and remove that sync

Does having several hotbars (you can create them either by opening up the command-pallet by pressing "Shift+CmdOrCtrl+P"
This was more of an issue when this feature went live and was not an opt in though just happened. I went from having 3 clusters which I was actively working with go to 15 or so as it synced in clusters that I had kubeconfigs for that I had only debugged.

We are planning on adding support for folders to the catalog in the future so that you can organize any entities (including clusters) there as well.
This would be an awesome addition.

It doesn't cost anything to have them in Lens, and some people find it much more convenient to be able to open Lens and all their clusters are there from the get go.
I understand there are multiple use cases. I was asking if it is possible to go back to the v4 as an option for users that preferred that workflow for both adding and managing kubeconfigs. The cost I find is the extra time spent trying to find the cluster config I care about which becomes more of a pain when trying to jump between clusters.

These are just a couple annoyances with the latest changes. Overall Lens is an awesome tool and really appreciate you taking the time to work on it and also to respond to issues. I posted here as the issue is very similar to what I experienced and seemed like a fitting place to provide some feedback. Thanks again for the work and time spent on this project.

authors: Nokel81 frankmariette vchirikov yThomasS


text:
delete a job doesnt always update

Describe the bug
i deleted a job with kubectl when i looked in lens. it was still there.
when i tried to delete it , i got this message

multiple efforts to delete the job thru lens failed.  checking with kubectl confirmed there were no jobs in this namespace.
10 minutes has passed already

Duplicate of #3821


text:
Expand env vars in cwd passed to shell sessions

A proposal to add environment variable expansion capability for cwd passed to shell sessions.

Signed-off-by: devodev abalexandrebarone@gmail.com

Will review this once https://github.com/lensapp/lens/pull/3349 is merged so that the diff is correct.

Closing this as it has conflicts and hasn't been touched in over a year. Please feel free to open this again if you so desire.


text:
Windows support?

Do you have windows support or have any plans to add it?

Sorry no plans currently.

sad :(

authors: leona snatvb

repo: leona/helix-gpt


text:
IMAP Brute

How do you feel about a IMAP Brute forcer? I have a Multi-Threaded IMAP brute forcer I could easily add in there as well.

That sounds good! Just make sure that there's a clearly accessible function that allows for a single login as well.

Of course!


text:
Fake-LAN-GW auch für Homematic-IP möglich?

Moin moin,
ich möchte anfangen auch IP-Komponenten einzubinden und gerne auf YAHM umsteigen.
Ich würde gerne YAHM virtualisiert auf X86 laufen lassen und die Anbindung über das HM-MOD-RPI-PCB machen. Für nicht-IP-Komponenten sollte das, soweit ich das verstanden habe, möglich sein mit einmal YAHM auf X86 und einem PI mit dem HM-MOD-RPI-PCB als Fake-LAN-GW.
Was ich aber noch nicht herausgefunden habe, ob der PI dann auch als Gateway für die IP-Komponenten fungieren kann. Geht das oder gibt es für dieses Szenario eine andere Möglichkeit?

Hi
Ist leider nicht möglich
Bleibe lieber nativ bei homematic
Von meinem iPhone gesendet

Am 18.05.2018 um 12:01 schrieb nibblerrick notifications@github.com:
Moin moin,
ich möchte anfangen auch IP-Komponenten einzubinden und gerne auf YAHM umsteigen.
Ich würde gerne YAHM virtualisiert auf X86 laufen lassen und die Anbindung über das HM-MOD-RPI-PCB machen. Für nicht-IP-Komponenten sollte das, soweit ich das verstanden habe, möglich sein mit einmal YAHM auf X86 und einem PI mit dem HM-MOD-RPI-PCB als Fake-LAN-GW.
Was ich aber noch nicht herausgefunden habe, ob der PI dann auch als Gateway für die IP-Komponenten fungieren kann. Geht das oder gibt es für dieses Szenario eine andere Möglichkeit?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Also lieber ganz ohne IP-Komponenten?

Ja
Ich würde entweder oder machen. Die sinnvoll verbinden kannst du sowieso nicht. Es muss dann immer etwas als Brücke laufen. Direkte Verknüpfung gibt es nicht.
Von meinem iPhone gesendet

Am 18.05.2018 um 12:54 schrieb nibblerrick notifications@github.com:
Also lieber ganz ohne IP-Komponenten?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Verbindung/Automatiken laufen bei mir sowieso über openHAB2, das ist also nicht das Problem. EQ3 scheint aber mehr an IP-Komponenten herauszubringen und zu entwickeln, daher wollte ich das integrieren, zum nächsten Winter hin wollte ich ein paar Heizkörperthermostate hinzufügen, da dachte ich dann an die IP-Varianten. Aber dann bleibe ich erstmal bei den nicht-IP-Komponenten, danke!

Auch wenn du Automatisierung mit openhab machst. Kannst du mit homematic nativ eine direkt Verknüpfung zwischen Thermostat und Fenstersensor machen. Was dann auch ohne Zentrale funktioniert.
Eine Verbindung zwischen homematic ip Thermostat und nativ homematic Fensterkontakt benötigt immer eine zentrale.
Leider muss ich dir recht geben. Es kommen aktuell vermehrt homematic ip Komponente raus und die teils sinnvolle Erweiterung bzw. Weiterentwicklung haben. Andererseits gibt’s es aktuell mehr nativ homematic Komponenten und das IP Portfolio wird erst aufgebaut.
Ich bin schon lange deswegen von eq3 enttäuscht. Sobald mehr und mehr Komponenten bei mir den Geist aufgeben wechsle ich auf offenere Protokolle wie knx/enocean. So eine produktpolitik will ich nicht unterstützen
Gruß
Leo
Von meinem iPhone gesendet

Am 18.05.2018 um 13:01 schrieb nibblerrick notifications@github.com:
Verbindung/Automatiken laufen bei mir sowieso über openHAB2, das ist also nicht das Problem. EQ3 scheint aber mehr an IP-Komponenten herauszubringen und zu entwickeln, daher wollte ich das integrieren, zum nächsten Winter hin wollte ich ein paar Heizkörperthermostate hinzufügen, da dachte ich dann an die IP-Varianten. Aber dann bleibe ich erstmal bei den nicht-IP-Komponenten, danke!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Bisher habe ich nie Komponenten nativ miteinander verbunden, weil wenn OH2 ausfällt läuft sowieso einiges nicht mehr.
Ich habe glücklicherweise in einem guten Teil KNX-Komponenten liegen. Eines muss man dem lassen, es funktioniert schon sehr ordentlich und auch autark. Leider sind die Komponenten immer noch recht teuer und das die für die ETS-Software so viel Geld nehmen... grrr. Wenn die die ETS-Software kostenlos oder zumindest preisgünstig machen würden könnte KNX wohl eine bessere Verbreitung haben.
Mein Problem ist, dass ich in dem Teil um den es jetzt geht an einigen Stellen drahtlose Sachen brauche. Vielleicht sollte ich mich aber dann doch nochmal zu KNX-Funk einlesen.

authors: leonsio nibblerrick

repo: leonsio/YAHM


text:
OTP failures: Npm package not released but tag created

Describe the bug
If the npm OTP fails (pasted the OTP code too late when it was not valid anymore) then the NPM package is not published but the tag on git is already created. Same thing for the github release which is already created
Expectation
I would expect no release to be made on npm/git/github
Reproduction
create a new release with lerna publish and enter unvalid OTP code
Lerna config and logs
lerna.json

<!-- Please paste your `lerna.json` here -->

lerna-debug.log

<!-- If you have a `lerna-debug.log` available, please paste it here -->
<!-- Otherwise, feel free to delete this <details> block -->

Environment Info
System:
OS: macOS 14.2
CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 6.02 GB / 32.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.9.0 - /usr/local/bin/node
Yarn: 4.0.2 - /usr/local/bin/yarn
npm: 10.2.4 - /usr/local/bin/npm
Watchman: 2024.01.22.00 - /usr/local/bin/watchman
Used Package Manager
yarn >= 2.x
Validations

[X] Follow our Code of Conduct
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion.
[X] The provided reproduction is a minimal reproducible example of the bug.

@ghiscoding  btw while this happened it broke my package.json again as explained here https://github.com/lerna-lite/lerna-lite/issues/813. Though i am using latest version

EDIT: and it did again when i CTRL-C while asked for OTP

That is normal since the process is to temporarily change the actual package.json, publish it, and then replace the file content with the original package. However when you do the Ctrl+C in the middle of that process, well Yes you end up with a broken package.json because you did not let it finish its execution. That process is also the same when using workspace: protocol.
I don't think there's anything I can do to address this though because that would probably require reimplementing the entire thing which I don't want to do, neither have time to do. Part of your concerns were asked long time ago in this Lerna issue
There are new code in place that will allow you to resume a publish if it failed before it had time to finish its publishing process (for example when you lose internet connection or your OTP is no longer valid). This was discussed in #413 and provided via PR #469 (which itself came from this original Lerna PR 3513. However this assumes that your package.json isn't in an invalid state.
To avoid such issue, I never use an OTP that has just a few seconds left, I always wait for the next 30sec cycle and then use that new OTP. But even better now, I use GitHub workflow to publish and I never had any problems since I use those, this is also the only way to sign an npm publish with --provenance. I also wrote an article explaining how to this How to publish on npm with --provenance using Lerna-Lite
https://github.com/lerna-lite/lerna-lite/blob/main/.github/workflows/publish-npm-latest.yml

If you're not happy with the answer, I would suggest you contribute back to the project. My main goal with this fork is simply to keep it up to date and without any Nx related stuff that the new Lerna has.

@ghiscoding you should be able to catch CTRL-C to close gracefully while resetting the package.json https://stackoverflow.com/questions/20165605/detecting-ctrlc-in-node-js
IT is not that i am not satisfied with the answer. I am reporting issues that s all. The issue with tag  being created is not the biggest of deals, i can live with that.
The issue with the broken package.json is much more dangerous. The reason is that it removes the scripts field. If i then run lerna publish again then i publish an empty package because there is not a build script anymore(happened that afternoon).
This would also happen with github action release. And i dont do github action releases. I prefer to do by hand so that i can check it all. Plus it is a lot more environment friendly.
So i am ok with you closing this issue. But i hope the package.json broken issue to find a fix one day. If i can contribute i can. Tbh just like you i have my hands full with open source projects.
Finally really dont worry i dont mind you closing that issue. (btw for the otp i realized i actually pasted an otp for github and not npm ...)

The issue with the broken package.json is much more dangerous. The reason is that it removes the scripts field. If i then run lerna publish again then i publish an empty package because there is not a build script anymore(happened that afternoon).

You are the only person who reported this problem (twice), I never had this problem on my side. If it happened more than once then I would suggest you remove the scripts deletion. Because like I said, it's a temporary change and there's no transactions of any kind to rollback and implementing a temp copy of package.json would probably require a lot of code change which I don't have time to do because like you my plate is already full with open source project which doesn't put any bread on my table.
I know modifying the package.json and leaving it in an invalid state is not ideal and I'll keep that in mind, but at this point, I don't have time to look into this and don't know how to do it without too much refactoring. It doesn't seem to happen very often either.

@ghiscoding yes i will remove the scripts deletion. seems much safer for now.

perhaps what I could do at the moment is to add a Note in the description of that option mentioning that since it modifies the actual package and there's no rollback at the moment

perhaps what I could do at the moment is to add a Note in the description of that option mentioning that since it modifies the actual package and there's no rollback at the moment

Might be a good safeguard

authors: farfromrefug ghiscoding

repo: lerna-lite/lerna-lite


text:
Fix initial store value

Fix issue, when there is no item in local storage — store is always initialised with null, instead of given initial value:
const store = createStore(storeLocalStorage.init([]))

↑ this will set null to store, regardless of given [].
This PR should fix this issue, as I've fixed it in my library:
https://github.com/yumauri/effector-storage/commit/8a6068767778eb94a6a76b6edba2ff382b2cb2b1

Thanks!

authors: ilyalesik yumauri

repo: lessmess-dev/effector-localstorage


text:
Eval Error

My model's class num is 9
and Inference result is good
I want to eval my own model
I command next(LOAD_FROM_ENGINE):
~/yolo_trt$ ./runYolov3  --W=608 --H=608 --class=9 --mode=fp16 --evallist=labels.txt
C=3;
H=608;
W=608;
caffemodel=yolov3.caffemodel;
calib=;
cam=off;
class=9;
evallist=labels.txt;
input=;
mode=fp16;
nms=0.450000;
outputs=yolo-det;
prototxt=yolov3_trt.prototxt;
####### end args#######
Load model = yolov3_fp16.engine
*** deserializing
loading from eval list labels.txt
runYolov3: /home/keti-ev/yolo_trt/eval.cpp:67: float Tn::evalMAPResult(const std::__cxx11::list<std::vectorTn::Bbox >&, const std::__cxx11::list<std::vectorTn::Bbox >&, int, float): Assertion `bboxesList.size() == truthboxesList.size()' failed.
Aborted (core dumped)
my labels.txt is
home/keti-ev/yolo_trt/scripts/minival2014/COCO_val2014_000000576031.jpg 1 [224.36, 78.74, 179.06, 390.47] 1 [265.79, 121.26, 30.08, 40.97] 1 [143.77, 112.02, 68.46, 113.47] 1 [141.9, 125.17, 31.24, 85.5]
/home/keti-ev/yolo_trt/scripts/minival2014/COCO_val2014_000000222458.jpg 1 [510.94, 206.13, 13.15, 27.51] 1 [534.23, 211.96, 7.58, 18.05] 1 [450.7, 196.12, 33.18, 87.33] 1 [600.46, 204.78, 14.82, 32.97] 1 [587.04, 205.55, 13.8, 33.02]
how can i evaluation that?

It looks like the label format error. It seems that you write the blank line in the two of the record and the first image path miss the head '/'. You can debug code or print the variable ("fileNames" and "groundTruth") for some information.


text:
Update sbt-ci-release to 1.5.10

Updates com.geirsson:sbt-ci-release from 1.5.7 to 1.5.10.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.geirsson", artifactId = "sbt-ci-release" } ]

labels: sbt-plugin-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #168.

repo: lewisjkl/kafkakit


text:
What is intended by  "tsʔ" ?

For the sound correspondence study, I get a lot of occurences of "tsʔ" from this dataset, but it is not a valid BIPA symbol. Is it possible to remap it to something valid ?
EDIT: I just saw that the script remaps 'tʃʔ' to 'tʃˀ' (not sure why it is not directly in the orthography profile), maybe the same exact thing is needed here ?

I think the best is to make an orthography profile. You could just use all symbols you find there, and then refine them. You would just resolve the . as being converted to NONE, and that would do the trick.

Ah, I had not realized that there is not an orthography profile yet. I can take care of it if that's ok with everyone involved, and only do what is currently done in the script + tsʔ to tʃˀ.
The TRANSCRIPTION file finds a few other problems, but I am not an expert at all, so I can't guess what should be done:

Segment
Occurrence
BIPA
CLTS SoundClass

ǀn
4
?
?

aʰ
3
?
?

g|
3
?
?

g‖
3
?
?

n|
3
?
?

tlʼ
3
?
?

uʰ
3
?
?

ǂn
3
?
?

ɡ
3
?
?

iʰ
2
?
?

n‖
2
?
?

n
2
?
?

pr
2
?
?

tsʔ
2
?
?

ɡʰ
2
?
?

‖
2
?
?

!n
1
?
?

Q
1
?
?

eʰ
1
?
?

n!ʰ
1
?
?

rĩ
1
?
?

tl
1
?
?

tʃxˀ
1
?
?

uʔ
1
?
?

|
1
?
?

|ʔʰ
1
?
?

ǁn
1
?
?

ɡ‖xˀ
1
?
?

ʔl
1
?
?

ʔn
1
?
?

̃ĩ
1
?
?

‖x
1
?
?

‖xˀ
1
?
?

‖ʔ
1
?
?

‖ʔʰ
1
?
?

‖ʰ
1
?
?

ʔʰ
1
?
?

@ianjoo, could you review these and suggest transcriptions ?

@tresoldi, you also looked at those click languages in phoible etc., can you help here?

Most are cases of Unicode homoglyphs, like U+2016 instead of U+01C1 for lateral click.
Should I make a PR and have @ianjoo review it?

Can't all of this be solved by creating a profile ? If so, I would think that's the cleanest way.

Didn't I say exactly this? You make a profile, using all segments, and
declare . as being replaced by NONE.

I will do it

This is solved by the profile, thanks !

authors: LinguList XachaB tresoldi

repo: lexibank/joophonosemantic


text:
scaffoldgap2bed.py can also produce coordinates of contigs, not really an issue, but a possible enhancement

If you change line 124 in scaffoldgap2bed.py from:
line[2] =='gap'

to
line[2] =='bases'

You get the coordinates of the contigs, which might be useful. Otherwise, you need to run the output of scaffoldgap2bed.py through bedtools complement
https://bedtools.readthedocs.io/en/latest/content/tools/complement.html

Oh, nice idea! I'll try to find some time to add a -c/--contigs flag to optionally output the config coordinates instead of the gaps. Or, feel free to suggest such a change by submitting a pull request (if you feel comfortable doing that)

repo: lexnederbragt/sequencetools


text:
Makefile: add bpftrace for riscv64

debug container is built for riscv64 and depends on bpftrace
This is needed for https://github.com/lf-edge/eve/pull/4018
I hope it will also push the container.

@christoph-zededa , that's correct, it should publish the package.

it seems lots of packages are missing for riscv64:
 #10 [build  2/13] RUN eve-alpine-deploy.sh
#0 0.108 ERROR: unable to select packages:
#10 0.109   bcc-dev (no such package):
#10 0.115     required by: world[bcc-dev]
#10 0.115   cereal (no such package):
#10 0.115     required by: world[cereal]
#10 0.115   clang-dev (no such package):
#10 0.115     required by: world[clang-dev]
#10 0.115   clang-static (no such package):
#10 0.115     required by: world[clang-static]
#10 0.115   gtest-dev (no such package):
#10 0.115     required by: world[gtest-dev]
#10 0.115   libbpf-dev (no such package):
#10 0.115     required by: world[libbpf-dev]
#10 0.115   llvm13-dev (no such package):
#10 0.115     required by: world[llvm13-dev]
#10 0.115   llvm13-libs (no such package):
#10 0.115     required by: world[llvm13-libs]
#10 0.115   llvm13-static (no such package):
#10 0.115     required by: world[llvm13-static]
#10 0.115   pahole (no such package):
#10 0.115     required by: world[pahole]
Error: error building "lfedge/eve-bpftrace:f8effaa3169f9e7f1ee71b63c904da62ce0e0212": error building for arch riscv64: failed to solve: process "/bin/sh -c eve-alpine-deploy.sh" did not complete successfully: exit code: 10

it seems lots of packages are missing for riscv64:
 #10 [build  2/13] RUN eve-alpine-deploy.sh
#0 0.108 ERROR: unable to select packages:
#10 0.109   bcc-dev (no such package):
#10 0.115     required by: world[bcc-dev]
#10 0.115   cereal (no such package):
#10 0.115     required by: world[cereal]
#10 0.115   clang-dev (no such package):
#10 0.115     required by: world[clang-dev]
#10 0.115   clang-static (no such package):
#10 0.115     required by: world[clang-static]
#10 0.115   gtest-dev (no such package):
#10 0.115     required by: world[gtest-dev]
#10 0.115   libbpf-dev (no such package):
#10 0.115     required by: world[libbpf-dev]
#10 0.115   llvm13-dev (no such package):
#10 0.115     required by: world[llvm13-dev]
#10 0.115   llvm13-libs (no such package):
#10 0.115     required by: world[llvm13-libs]
#10 0.115   llvm13-static (no such package):
#10 0.115     required by: world[llvm13-static]
#10 0.115   pahole (no such package):
#10 0.115     required by: world[pahole]
Error: error building "lfedge/eve-bpftrace:f8effaa3169f9e7f1ee71b63c904da62ce0e0212": error building for arch riscv64: failed to solve: process "/bin/sh -c eve-alpine-deploy.sh" did not complete successfully: exit code: 10

Yeah, most probably they are... one possible workaround is remove debug container (temporally) from riscv64... but probably these packages might be available on Alpine 3.20... I think is time to hurry up the upgrade...

I will de-activate bpftrace for riscv64, so this PR is not needed.

authors: christoph-zededa rene

repo: lf-edge/eve


text:
Allow for Structs to "wrap around content"

I have a usecase that I believe would be rather awesome if it were implemented: Having a struct take content. It would be something like that:
html!(buffer, {
    !Column::new() {
        !Column::width_and_margin(10, 1) {
            h1 { "Hello World" }
        }
    }
});

Output:

Hello World

Where as Column would implement a trait that would emit a String or so, and get as an argument a reader which represents the content inside, something akin to:
pub trait Wrapper {
    fn wrap(&self, content: &Read) -> impl Write;
}

I have seen that you have pushed something the past weeks that seems similar to that, if yes then it would be awesome to know how to use it and when it might be released.

Good idea! I've been thinking of something similar lately, but hadn't come up with a compelling use case myself. But the motivation you put up sounds convincing.
The feature I pushed lets you run custom code in the middle of a template, yes, but it doesn't let you place additional markup in the middle. So I think what you're asking for is orthogonal.
I'm busy with work at the moment, so I'll give this idea a proper run through when I get the time.

If you can spare some pointers I wouldn't mind diving into it and perhaps make something that could be used (or at least as base).

@TheNeikos The relevant code is in maud/src/lib.rs (runtime) and maud_macros/src/parse.rs (syntax).
As for syntax, I suggest using something like
@with Column::new() {
   ...
}

The @ suggests it's a special construct, and the word "with" (feel free to use another word instead) gives a slight hint as to what it does.
There's a tiny bit of code you can build on. I imagine this syntax will compile to .before() and .after() calls using this trait.

I also had another use case. If an app allowed the user to change e.g. CSS or JavaScript variables, this would necessitate another layer of escaping. So it would be cool if
let font_name = ... ;
html!(buffer, {
    p style={ "font-family: " @with css_string { (font_name) } } "Hello, world!"
})

applies CSS escaping rules in addition to the HTML escaping Maud performs by default.
I'm not sure about the role of the PreEscaped wrapper regarding this feature though, so it's okay if you don't implement this extra feature. Consider it a stretch goal :wink:

I just realized: we don't have to add more syntax at all!
Right now, the @call syntax lets us pass the underlying writer to some custom closure. If we let this custom closure take another closure with markup in it, this will let us do some kind of nesting!
fn column<'a, T: Template + 'a>(inner: T) -> impl Template + 'a {
    template! {
        div.column-12 @call(inner)
    }
}

html!(buffer, @call(column(template! { "Hello, world!" })))

On the other hand, this @call(foo(template! { ... })) nesting can get tedious quickly. So I think now it would still be worth adding some kind of @with syntax, but with a different runtime interface. Something like this:
// not sure whether the lifetime parameter is necessary
pub trait Wrap<'a, T: Template + 'a> {
    type Wrapped: Template + 'a;
    fn wrap(inner: T) -> Self::Wrapped;
}

where @with FOO { BAR } desugars to @call(FOO.wrap(template! { BAR })).

Fixed in f12efe42995e88de443fec372154c12e86e5467c and released as Maud 0.11.
I've changed html! so that rather than taking a writer, it returns a PreEscaped<String> instead. With this new version, we can splice html! values together without needing any special syntax at all!
To bring it back to your example, a typical solution would look like this:
use maud::Markup;  // "Markup" is a type alias for "PreEscaped<String>"

fn column(inner: Markup) -> Markup {
    html! { div.column (inner) }
}

fn column_width_margin(width: u32, margin: u32, inner: Markup) -> Markup {
    // ...
}

html! {
    (column(html! {
        (column_width_margin(10, 1, html! {
            h1 "Hello, world!"
        }))
    }))
}

Another solution would be to write a builder struct that implements Render.
Please tell me if you have any trouble using the new version!

Okay that is a lot more elegant than what I thought of!
Awesome! Will report back once I've used it.

So I've been using this and incorporated it into my website, it works just as expected :+1:

authors: TheNeikos lfairy

repo: lfairy/maud


text:
Update README with programming instructions, BOM and lock removal

I've enhanced the README with detailed instructions for programming the Tang Nano board. @lfantoniosi , can you set up a shared project on PCBWay using your account and upload the gerber files? This way, we can order from your project, and you'll receive some $$$. Additionally, consider registering your AliExpress account as an affiliate. This will enable us to update the BOM purchase links with your affiliate details, ensuring you receive cash back.

thanks

thanks

authors: cristianoag lfantoniosi

repo: lfantoniosi/WonderTANG


text:
Bug(?

更新到2.0后出现无法加载的问题，已经尝试过重装整个环境和不写ps相关的任何配置(使它保持默认)
报错相关信息:
Decorators defined with incorrect fields: nonebot_plugin_picstatus.templates.default.TemplateConfig:31221280.resolve_css_url (use check_fields=False if you're inheriting from the model and intended this)

nonebot_plugin_picstatus/templates/default/init.py#L37-L39

我对比了37-39行，似乎我本地下载的和github上的是一样的
请问我该怎么做？

我的锅


text:
tar files recursively inside dir and upload

Hi, nice project!
I use the pattern: tar all files within some dir and then upload tar file. It would be nice to do it in a single call.
Here's the code I used for now:
https://www.tutorialspoint.com/How-to-create-a-tar-file-using-Python#:~:text=Use%20the%20tarfile%20module%20to,the%20files%20in%20it%20recursively.

import os
import tarfile
def tardir(path, tar_name):
    with tarfile.open(tar_name, "w:gz") as tar_handle:
        for root, dirs, files in os.walk(path):
            for file in files:
                tar_handle.add(os.path.join(root, file))

tardir('images', 'images.tar.gz')

import zenodopy
# always start by creating a Client object
zeno = zenodopy.Client()
zeno.set_project(dep_id)
zeno.upload_file("images.tar.gz")

would be easier just having
import zenodopy
zeno = zenodopy.Client()
zeno.set_project(dep_id)
zeno.upload_dir('images/')

This is a really good idea! I can implement this when I have time.
If you fork the project and implement this, please submit a pull request and I will merge it with the main code and include you as a contributor

@tsitsvero I added two new methods upload_tar() and upload_zip().  These could (and probably should) be combined.
Here is the code added to the project:
    def upload_zip(self, source_dir=None, output_file=None):
        """upload a directory to a project as zip
        This will:
            1. zip the directory,
            2. upload the zip directory to your project
            3. remove the zip file from your local machine
        Args:
            source_dir (str): path to directory to tar
            output_file (str): name of output file (optional)
                defaults to using the source_dir name as output_file
        """
        # make sure source directory exists
        source_dir = os.path.expanduser(source_dir)
        source_obj = Path(source_dir)
        if not source_obj.exists():
            raise FileNotFoundError(f"{source_dir} does not exist")

        # acceptable extensions for outputfile
        acceptable_extensions = ['.zip']

        # use name of source_dir for output_file if none is included
        if not output_file:
            output_file = f"{source_obj.stem}.zip"
            output_obj = Path(output_file)
        else:
            output_file = os.path.expanduser(output_file)
            output_obj = Path(output_file)
            extension = ''.join(output_obj.suffixes)  # gets extension like .tar.gz
            # make sure extension is acceptable
            if extension in acceptable_extensions:
                raise Exception(f"Extension must be in {acceptable_extensions}")
            # add an extension if not included
            if not extension:
                output_file = os.path.expanduser(output_file + '.zip')
                output_obj = Path(output_file)

        # check to make sure outputfile doesn't already exist
        if output_obj.exists():
            raise Exception(f"{output_obj} already exists. Please chance the name")

        # create tar directory if does not exist
        if output_obj.parent.exists():
            with zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
                make_zipfile(source_dir, zipf)
        else:
            os.makedirs(output_obj.parent)
            with zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
                make_zipfile(source_dir, zipf)

        # upload the file
        self.upload_file(file_path=output_file)

        # remove tar file after uploading it
        os.remove(output_file)

    def upload_tar(self, source_dir=None, output_file=None):
        """upload a directory to a project
        This will:
            1. tar the directory,
            2. upload the tarred directory to your project
            3. remove the tar file from your local machine
        Args:
            source_dir (str): path to directory to tar
            output_file (str): name of output file (optional)
                defaults to using the source_dir name as output_file
        """
        # output_file = './tmp/tarTest.tar.gz'
        # source_dir = '/Users/gloege/test'

        # make sure source directory exists
        source_dir = os.path.expanduser(source_dir)
        source_obj = Path(source_dir)
        if not source_obj.exists():
            raise FileNotFoundError(f"{source_dir} does not exist")

        # acceptable extensions for outputfile
        acceptable_extensions = ['.tar.gz']

        # use name of source_dir for output_file if none is included
        if not output_file:
            output_file = f"{source_obj.stem}.tar.gz"
            output_obj = Path(output_file)
        else:
            output_file = os.path.expanduser(output_file)
            output_obj = Path(output_file)
            extension = ''.join(output_obj.suffixes)  # gets extension like .tar.gz
            # make sure extension is acceptable
            if extension in acceptable_extensions:
                raise Exception(f"Extension must be in {acceptable_extensions}")
            # add an extension if not included
            if not extension:
                output_file = os.path.expanduser(output_file + '.tar.gz')
                output_obj = Path(output_file)

        # check to make sure outputfile doesn't already exist
        if output_obj.exists():
            raise Exception(f"{output_obj} already exists. Please chance the name")

        # create tar directory if does not exist
        if output_obj.parent.exists():
            make_tarfile(output_file=output_file, source_dir=source_dir)
        else:
            os.makedirs(output_obj.parent)
            make_tarfile(output_file=output_file, source_dir=source_dir)

        # upload the file
        self.upload_file(file_path=output_file)

        # remove tar file after uploading it
        os.remove(output_file)

Please let me know if you have ways to improve this.
I will close this issue

Thanks!

If you fork the project and implement this, please submit a pull request and I will merge it with the main code and include you as a contributor

Hope to contribute in the future. I was using mostly zenodo_get until now but gonna move to zenodopy.

authors: lgloege tsitsvero

repo: lgloege/zenodopy


text:
elements inside a SVG foreignobject cannot be correctly outputted

Elements inside of SVG foreignobject seems to be rendered improperly.
reproducible code is  https://jsfiddle.net/gua92u21/1/
  view: function() {
    return [
      m(
        "svg",
        [
          m(
            "foreignObject",
            {
              height: 100,
              width: 200
            },
            [
              m(
                "p",
                {
                  width: 100,
                  height: 200
                },
                "ABC"
              )
            ]
          )
        ]
      )
    ];
  }

The view code above end up outputting HTML below.
<svg><foreignObject height="100" width="200">
ABC
</foreignObject></svg>

This seems correct and If I write above code directly to a HTML file, it will be rendered correctly.
But when I output the above code via Mithril,DOM gets modified and looks like same as the case I write the HTML code directly to a HTML file though it will display no visible element.

once modifying the DOM of the p element such as adding line break or changing the text value,it will be displayed correctly.
replacing the p element to simple String, it works properly.(which means the case foreignobject has no child element but its value.)
so far I've checked,any kind of HTML tag triggers same problem.

The documentation on foreignObject says that it must declare a separate namespace or it will not render. Here is a working example of your code: https://jsfiddle.net/dt6mqrq6/1/
I'm not sure why the code works in your HTML. One idea is that the default namespace of the page and the namespace of the foreignObject (which I assume is blank, no namespace) are indeed different. However, when Mithril inserts new svg, the browser assumes that it falls under the namespace of the page, and as per the docs, since there is no separate namespace the foreignObject is not rendered.
That might explain why you can see the foreignObject in the DOM (in view source, or the Elements pane of devtools) yet nothing appears on the page.
My jsfiddle ensures that the browser understands that Mithril is inserting something into the DOM under a separate namespace.
As to why altering the DOM after it's rendered causes it to appear, I can only guess that when the browser is recalculating the page, it guesses that you intend two separate namespaces.
Namespaces and how browsers deal with them is hard. I'm only making guesses here.

Thanks. that works perfectly.
I still don't get why other ways to insert the HTML code works but Mithril though,as long as giving independent namespace make it working, it's okay to me.


text:
MACOS部署响应时间较长，出字速度还行

非专业提问，请谅解。
运行设备：MACMINI M2
使用mps加速，在提问的时候，有较长的响应时间，期间CPU单核100%，这个过程时间很长，尤其是在有多条上下文的时候较为明显。到了输出的时候，CPU下降，GPU满载，这个时候的速度就很美了。
简单说就是出字速度快，但是前边的响应时间很长，是特性或者有优化的方法？
下面是我使用的命令：
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
python convert.py -i /Users/admin/chatglm2-6b -t q4_0 -o chatglm2-ggml.bin
cmake -B build -DGGML_METAL=ON && cmake --build build -j
CMAKE_ARGS="-DGGML_METAL=ON" pip install 'chatglm-cpp[api]'
MODEL=../chatglm2-ggml.bin uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8000

上游llama.cpp已经修复了这个问题，等待同步到本仓库就好

同问

已经把上游优化迁移过来了，可以拉最新代码试试

authors: li-plus liuhrme lshzh-ww lwo2002


text:
NEW Instagram Feature: Albums!

Hey @liamcottle and everyone else!
There's a new Instagram feature out as of February 22nd:
http://time.com/4677754/instagram-album/
Basically, people can select up to 10 photos and post them all as one big "clump". They show up on the timeline with a small "square" in the top right corner. The first image here is an album, and the rest are regular images:

When clicking an album in the app, you see little blue dots below the image and can swipe left/right to see all the images.
These albums are NOT returned via the regular getUserFeed() (/v1/feed/user/<ID>/) endpoint. That one ONLY returns normal images. It doesn't even return any dummy placeholders for "here is an album, load its info separately", as far as I can see (but I may be wrong about that).
There's another popular Instagram API for PHP but they haven't got Album support either: https://github.com/mgp25/Instagram-API/issues/976 (and besides, I prefer Liam's API).
Does anyone know what to do to reverse engineer it? Liamcottle, have you got any ideas? Since they use HTTPS (which wireshark can't break), I guess you need to set your iPhone to use a custom web proxy, and then set that proxy to snatch up all traffic, to see what endpoints the official app calls and how it does it. I'd love to help but I don't know how you reverse engineer. So I'll await your instructions (what app and method you use). Then I can help out.
Luckily albums don't have any "vanishing/expiry" date. They're like normal posts and only vanish if the user deletes them. So they seem kinda easy. Probably some '/albums/' endpoint to get a list of albums, and then some '/album/' endpoint to get the info for a specific album. Or perhaps it's done via a new argument to '/feed/user/' to tell it to "include albums too", which would make even more sense (since otherwise they'd have a nightmare when the app is paginating and trying to figure out the interleaving order of regular posts and albums). So my strongest guess is that it's done via an additional query param to the regular /feed/user/ endpoint.
I'm not promising that I'll implement it. In fact I don't think I'll have time. But I'd at least like to try to figure out what endpoints it uses and to share my findings. So Liam, what's the method to use?

We've solved the mysteries over here:
https://github.com/huttarichard/instagram-private-api/issues/144
Hasn't been ported to Instagram-SDK-PHP. But basically carousel albums are a new media type on the timeline, have a new subarray of images in the album, and the way to get them in the response is to update to API 10.8.0. So if anyone wants to do that, feel free. I'm going to finish up my contributions here and then switch to another library.

repo: liamcottle/Instagram-SDK-PHP


text:
How to deal with proxy

@liamcottle
Do you have any suggestion of proxy server to use in a production enviroment?
I'm developing a comment tracking system but i dont know what to do next.
And do i need on proxy address/port for each user?
I'm kind of lost on that.

Hi @GitDov,
Unfortunately I don't have any recommendations on which proxy service provider to use.
I provide all the methods to interact with Instagram, your tracking system implementation is for you to decide on 😄
Cheers.

authors: GitDov liamcottle


text:
Not returning markets in the same order as eventIds

market_ids does not get returned in the same way as in the betfair API
event_ids = [28200940, 28200941, 28200939, 28200937, 28202622, 28188158, 28202623, 28188159, 28202621, 28188157, 28202619, 28202616, 28202617, 28202614, 28202615, 28196677, 28202626, 28188160, 28202625, 28188176, 28188177]

markets = betfairclient.trading.betting.list_market_catalogue(
            max_results=100,
            filter=filters.market_filter(
                 event_ids=event_ids,
                 market_type_codes = ["MATCH_ODDS"]
            ))

yields mismatch between market_id and eventId
I looked briefly at the code but could not see any reordering, I could've missed something to. :)

What order are you expecting? I don't think betfair will return the same order as the request.
I just tested between the visualiser and lightweight and its exactly the same.

repo: liampauling/betfairlightweight


text:
pull

pull

done


text:
rust: xdppass: Use libbpf-cargo build script

Build script is better than cargo plugin b/c you can't forget to run the
skeleton generation step.

cc @chenhengqi

It looks good.
One small question, the current implementation use relative path rather than CARGO_MANIFEST_DIR, does it works in both workspace dir and crate dir?

One small question, the current implementation use relative path rather than CARGO_MANIFEST_DIR, does it works in both workspace dir and crate dir?

It should work. https://doc.rust-lang.org/cargo/reference/build-scripts.html says:

In addition to environment variables, the build script’s current directory is the source directory of the build script’s package.

@anakryiko  ping

authors: chenhengqi danobi

repo: libbpf/libbpf-bootstrap


text:
correct connection for RESET Pin

Document Links
README.md
Description of the problem
The README says RESET Pin: RESET GPIO27.
The output of the test program says something different:
mifare_classic_interface_debug_print("mifare_classic: RESET connected to GPIO26(BCM).\n");
Please give your suggestion
?
Additional context
*?

Thank you very much for using LibDriver, The README is right, RESET Pin is GPIO27(BCM). We have fixed the error in the testing program, thank you for you report.

authors: dietmarczekay libdriver


text:
No output file produced when converting a JPG file, cjxl exists without error

Describe the bug
I was converting my library from JPG to JXL and stumbled upon a few files where cjxl would not produce any output, even though it returns with 0 exist codes and shows as if everything is correct
To Reproduce
1.Download this file and rename it to 1.jpg

Run cjxl 1.jpg 1.jxl

Expected behavior
A file with a name 1.jxl is created.
If the file is not created, at least the returned status code should not be 0.
Actual behavior
No file is created.
Returned status code is 0.
Screenshots

Environment

OS: Manjaro Linux
Compiler version: not sure
CPU type: x86_64, AMD Ryzen 7 3700X 8-Core Processor
cjxl/djxl version string: cjxl v0.6.1 a205468b [AVX2,SSE4,SSSE3,Scalar]

Additional context
Add any other context about the problem here.

Thanks for the bug report!
This should be fixed already at the current head; there I could successfully ran
cjxl 1.jpg 1.jxl
Could you check that this works for you as well?

Compiled the latest master and indeed, this is working.
Thank you. Closing this issue.

Thanks for checking!

repo: libjxl/libjxl


text:
[Consensus] Non-blocking timestamp processing

Current state
Some pieces of our code today are dedicated to postponing the vote in case the timestamp of a proposal is "slightly" ahead of the local wall clock time. In this case a node is actually waiting until its wall clock time is getting to the point of a physical clock and sends the vote only after that.
The idea behind waiting prior to voting is to be able to guarantee that "if a block with timestamp T is committed there are at least f+1 honest validators with physical clock > T at the time of execution"
This guarantee makes it possible for VM to reason about time-based contracts: there is a reasonable upper bound on the timestamps of the transactions on chain.
The problem

The waiting approach is blocking the system, increasing latencies and reducing throughput.

A carefully crafted proposals with timestamps that are slightly ahead of the physical clock are going to slow down everything.
Even in the benign case with a slight clock skew we might see cases of some validators waiting before voting for the proposals.

There is a non-trivial amount of code dedicated to waiting in these cases, that might be gone.

Proposal
We can change the guarantee from:
"if a block with timestamp T is committed there are at least f+1 honest validators with physical clock > T at the time of execution",
to:
"if a block with timestamp T is committed there are at least f+1 honest validators with physical clock > T - delta at the time of execution",
Vote processing changes: if a proposal's timestamp is within the current wall clock + delta, then allowed to vote, otherwise not allowed to vote.
Proposal generation changes: if a parent's timestamp is within the current wall clock + delta, then propose with the parent's timestamp + 1us, otherwise do not propose.

Thanks for writing this. I see one attack with this approach:

At time t0, I propose a block for round 1 with timestamp = t0 + delta
Every honest validator votes for it, because delta is the maximum margin of error validators can accept
At round 2, the leader propose a block with timestamp = t1 < t0 + delta.
No honest node validator for it because the timestamp is not strictly increasing from the previous block.

What about a completely different approach: every validator includes a timestamp in their vote. The timestamp for a block is the average of all votes corrected against f potential fake timestamps (not sure how to do the last part).

@mimoo we need the timestamps to be signed and we want them to be identical so that we'll be able to generate the QCs / LedgerInfoWithSignatures / etc.
Note that a proposal must know about its parent (because it carries a QC to the parent), so the monotonically increasing timestamp requirement can never be violated.

A carefully crafted proposals with timestamps that are slightly ahead of the physical clock are going to slow down everything.

How is this different than sending proposals towards the end of the round?

Even in the benign case with a slight clock skew we might see cases of some validators waiting before voting for the proposals.

FWIW there's really no legitimate reason for validators to be more than a few milliseconds out of sync. Anything more than that is likely H/W issues which shouldn't strike many validators at the same time.
Anyways, this proposals basically boils down to having timestamps that lag behind real time. I don't feel super strongly either way (though it seems like a bit of a bummer to lose a more accurate timestamp). One thing I will point out -- as structured it seems like if nodes are honest the timestamps will generally be accurate But in byzantine cases the timestamp could be inaccurate by up to delta.
I think that's a bit risky because people might code assuming accurate timestamps. In a hypothetical contract that allowed you to bet on interest rates, imagine the fed announces at 9am. It'd be logical to close betting at exactly 9am. However really you'd need to close at 9am - delta because if a block commits 9:01 am it's possible that the "true" time is 9:01am - delta

@mimoo we need the timestamps to be signed and we want them to be identical so that we'll be able to generate the QCs / LedgerInfoWithSignatures / etc.

Note that a proposal must know about its parent (because it carries a QC to the parent), so the monotonically increasing timestamp requirement can never be violated.

I think that's a bit risky because people might code assuming accurate timestamps. In a hypothetical contract that allowed you to bet on interest rates, imagine the fed announces at 9am. It'd be logical to close betting at exactly 9am. However really you'd need to close at 9am - delta because if a block commits 9:01 am it's possible that the "true" time is 9:01am - delta

I might miss something but I think the very same problem would happen with the current approach as well: the proposal that is sent by a byzantine validator at 9am-delta can include a timestamp of 9am. As a result the rest of the validators would first wait for 9am and then execute the proposal. It's a matter of whether you "wait and execute", or you "pretend that you waited and execute right away" :).

I might miss something but I think the very same problem would happen with the current approach as well: the proposal that is sent by a byzantine validator at 9am-delta can include a timestamp of 9am. As a result the rest of the validators would first wait for 9am and then execute the proposal. It's a matter of whether you "wait and execute", or you "pretend that you waited and execute right away" :).

Because the smart contract would say:
if (now() < 9am) { /* allow bet */ }

It's OK if a byzantine validator can delay the commit of a transaction, it's not OK if it can, at 9:01 make a transaction appear to commit at 8:59.
(nb: yes, it is possible for a byzantine validator to have two parallel chains that commit conflicting events at 8:59, then at 9:01 decide the favorable chain to commit)

it's not OK if it can, at 9:01 make a transaction appear to commit at 8:59

you mean you wish it would not be OK, because it is the case in most cryptocurrencies.

Sorry, my bad on the ordering here. The issue is you can't make a transaction appear to happen at 9:01 until 9:01. A payment channel is a good example here -- if the dispute resolution period ends at 9:01 you can't make it come early.
One way we could potentially stop the clock from falling too far behind (i.e. from somebody proposing at 9:01 a block at 8:59) is to say that if you receive a proposal containing a time T that if T + (round timeout) > local_time() you ignore the proposal / timeout. In other words -- if T is the timestamp in the proposal and tmo is the round timeout, the validator will only vote on the block if the local time when it received the proposal is in the interval [T - tmo, T + tmo].
We could chose if, on top of that, we want to add the restriction "do not vote on a block until local_time > block timestamp". IMHO with Avery's new non-blocking processor suggestion such a condition wouldn't increase the range of things a byzantine validator can do (because they can always give you the proposal at the end of the round) and would be unlikely to cause local performance issues.

A payment channel is a good example here

I think payment channels get around that by having large periods of times for you to react.

One way we could potentially stop the clock from falling too far behind

I think this is very close to @dmitri-perelman proposition if I understand correctly? Which sounds like a fair design decision. You want to allow a margin of error around your local time.

Yup, the proposal is exactly about non-blocking execution of the proposals that fall within a delta of the wall-clock time and rejection of the others.
By the way, I think some of the confusion happens because we didn't specify the way a VM is reading time for its now() function (in @bmaurer example). Imho the easiest way to get deterministic execution is to use the timestamp field of a proposal. If this is indeed the case:

We need to update the code because today consensus is not passing the timestamp to the execution.
If a block timestamp determines the time for VM execution, then "wait and execute" policy doesn't make sense at all: indeed, what's the point of waiting for 20ms if the VM input doesn't change?

By the way, I think some of the confusion happens because we didn't specify the way a VM is reading time for its now() function (in @bmaurer example). Imho the easiest way to get deterministic execution is to use the timestamp field of a proposal. If this is indeed the case:

Agree that transactions proposed as part of a block B should appear to happen at the time B.timestamp, I think as part of the work @runtian-zhou is doing we could pass this timestamp to a "clock" smart contract that would update the clock at every block.

If a block timestamp determines the time for VM execution, then "wait and execute" policy doesn't make sense at all: indeed, what's the point of waiting for 20ms if the VM input doesn't change?

We could execute right away, we just wouldn't send the vote until the timestamp had passed. The benefit of this is that a QC for a block cannot be formed until at least f+1 honest nodes believe that B.timestamp has passed. Maybe it's a fair point that this isn't of much practical benefit to the user. Let's say a payment channel expires at time T. The round ends at time TMO, T < TMO. We are the proposer for this round and want to prevent a claim on the channel from coming in before time TMO.
We could make a proposal and set timestamp = TMO+1. In the current setup we'd wait until TMO+1 to vote on the block. However the proposer could just as well have waited until TMO+1 to make the proposal.
So if we take the approach where we discard blocks where B.timestamp > (RoundStart + RoundTimeout) we get the effect of discarding any block that we would have timed out under the original strategy. While it's possible that we will vote for a block that is slightly in the future relative to our local clock, a malicious proposer had a "lock" on that round anyways. I.e. they could have just as easily delayed their proposal and achieved the later timestamp. (n.b.: this is a slightly tighter bound than LocalNow() + RoundTimeout)

Exactly!

Ok, discussed it with @aching who is the current owner of timestamp processing.
@aching doesn't particularly like this idea because it might make it harder for the lightweight clients to reason about the transactions that have been committed given the client's local time (e.g., if a client knows its physical local time it t it might want to be sure that the timestamp of the latest committed transaction is less than t and not less than t+delta).
Reassigning the issue to @aching: feel free to close it!

@aching a client should never rely on its local timestamp for this.  It can only truly know if a transaction has been committed or omitted by querying the chain and seeing a committed timestamp on chain.  The client's local time should never be used for determining if a transaction has been committed - in fact, that is not an accurate way to determine a transaction commitment and would be misleading if we implied that to be the case

First of all, thanks to @dmitri-perelman for bringing this up.

The waiting approach is blocking the system, increasing latencies and reducing throughput.
A carefully crafted proposals with timestamps that are slightly ahead of the physical clock are going to slow down everything.
Even in the benign case with a slight clock skew we might see cases of some validators waiting before voting for the proposals.

This is equivalent to a malicious proposer that sends a proposal after a delay in the round.  In the worst case, it can simply not send a proposal at all, forcing a round timeout.
Slowing everything down if unfortunately an artifact of today's implementation.  We will be discussing an improvement in our message processing that would allow parallel message checking, timeout/vote processing, during the potential wait.
Additionally, it will be fairly easy to figure out if there is a large variance of clocks between validators and suggest that they fix it - the counters are in place for this.  Validators that have clock skew beyond a specific tolerance are considered malicious.
Finally, in testnet and other cluster deployments we have not observed any actual waits in the counters since message latency (~30ms) seems to exceed any clock skew between validators.

There is a non-trivial amount of code dedicated to waiting in these cases, that might be gone.

So even if we add a fixed delta to the property, unfortunately I don't think the code simplifies.  The checks would need to include the delta but would still exist.  If we add a variable delta (e.g. round timeout), delta is now bound to the round timeout that is supposed to increase faster than any skew that occurs during the round.  A variable delta will be harder to reason about for clients.  We can consider today's system to have a delta of 0.

Proposal
We can change the guarantee from:
"if a block with timestamp T is committed there are at least f+1 honest validators with physical clock > T at the time of execution",
to:
"if a block with timestamp T is committed there are at least f+1 honest validators with physical > clock > T - delta at the time of execution",

As mentioned above if delta = 0, they are equivalent.  We expect that clients can tell if they are close to the tail of the blockchain by checking the highest blockchain time against they own clock, adding more delta just introduces more uncertainty around that.  If delta is small it doesn't matter, but if delta was large (e.g. minutes or hours), this would make it harder for clients.
In summary, at this time I would prefer to avoid adding any delta != 0 that changes the property for clients without a tangible gain.

@aching a client should never rely on its local timestamp for this. It can only truly know if a transaction has been committed or omitted by querying the chain and seeing a committed timestamp on chain. The client's local time should never be used for determining if a transaction has been committed - in fact, that is not an accurate way to determine a transaction commitment and would be misleading if we implied that to be the case

@kphfb, I think something was lost in translation.  =) I agree with everything you wrote.  About client time syncing, I was saying that a client that syncs to a ledger info that contains a committed blockchain time can reason about how close the client is to the end of the blockchain based on a clock that is synced to the global time (e.g. its local clock) without worrying about a delta.  Obviously the smaller delta is, the bounds are tighter and as delta increases the bounds are looser.  For instance if I believe my local clock is synced to the global time and I see a commit with a clock 100 ms in the past, I am within 100 ms of the blockchain global time.  If I add a delta of 10 seconds for instance, I am within 10.1 seconds of the blockchain global time.

Discussed with @kphfb and @dmitri-perelman and it makes sense to close this for now.

authors: aching bmaurer dmitri-perelman kphfb mimoo

repo: libra/libra


text:
[move scripts] surface Move scripts "ABIs" to clients

Motivation
Create a new JSON-RPC endpoint so that (non-Rust) clients may retrieve Move script interfaces (aka "ABIs").
For now, we just refactor the existing (static) list of scripts in transaction-builder. Eventually, this should be read from the blockchain instead.
Test Plan
cargo test -p transaction-builder

I'm going to postpone the JSON RPC endpoint because Sam and I just discussed some alternative ideas that may be more future-proof.

@bors-libra r=sblackshear

:pushpin: Commit ef9a2df has been approved by sblackshear

:hourglass: Testing commit ef9a2dfff45fd0bb336daffbd5d6ac2bb617e544 with merge 7044862da64c8f25b418136e14601568186d86f2...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: sblackshear
Pushing 7044862da64c8f25b418136e14601568186d86f2 to master...

authors: bors-libra matbd


text:
Adding implicit scopes broken for clients requiring consent

I've been trying to implicitly add the LibgreGraph.UUID scope (to always get the lg.uuid claim added to tokens and userinfo) to our client configuration. But it breaks as soon as the client requires consent. (E.g. because trusted is not set to true or when the client sends prompts=consent with the authentication request.
E.g. this (trusted) client config works and successfully includes the lg.uuid claim in the response:
- id: works
  name: ownCloud Web app
  trusted: true
  implicit_scopes:
  - LibgreGraph.UUID
  secret: ""
  redirect_uris:
  - http://127.0.0.1
  - http://localhoyst
  origins: []
  application_type: native

while this one does not (only difference is the missing  trusted: true:
- id: broken
  name: ownCloud Web app
  implicit_scopes:
  - LibgreGraph.UUID
  secret: ""
  redirect_uris:
  - http://127.0.0.1
  - http://localhost
  origins: []
  application_type: native

How to reproduce
Start lico using the clients registry from https://gist.github.com/rhafer/8f94d55d39332589ba0cb80fd6c1b2ce#file-identifier-registration-yaml
export LDAP_UUID_ATTRIBUTE=entryUUID
export LDAP_....
bin/licod serve --listen 0.0.0.0:9200 \
    --iss=https://ocis.owncloud.test \
    --signing-private-key private-key.pem \
    --encryption-secret encryption.key ldap  \
    --identifier-client-path identifier/build/ \
    --log-level debug \
    --identifier-registration-conf ~/.ocis/idp/tmp/identifier-registration.yaml

I used a slightly modified version of the go-oidc userinfo sample: https://gist.github.com/rhafer/8f94d55d39332589ba0cb80fd6c1b2ce#file-userinfo-go
which basically just return the userinfo of the authenticated user.
Just copied it into example/userinfo/app.go of a local clone of https://github.com/coreos/go-oidc and run it with:
CLIENT_ID=works go run example/userinfo/app.go
and point your brower to http://127.0.0.1:5556 (ideally a private window) with CLIENT_ID=works the browser should display the userinfo including the lg.uuid claim (provided the used LDAP server returns and entryUUID attribute for the user.
To reproduce the error use CLIENT_ID=broken go run example/userinfo/app.go and open a  new private session in the browser.
This time you should be prompted for consent and now the lg.uuid claim is missing from the userinfo. Shouldn't the implict_scopes always be include regardless of the given consent? Or alternatively shouldn't the consent page request consent for that scope if it's part of the implict scopes?
BTW, the problem is also reproducible for trusted clients that require consent. See line 82 on the example app.

I tried to reproduce this now and it works just fine for me.
The implicit scope ends up in the access token scp claim.
"scp": "email LibgreGraph.UUID openid profile",

Then also the response to the userinfo endpoint does include the lg.uuid claims as expected:
"lg.uuid": "L289TXkgRXhjaGFuZ2UgNCBBbGwvL2NuPTE0MDAwMDAwMDYwMDAwMDAtdXNlcjE",

The identifier registration looks like this:
clients:
  - id: playground.js
    name: OIDC Playground
    application_type: web
    implicit_scopes:
      - LibgreGraph.UUID
    redirect_uris:
      - https://mose4:8509/

So things seem to be fine. It has been a while since this issue was opened, so closing this here for now. If this should be still an issue please reopen for further investigation.

authors: longsleep rhafer

repo: libregraph/lico


text:
Update readme regarding libspotify deprecation

Minor changes to README, mainly link to discussion about libspotify being no more - the Spotify blog post about it is now gone, so linked to discussion on modify-spotify issue tracker instead.

If we just want a note about deprecation, it might be easier for people to digest https://pyspotify.mopidy.com/en/latest/#libspotify-s-deprecation

Ah cool, yeh that's a better link - updated pull request. Thanks!

authors: dbr kingosticks

repo: librespot-org/librespot


text:
Grades export

Zaczne juz robic grafy na strone, wiec jakbys mi mogl dac jakąs mozliwosc latwgeo eksportu danych. Format csv, delimiter ;. Kolumny takie: grades.grade; categories.weight ;grades.date_added; grades.date; users.id; grades.semster; grades.subject, np: 4+; 2; 2017-07-09T23:07:58; 2017-07-09 ;1337; 1; 36415. Format daty daj jaki ci najwygodniej, ja sobie poradze

Format daty standardowy z Mysql
'1000-01-01 00:00:00'

Zrobione.
Skrypt jest w folderze server\dumps
Wykorzystanie: php dump.php <nazwa pliku do którego idzie dump>
(plik ten powinien utworzyć się w tym samym folderze).
W csv po każdym ';' następuje spacja.
Dodatkowo, w przypadku wartości null z bazy występuje 'NULL'

Jakbys mogl wywalic te spacje, dalem je tylko po to, zeby latwiej sie czytalo issue

authors: RouNNdeL Torisels

repo: librus-stats/librus-stats-php