refactor(starknet_sequencer_node): rename component execution mode

Stack:

#2548
#2547
#2546
#2545
#2544 ⬅

⚠ Part of a stack created by spr. Do not merge manually using the UI - doing so may have unexpected results.

This change is

✓ Commit merged in pull request #2575


show tooltip only above overflowing text

Thank you for your contribution to the KodaDot - One Stop Shop for Polkadot NFTs.
👇 __ Let's make a quick check before the contribution.
PR Type

[ ] Bugfix
[x] Feature
[ ] Refactoring

Context

[x] Closes #5704
[ ] Requires deployment <snek/rubick/worker>

Before submitting pull request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality

Optional

[ ] I've tested it at </ksm/collection>
[ ] I've tested PR on mobile
[ ] I've written unit tests 🧪
[ ] I've found edge cases

Had issue bounty label?

[x] Fill up your KSM address: Payout

Community participation

[ ] Are you at KodaDot Discord?

Screenshot 📸

[x] My fix has changed something on UI; a screenshot is best to understand changes for others.

tooltip above overflowing text only:

Copilot Summary

🤖 Generated by Copilot at 50988ef
Added a composable useTextOverflow and a prop active for NeoTooltip to handle text overflow in collection names. This improves the user experience by showing tooltips only when the text is cut short and avoiding unnecessary re-rendering.

🤖 Generated by Copilot at 50988ef

The text is overflowing, the element is cut
We need a composable to handle this rut
useTextOverflow is the solution we seek
It gives us isCut and assignRefAndUpdate

@floyd-li  please try it out

I wonder if we could manage to see the full text on the tooltip

I wonder if we could manage to see the full text on the tooltip

when #5862 is merged can turn tooltip to multi line
for a better solution i think we will have to wait for

https://github.com/oruga-ui/oruga/issues/521

It's merged

[ ]  turn tooltip over popular collection multi-line

@floyd-li please try it out

sry for not response in time, just little busy with personal stuff...

I wonder if we could manage to see the full text on the tooltip

Done, by multi-lining the tooltip

not sure if related, but the container is too small for this text

not sure if related, but the container is too small for this text

related.
fix in a couple of minutes

Fantastic! Perhaps reducing it to less than 4 rows would be worth considering?

https://deploy-preview-5919--koda-canary.netlify.app/bsx/gallery/1766361197-2

something like 2 rows will work i think

@exezbcz
Done

@daiagi thanks a lot!

If the text overflow logic could be wrapped in the neoTooltip component, that would be better.

my thought was to make it as a composable so it can be reused in other contexts
however it is quite a niche requirement so maybe you are right and hiding it in neoTooltip is better
ill try and rewrite it

pay 30 usd

😍 Perfect, I’ve sent the payout
💵 $30 @ 25.91 USD/KSM ~ 1.158 $KSM
🧗 EfmnRhHaQqfT3phm4cUCHCU3gFVDoSPR1U9WXzMRQBMqZ4L
🔗 0xf89eff5fef3d234d19fe4032a9eea16f4948ee898a9a914a2477db414202dc1b
🪅 Let’s grab another issue and get rewarded!
🪄 github.com/kodadot/nft-gallery/issues


Reduce Xds config race

Should consider using some mechanism like lockless  to reduce WorkloadStore r/w lock race.
The r/w is frequently, sharing one cache looks terrible, not sure if we can implement like envoy using TLS

Let's measure the cost before we add complexity or other trade offs (TLS uses more memory). I suspect it's not a major bottleneck; I'm already planning to add a benchmark for connection establishment so we can see


Missing extern C {} linkage wrapper for uname() in utsname.h

This is the only header in sys/include that does not have function prototypes wrapped in extern C {} guards. Was unable to link to the libc.a from a Nuttx application.

Could you create a patch to fix it? Thanks.

https://github.com/apache/incubator-nuttx/pull/6860


[DS-2883] Resurrect TabFileUsageEventListener

Someone found a use for this, so I recovered it from history (and tightened up the code a wee bit).  Not yet tested, but it was tested before....
https://jira.duraspace.org/browse/DS-2883

+1 it will be nice to have the option to use this to keep a permanent log of usage data. That is work for another day, but this is an important first step. Thanks!

+1 by code inspection, haven't tested it.


[Clojure] Improve example docs with installation instructions

Description
Addresses https://github.com/apache/incubator-mxnet/issues/16347 to make the example documentation clearer on how to install and have the clojure-mxnet jar dependency.
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[X] Changes are complete (i.e. I finished coding on this PR)
[X] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[X] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at https://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[X] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes
Doc improvements

@aaronmarkham - Do you have any idea why the CI website job is failing?

@aaronmarkham - Do you have any idea why the CI website job is failing?

Yes, we had to pin some python dependencies. The change is in master, so if you rebase, it should work.

Thanks - I'll rebase


✨ Build Args for Dockerfiles

What are you trying to do?
Just trying to do a docker build within my dagger pipeline, can't see a way to pass in build args with container.Build().
I would think I could just pass in a struct of args to build. something like
container.build( dagger.buildArgs{
  {"foo": "bar"},{"biz":"bang"}
} )

Why is this important to you?
We have lots of multi-stage docker builds. Long term I can see a migration path to more efficient builds directly via dagger commands, but the immediate migration path would need to leverage existing builds.
How are you currently working around this?
I'm not 😅

I know this is possible (we did it with v0.2/CUE), so should be very doable again. @sipsma, @vito, and @aluzzardi should have a better sense of when we can do it, though.

This feature can be used as a workaround to forward ssh agent issue, example:
ARG SSH_KEY

# Adding ssh private key used to download private repos only and only if present
# If SSH KEY is not present, this dockerfile tries to use --mount=type=ssh
RUN if [ -n ${SSH_KEY+x} ]; then (mkdir -p /root/.ssh \
 && echo "    IdentityFile ~/.ssh/id_rsa" >> /etc/ssh/ssh_config \
 && echo "$SSH_KEY" > /root/.ssh/id_rsa \
 && chmod 400 /root/.ssh/id_rsa); fi

I think the structure ContainerBuildOpts can be modified in
type ContainerBuildOpts struct {
	Dockerfile string
	BuildArgs  map[string]string
}

following cue sdk contract.

Bumpimg this as it came up another time recently.
@mircubed What label could we use to track user requests?

Note: @stobias123 really needs this. From discord today.

Hey yall - I know there's open issues for this, but I just want to bump it.
I'm making a push to use dagger in the new year at my company, build args will be critical during migration

FYI @stobias123 , @jlongtine is on it :) See #4207


Merge subprojects into root project

Resolves #214

The sample tests are not executed, see https://scans.gradle.com/s/sr5jbnukfar4g/tests/overview


Automator: update<EMAIL_ADDRESS>in<EMAIL_ADDRESS>

Generated by Automator - 2021-11-08T22:34:57+00:00

@istio-testing: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-pilot-multicluster-tests_istio_release-1.12
4585488e75f562087bfa14016ce1c6b818f4fba9
link
unknown
/test integ-pilot-multicluster-tests_istio_release-1.12

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-pilot-multicluster-tests_istio_release-1.12


ARROW-8855: [Rust] [Integration] Complete record_batch_from_json types

Adds missing types in record_batch_from_json.
This however excludes list types, we can add them separately.

@andygrove this fixes the JsonError("data type {:?} not supported|) error. I got a new desktop today, and I'm able to run the integration tests on it :)


Frequent EMSGSIZE with UDPSender

I run frequently into EMSGSIZE error with UDPSender sender.
I tried to configure a huge maxPacketSize without any luck.
Do you experience similar issue?

Could you provide more details?

Where do you see this error?
What is the MTU set for the network interface that you are using?

That sounds like incorrect calculation of the cumulative message size, which is a somewhat tricky problem with thrift and compact encoding.
The max packet size should not be fiddled with because it's what the agent expects, it will not accept different sizes.

I reproduce  this problem using<EMAIL_ADDRESS>if add a callback here: https://github.com/uber/jaeger-client-node/blob/master/src/reporters/udp_sender.js#L139
like:
this._client.send(thriftBuffer, 0, thriftBuffer.length, this._port, this._host, function(e) {   if (e) {     console.log(e)   } });
{ Error: send EMSGSIZE localhost:6832     at Object._errnoException (util.js:1022:11)     at _exceptionWithHostPort (util.js:1045:20)     at SendWrap.afterSend [as oncomplete] (dgram.js:474:11)   code: 'EMSGSIZE',   errno: 'EMSGSIZE',   syscall: 'send',   address: 'localhost',   port: 6832 }

@zhongfox are you running the agent on the same host? UDP packets on loopback interface can be up to 64Kb without fragmentation, which is why we have UDP_PACKET_MAX_LENGTH = 65000. If you're running the agent on another host (or perhaps through some network mapping that could limit MTU), then you're better off not using UDP. I don't think our Node client supports HTTP sender the way Go and Java clients do.

@yurishkuro  yes, agent and node project are in the same mac pro.
% ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=3<RXCSUM,TXCSUM>
	inet6 ::1 prefixlen 128
	inet <IP_ADDRESS> netmask 0xff000000
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500

looks like my LOOPBACK  mtu is 16384, should it be 65000?
but even I change to var UDP_PACKET_MAX_LENGTH = 16000;
I can still get this error:
thriftBuffer.length:  9508
sent:  9508
{ Error: send EMSGSIZE <IP_ADDRESS>:6832
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1045:20)
    at SendWrap.afterSend [as oncomplete] (dgram.js:474:11)
  code: 'EMSGSIZE',
  errno: 'EMSGSIZE',
  syscall: 'send',
  address: '<IP_ADDRESS>',
  port: 6832 }

from some sources, EMSGSIZE indicate the data which application send is bigger than udp socket buffer, which can be changed by SO_SENDBUF, but seem node.js dgram doesn't provide such api.

My Mac also has mtu 16384 for loopback. But also this:
$ sysctl -a|grep gram
net.local.dgram.recvspace: 4096
net.local.dgram.maxdgram: 2048
net.inet.udp.maxdgram: 9216
net.inet.raw.maxdgram: 8192

maybe you try increasing these, or limiting jaeger client to these sizes.
In contrast, on a Linux host:
$ sudo sysctl -a|grep net.core | grep mem_max
[skip]
net.core.rmem_max = 212992
net.core.wmem_max = 212992

turn out mac net.inet.udp.maxdgram  is 9216
https://stackoverflow.com/questions/9123098/set-max-packet-size-for-gcdasyncudpsocket
https://github.com/savoirfairelinux/opendht/issues/135
so this code aways fail in my mac
var dgram = require('dgram');
var message = new Buffer(9217); // 9216 or smaller is ok
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 6832, "localhost", function(err) {
console.log(message.length)
  console.log(err)
  client.close();
});

so I did this:
% sysctl net.inet.udp.maxdgram
net.inet.udp.maxdgram: 9216
% sudo sysctl net.inet.udp.maxdgram=65536
net.inet.udp.maxdgram: 9216 -> 65536
% sudo sysctl net.inet.udp.maxdgram
net.inet.udp.maxdgram: 65536

the problem solved.
Im wonder why you guys didn't encounter this problem.
so maybe you need give some note for mac user in readme.

@yurishkuro
I moved to centos to do performance test, and found another situation can lead to EMSGSIZE.
it's more common for any OS, and lead to span miss.
please see: #150

I believe this has been solved. Please reopen if not.


fixing icon topbar bug.

Fixing this bug when have two or less icons.

:+1:

@flaviomuniz @deividmarques fixed.

:+1:


Add BDII providers for HTCondorCE, for non-OSG sites

Here are a couple of info providers for BDII GLUE1.3 and GLUE2 publication.
Handles multi-CE sites and allows users to specify their site-specific values inside HTCondor-CE config, meaning that there's no need for extra config outside of the CE.
I've left the spec changes out as the one in head seems out-of-date. I'm envisioning a bdii sub-package, which has a Require on bdii.
ifdef'd out for OSG builds.
Providers would need to be installed in /var/lib/bdii/gip/provider/ owned by the ldap user/group.
Let me know if you need any changes or have any comments/corrections.

Hi @kreczko, no HTCONDORCE_CORES refers to the number of Logical CPUS in a single execute node.
The total cores in the cluster is calculated by querying the COLLECTOR_HOST using the python bindings.
The reason it's hard-coded here is that some people run vastly differing hardware setups in their pools, e.g. most nodes might be 8 core, but they may have a large number of 32-core nodes.
We could average by querying node cpus through the collector but then we'd need to floor it and then it doesn't exactly reflect reality. Rather than that approach I decided to leave it up to the site admin.
Happy to come up with a better approach if you have ideas.

Iain, I only merged in some of the spec file changes from the OSG 3.3 branch because other parts of it don't apply to 3.2. If you include your version of the spec file, I can help you work on it so that it can be merged in cleanly.

Hi @brianhlin, no problem. I'll submit the spec changes in a couple of hours.

Hi @brianhlin, this is a preliminary spec change for a bdii sub-package.
Let me know if something doesn't quite look right. I wasn't sure what kind of tag you'd prefer to ifdef on so that's missing at the moment.
Thanks, Iain

You can wrap the bdii blocks in:
%if ! 0{%osg}
    ...
%endif

Hi @brianhlin does this look reasonable?

@brianhlin,
I just noticed a gotcha in your last comment; you should use:
0%{?osg}

instead of:
0{%osg}

Otherwise it will not expand the way you'd like...

@edquist thanks for the spot!
I completely missed that.

Thanks @edquist. Excuse my brain fart, please D:
On Thu, Dec 10, 2015 at 3:04 PM, Iain Steers<EMAIL_ADDRESS>wrote:

@edquist https://github.com/edquist thanks for the spot!
I completely missed that.
—
Reply to this email directly or view it on GitHub
https://github.com/opensciencegrid/htcondor-ce/pull/60#issuecomment-163748738
.

@IainSteers: Spec file looks good, would you mind squashing all the spec commits? I'll merge after you do that and add a comment for HTCONDORCE_CORES

@brianhlin Sure!
Give me two ticks and I'll squash them in.

@brianhlin Done!

Looks good.

@IainSteers Does the bdii package provide the /var/lib/bdii/gip/provider dir?

@brianhlin It does yes, do you think it would be safer if the rpm install did an mkdir anyway?

It should be fine, I just wanted to make sure that the HTCondor-CE package didn't have to own any of those dirs.

Hi @brianhlin just looked back at the spec and realised I put the ownership of the two provider scripts as root from the looks of it.
It actually needs to be the ldap user and group which is created by the bdii package.
ls -lah /var/lib/bdii/gip/provider/condor_ce_bdii_generate*
-rwxr-xr-x. 1 ldap ldap  14K Sep 18 08:28 /var/lib/bdii/gip/provider/condor_ce_bdii_generate_glue2.py
-rwxr-xr-x. 1 ldap ldap 9.0K Sep 18 08:28 /var/lib/bdii/gip/provider/condor_ce_bdii_generate_glue1.py

I'm working on some spec file changes atm so I'll fix that while I'm at it.


SSH and Passwd

Thanks!
Input elements seems to always appear as "Focused". I believe this was a bug I introduced recently and fixed in:
https://github.com/ArthurSonzogni/FTXUI/pull/188/commits/3657b3426aadb7867652c6c14b99fe92f67e0201
You probably want to refresh FTXUI version to the latest commit to avoid thi.

In case someone wants to verify what they have typed, a small text region
is useful.
On Mon, 16 Aug, 2021, 13:52 Arthur Sonzogni, @.***>
wrote:

@.**** approved this pull request.
In src/ui/panel/passwd/passwd.cpp
https://github.com/SAtacker/beagle-config/pull/36#discussion_r689330503:

input_np = Input(&new_pass, "New Password", inp_opt);

change_ = Button("Change", [&] {

 auto cmd = "passwd " + user;

 FILE* fp = popen(cmd.c_str(), "w");

 fprintf(fp, "%s\n", pass.data());

 fprintf(fp, "%s\n", new_pass.data());

 fprintf(fp, "%s\n", new_pass.data());

 pclose(fp);

});
page = Renderer(Container::Vertical({

                   input_p,

                   input_np,

                   change_,

               }),

               [&] {

                 if (view) {

I don't understand what the goal of "view" here. Could you please explain
it to me? It seems this cause the layout to shift when you press enter.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SAtacker/beagle-config/pull/36#pullrequestreview-730445157,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOXPF5P7W6C2BYKDRKZJH7TT5DDFPANCNFSM5CF77GAQ
.

Thanks, I'll update it.
On Mon, 16 Aug, 2021, 13:47 Arthur Sonzogni, @.***>
wrote:

Thanks!
Input elements seems to always appear as "Focused". I believe this was a
bug I introduced recently and fixed in:
@.***
https://github.com/ArthurSonzogni/FTXUI/commit/3657b3426aadb7867652c6c14b99fe92f67e0201
You probably want to refresh FTXUI version to the latest commit to avoid
thi.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SAtacker/beagle-config/pull/36#issuecomment-899316890,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOXPF5NSIRWJFSM3QWSGBQTT5DCRHANCNFSM5CF77GAQ
.


Add pyx file to pypi

Sorry I'm not used to Cython packaging. This is needed for source builds?

Yes, I'm trying to package pymartini for conda: https://github.com/conda-forge/staged-recipes/pull/12728
It works now because I get the tarball from GitHub, but the recommended way is to get it from PyPI, and it just misses this file to build the extension.

Wow thanks! I've struggled with Conda before for pure-Python packages, so I decided I didn't want to even try for a Cython package.
I pushed 0.3.2 to PyPI: https://pypi.org/project/pymartini/0.3.2/

Awesome, thanks a lot! I will update the recipe.

Do you want me to add you as a maintainer of the feedstock?

That's fine. Hopefully future updates are auto-mergeable 😅

Yes, it's usually the case. You will need to confirm that you agree to be a maintainer.


[WIP] to version 1.1.0

🎉 A surprise! GRC 1.1.0 is coming soon.
This release has some exciting features. We have added a plug-in module to GRC in this release. The plugins currently available are:

push plugin (grc will automatically commit to the remote branch (origin) corresponding to the name after the submission is completed. Push plugins cannot handle complex behavior. idea: @idiotc4t)

There is nothing more yet. qaq.

grc.zip
For now, it may be unstable.
@idiotc4t, 趁热，烫手。

I've been using the push plug-in for GRC 1.1.0 for a while and it looks good, but I have to follow the instructions for the push plug-in.
I can merge it.


Update to 8.2.0

Added also CMake and CI, but I need some help.
I can't find out why the lv_demo_widgets has undefined reference.
Last commit I removed the lv_examples submodule.
In CubeIDE it builds normal.

I don't have hardware to test this on, but I trust that you've tested it.

No worries, of course I did.


Add magnetisation data

For magnetic systems with poor initial structure/initial MAGMOM, convergence test calculations may end up with different spin arrangements, hence resulting in different energies.
The total magnetisation should be added to the output (if applicable) so the user can see if that is the case and decide how to proceed with the test.

Resolved and tested in commits 863146b1ad927ca2b3b176ab6875dbc66439fc07, b7adb2acd9a49e9b25e76c96483d339ffc0018f5 and f64c9d63adc730b7662bf1e8ea35900287817995.
Thanks for contributing!!


Distinguish between apps that auto-update and those marked as latest

As a follow-up to #49, this adds a separation between apps that auto-update and those that are marked as latest through new command line options: --all now includes apps that auto-update, while --force is (additionally or exclusively) required for apps marked as latest.
The rationale behind this is to allow upgrades of apps that auto-update without always reinstalling such marked as latest. The wish for that has also been brought up by @leipert in the discussion on caskroom/homebrew-cask#29301.
I can see three major reasons why one would want this:

Bringing all apps (or at least as many as possible) to a current version without having to launch each of them
Disallowing apps to "call home" through update checks for privacy concerns
Using a non-admin user account for daily work, such that apps cannot necessarily write themselves

As for the command line options, the semantics of --all are of course changed yet again, but I consider this one the most intuitive variant. However, I care much less for the names than I do for the feature in general 🙂.

Maybe you can leave --all as it is right now, but simply add --auto and --latest
--all: shorthand for --latest and --auto
--auto: also include as auto-update marked casks
--latest: also include as latest marked casks


SemanticTokensModifier: Add unused/unreachable

I was thinking today how one might implement "grey out unreachable code" and I think we could do it with semantic tokens. Furthermore it's a pretty common operation spanning many languages. As such I think a modifier for "unused" or "unreachable" should be added to the protocol for consistency across languages.

The LSP already supports this via DiagnosticTag.Unnecessary. See also https://github.com/microsoft/vscode/issues/92157.

@aeschli what it your take on this. I actually do think we should support unused / unreachable code in semantics as well.

If you want to just mark a single token e.g identifier of a variable or parameter declaration as unused, yes, having a unused modifier is feasible.
If you want to mark a whole range as unreachable, then semantic tokens are not the right thing to use. We don't allow overlapping ranges.
From your description it sounds that it's range of unused code...

Yes I was originally thinking a whole range which is why I proposed "unreachable" but agree that if we are to mark single tokens (and I think that's entirely reasonable and desired) as unused then there should be an "unused" modifier.

@aeschli any take of adding the modifier?

I created microsoft/vscode#97063 to collect proposals for new standard token types/modifiers.

Thanks @aeschli

Lets wait for the outcome in VS Code.

Related on Stack Overflow: How can I disable problem underlines for unused code with the Rust Analyzer VS Code extension and instead highlight it gray?


[How To] write a guide on how to edit that "add new profile" section on the page

how to edit https://lead.asknet.community/index.html#create-new-profile

#306 is the styling issue for that


Table Timestamp should be relative

Table Timestamp should be relative per feedback @fiveoutofnine

Actually, going for absolute since transaction datetime's are kind of like block explorers, where general source of truth is preferred as opposed to transaction execution which are already relative


[Feature][SPI] Optimize the SPI mechanism to make it more convenient for users to extend the plug-in

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
At present, DolphinScheduler has customized a set of ClassLoader mechanism. This flexible mechanism can solve many problems, such as class conflicts and multi-version isolation. (These loaders are parallel and have no dependency relationship. A plug-in can use version 1.0 of a.jar, and plug-in B can use version 2.0 of a.jar, because of the fully qualified name of a class and the loading of the class The two loader together form the unique identification of this class in the JVM)
The flexible definition of the loading mechanism of the classloader allows us to do plug-in extension related work better and more assured, which is more suitable for task plug-ins such as complex plug-in development.
As for the registration center and alarm center, which are relatively independent and simple to rely on, we hope to provide a simpler way. Using Java's native SPI extension method, users do not need to do too many plug-in related configurations, including packaging configuration, plug-in directory configuration, etc. , Just implement the plug-in API (we can extract a layer of API, all plug-ins need to implement each interface of the API)
What do you think?
Use case
no
Related issues
no
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

This issue might be separate to three sub-task

Add SPI extension loader
Change registry plugin module use SPI extension loader
Change alert plugin module use SPI extension loader


What does George-Lorentz Varian mean to KAN?

simpler architecture?

George-Lorentz seem to imply that outer functions can be shared. This may save some parameters but may also lose some expressiveness. Good point though! But might need more thinking!

谢谢大神！
继续深入学习这么牛逼的东西。


CLI commands like uglifyjs and lessc not working on Windows

When I install node v0.6.5 with npm over the MSI, I am not able to run command-line interfaces of some packages like uglify-js (command uglifyjs) and less (command lessc).
For some reason, the directory %HOME%\AppData\roaming\npm doesn't show up when running echo %PATH% in CMD, although it definitely is there, when you look at the environment variables dialog. Maybe this is due to the permissions of Windows. I solved the issue by moving the directory from the system variables to the user variables.

Could somebody confirm this issue? I am not sure, if this is an general problem or if there's something wrong in my system settings.

Have you close and restarted the cmd terminal since installing node?

Yes, I did. I thought that this would be the problem, too, but it wasn't.

@piscisaureus @igorzi Any ideas?

@pvorb Can you paste your path variables here? (both the system path and the user path)

PS: I'm running CMD.exe without administration rights.

After rebooting Windows, everything is normal again.

I'm having some problems too: how am I supposed to install npm modules on the native Windows port ?
The first weird thing is that using "npm install uglify-js" will install the module inside the current directory (ie: ./node_modules) and not inside node's directory. Then it seems most npm modules like uglify come with a bash script as "binary": does this mean some bash is required for Windows too (cygwin,..) ?

You have to install it globally: npm install -g uglify-js. Then npm will create a .cmd file in the node directory, so it will work with the native Windows command line.


Windows Errors

The PyQt4 and PyQt5 tests on appveyor are passing, but I get this:
Exception ignored in: <bound method _ProactorSocketTransport.__del__ of <_ProactorSocketTransport closing fd=-1 read=<_OverlappedFuture cancelled>>>
Traceback (most recent call last):
  File "C:\Python34\lib\asyncio\proactor_events.py", line 86, in __del__
    self.close()
  File "C:\Python34\lib\asyncio\proactor_events.py", line 74, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\projects\quamash\quamash\__init__.py", line 365, in call_soon
    return self.call_later(0, callback, *args)
  File "C:\projects\quamash\quamash\__init__.py", line 345, in call_later
    return self._add_callback(asyncio.Handle(callback, args, self), delay)
  File "C:\projects\quamash\quamash\__init__.py", line 359, in _add_callback
    self.__timers.append(timer)
AttributeError: 'NoneType' object has no attribute 'append'
Exception ignored in: <bound method _ProactorSocketTransport.__del__ of <_ProactorSocketTransport closing fd=-1 read=<_OverlappedFuture cancelled>>>
Traceback (most recent call last):
  File "C:\Python34\lib\asyncio\proactor_events.py", line 86, in __del__
    self.close()
  File "C:\Python34\lib\asyncio\proactor_events.py", line 74, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\projects\quamash\quamash\__init__.py", line 365, in call_soon
    return self.call_later(0, callback, *args)
  File "C:\projects\quamash\quamash\__init__.py", line 345, in call_later
    return self._add_callback(asyncio.Handle(callback, args, self), delay)
  File "C:\projects\quamash\quamash\__init__.py", line 359, in _add_callback
    self.__timers.append(timer)
AttributeError: 'NoneType' object has no attribute 'append'
Exception ignored in: <bound method _ProactorSocketTransport.__del__ of <_ProactorSocketTransport closing fd=-1 read=<_OverlappedFuture cancelled>>>
Traceback (most recent call last):
  File "C:\Python34\lib\asyncio\proactor_events.py", line 86, in __del__
    self.close()
  File "C:\Python34\lib\asyncio\proactor_events.py", line 74, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\projects\quamash\quamash\__init__.py", line 365, in call_soon
    return self.call_later(0, callback, *args)
  File "C:\projects\quamash\quamash\__init__.py", line 345, in call_later
    return self._add_callback(asyncio.Handle(callback, args, self), delay)
  File "C:\projects\quamash\quamash\__init__.py", line 359, in _add_callback
    self.__timers.append(timer)
AttributeError: 'NoneType' object has no attribute 'append'

may be related to #34
PySide tests give off a similar error, in addition to:
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread

but fail, however, the PySide tests have been failing for awhile for no reason on windows (like the tests all pass, but the exit code of py.test is non-zero)

I also have these errors, regularly :
ERROR:quamash.QEventLoop:Cancelling an overlapped future failed
future: <_OverlappedFuture pending overlapped=<pending, 0x42bde50> cb=[BaseProactorEventLoop._loop_self_reading()]>
Traceback (most recent call last):
  File "D:\Anaconda3_64\lib\asyncio\windows_events.py", line 62, in _cancel_overlapped
    self._ov.cancel()
OSError: [WinError 6] Non valid descriptor

The pull request does fix my bug but not yours.


New version: eza-community.eza version 0.18.21

Pull request has been created with WinGet Releaser v2 :rocket:
Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

Installation failed with exit code -1978335187
2024-06-30 22:12:38.138 [FAIL] Installer failed security check. Url: https://github.com/eza-community/eza/releases/download/v0.18.21/eza.exe_x86_64-pc-windows-gnu.zip Result: 0x80004005

Automated error analysis suggests -1978335187 may mean Installer failed security check. Another script should retry this every 18 hours.
(Automated response - build 886.)

/azp run


Added grunt-autoprefixer

As per #4123, I've added grunt-autoprefixer and grunt-contrib-cssmin (to create a minified version instead of running the sass and autoprefix tasks twice). All vendor prefixed properties and associated mixins have been removed, except those that have been included:

to work around specific browser issues (several places in _offcanvas.scss for example)
as a hack to target particular browsers  (@-moz-document url-prefix() in _forms.scss for example)
or because they're for non standard properties (-webkit-font-smoothing and -webkit-appearance for example)

As discussed in the associated issue, I've also added a mixin to control the inclusion of the aforementioned explicitly vendor prefixed properties (repurposing the  $experimental flag). Though I've not used the mixin in this PR, the intended use would be something like the following:
@include experimental {
  -webkit-appearance: none !important;
}

I've tested it as much as I can with the browsers/devices that I have access to. Let me know if you'd like the changes squashed in to a single commit.

I am actually still very interested in that. The other day I was having a problem with transform in a current safari, and was pretty surprised to learn the autoprefixer, which I kind of took for granted, was gone.
As far as I can see, no substitute mixins were added. Why would you remove autoprefixer? What is the proposed solution?


Fix/kuha-tnx organization filter

Reason
Travis API is broken. We don't know when it will be fixed, so why not do a temporary code change to show only our repositories?
Implementation
Split the repo name and extract kuha-tnx from the property. Use that to get the right builds.
Verification
Verified locally by running index.html.

Fix looks ok.

We don't know when it will be fixed

Have we mailed TravisCI support yet? IMO kuha-admin should do this, otherwise the problem could stay.

Fair enough, reverting.


V1 Bundle Size

Description
Vite-plugin-ssr is complex, it's full of features and tries to fit in all in a good way, the currently bundle size (minified & gzipped) turns out to be 11kb with client-side routing disabled and 20kb with it enabled.
After running Chrome's Coverage tool, I've checked that the bundle has only 30% unused code, which is "amazing", ignoring the fact that coverage means how much of the code has been run, not really telling if it's useful code or not, useful != used.
Here is some things that I found that could maybe improve the Bundle Size (Although as we've discussed one of them is probably not going to be implemented by VPS).
Assertions
VPS is a really well made library, it tries to help the developers at every cost in finding the reasoning behind a bug, but this means a lot of Assertions. And when I mean a lot of assertions, check the following function:
function parseGlobResults(pageFilesExports2) {
  assert(hasProp(pageFilesExports2, "isGeneratedFile"));
  assert(pageFilesExports2.isGeneratedFile !== false, `vite-plugin-ssr was re-installed(/re-built). Restart your app.`);
  assert(pageFilesExports2.isGeneratedFile === true, `\`isGeneratedFile === ${pageFilesExports2.isGeneratedFile}\``);
  assert(hasProp(pageFilesExports2, "pageFilesLazy", "object"));
  assert(hasProp(pageFilesExports2, "pageFilesEager", "object"));
  assert(hasProp(pageFilesExports2, "pageFilesExportNamesLazy", "object"));
  assert(hasProp(pageFilesExports2, "pageFilesExportNamesEager", "object"));
  assert(hasProp(pageFilesExports2.pageFilesLazy, ".page"));
  assert(hasProp(pageFilesExports2.pageFilesLazy, ".page.client") || hasProp(pageFilesExports2.pageFilesLazy, ".page.server"));
  assert(hasProp(pageFilesExports2, "pageFilesList", "string[]"));
  assert(hasProp(pageFilesExports2, "pageConfigs"));
  assert(hasProp(pageFilesExports2, "pageConfigGlobal"));
  const { pageConfigs: pageConfigs2, pageConfigGlobal: pageConfigGlobal2 } = pageFilesExports2;
  assertPageConfigs(pageConfigs2);
  parsePageConfigs(pageConfigs2);
  assertPageConfigGlobal(pageConfigGlobal2);
  const pageFilesMap = {};
  parseGlobResult(pageFilesExports2.pageFilesLazy).forEach(({ filePath, pageFile, globValue }) => {
    var _a;
    pageFile = pageFilesMap[filePath] = (_a = pageFilesMap[filePath]) !== null && _a !== void 0 ? _a : pageFile;
    const loadModule = globValue;
    assertLoadModule(loadModule);
    pageFile.loadFile = async () => {
      if (!("fileExports" in pageFile)) {
        pageFile.fileExports = await loadModule();
        assertExportValues(pageFile);
      }
    };
  });
  parseGlobResult(pageFilesExports2.pageFilesExportNamesLazy).forEach(({ filePath, pageFile, globValue }) => {
    var _a;
    pageFile = pageFilesMap[filePath] = (_a = pageFilesMap[filePath]) !== null && _a !== void 0 ? _a : pageFile;
    const loadModule = globValue;
    assertLoadModule(loadModule);
    pageFile.loadExportNames = async () => {
      if (!("exportNames" in pageFile)) {
        const moduleExports = await loadModule();
        assertUsage("exportNames" in moduleExports, "You seem to be using Vite 2 but the latest vite-plugin-ssr versions only work with Vite 3");
        assert(hasProp(moduleExports, "exportNames", "string[]"), pageFile.filePath);
        pageFile.exportNames = moduleExports.exportNames;
      }
    };
  });
  parseGlobResult(pageFilesExports2.pageFilesEager).forEach(({ filePath, pageFile, globValue }) => {
    var _a;
    pageFile = pageFilesMap[filePath] = (_a = pageFilesMap[filePath]) !== null && _a !== void 0 ? _a : pageFile;
    const moduleExports = globValue;
    assert(isObject(moduleExports));
    pageFile.fileExports = moduleExports;
  });
  parseGlobResult(pageFilesExports2.pageFilesExportNamesEager).forEach(({ filePath, pageFile, globValue }) => {
    var _a;
    pageFile = pageFilesMap[filePath] = (_a = pageFilesMap[filePath]) !== null && _a !== void 0 ? _a : pageFile;
    const moduleExports = globValue;
    assert(isObject(moduleExports));
    assert(hasProp(moduleExports, "exportNames", "string[]"), pageFile.filePath);
    pageFile.exportNames = moduleExports.exportNames;
  });
  pageFilesExports2.pageFilesList.forEach((filePath) => {
    var _a;
    pageFilesMap[filePath] = (_a = pageFilesMap[filePath]) !== null && _a !== void 0 ? _a : getPageFileObject(filePath);
  });
  const pageFiles = Object.values(pageFilesMap);
  pageFiles.forEach(({ filePath }) => {
    assert(!filePath.includes("\\"));
  });
  return { pageFiles, pageConfigs: pageConfigs2, pageConfigGlobal: pageConfigGlobal2 };
}

There's way too much assertions, although gzip works well with compressing method calls, it doesn't with compressing assertions messages, something that makes the bundle size go up. I'm going to experiment a little with removing (with a plugin) these assertions to check how much of the bundle size is going to be reduced.
v0.4 Design
Although this is something that can only be removed when we reach v1.0, it's good to mention that there's a lot of v0.4 code in the bundle, I'm sure the bundle is going to reduce from 11kb to maybe something like 8kb-10kb when the old system get removed.
Page Configs
I'm still not sure about this, but wouldn't it be better for pageConfigs to only include the configs of the current in-use configs? Each page config is this big:
  {
    pageId: "/pages/_error",
    isErrorPage: true,
    routeFilesystem: null,
    routeFilesystemDefinedBy: null,
    loadCodeFiles: async () => (await __vitePreload(() => import("./pages_error.5edeb566.js"), true ? ["assets/entries/pages_error.5edeb566.js","assets/chunks/chunk-a4363f35.js","assets/static/onRenderClient.2c5f6e38.css"] : void 0)).default,
    configElements: {
      ["onRenderHtml"]: {
        configDefinedAt: "/renderer/+onRenderHtml.tsx > `export default`",
        configDefinedByFile: "/renderer/+onRenderHtml.tsx",
        codeFilePath: "/renderer/+onRenderHtml.tsx",
        codeFileExport: "default",
        plusConfigFilePath: null,
        configEnv: "server-only"
      },
      ["onRenderClient"]: {
        configDefinedAt: "/renderer/+onRenderClient.tsx > `export default`",
        configDefinedByFile: "/renderer/+onRenderClient.tsx",
        codeFilePath: "/renderer/+onRenderClient.tsx",
        codeFileExport: "default",
        plusConfigFilePath: null,
        configEnv: "client-only"
      },
      ["Page"]: {
        configDefinedAt: "/pages/_error/+Page.tsx > `export default`",
        configDefinedByFile: "/pages/_error/+Page.tsx",
        codeFilePath: "/pages/_error/+Page.tsx",
        codeFileExport: "default",
        plusConfigFilePath: null,
        configEnv: "server-and-client"
      },
      ["passToClient"]: {
        configDefinedAt: "/renderer/+config.ts > `export default { passToClient }",
        configDefinedByFile: "/renderer/+config.ts",
        codeFilePath: null,
        codeFileExport: null,
        plusConfigFilePath: "/renderer/+config.ts",
        configEnv: "server-only",
        configValueSerialized: '["pageProps","documentProps"]'
      }
    }
  },

Couldn't some things get removed from here? This is more like a question, gzip works really well in compressing multiple pages so it seems that having all the pages in the same place is not a problem, but configDefinedAt, configDefinedByFile, codeFilePath and plusConfigFilePath seem to be only used for debugging reasons, which again can be useful for some production aplications, but including debugging info must be an user option and not an obligation, same problem as assert.
In my opinion there's way too much config-related code in the client bundle, almost like it's re-parsing the config entirely, maybe this logic could be optimized.
This is a start, I'd like to hear your opinions on what your plans are to optimize currently.

After creating a simple Babel Vite Plugin that removes Assertion Calls, I've reduced the bundle size from 11kb to 7kb (Finally less than the Solid bundle).
Here is the code
import { parseSync, traverse, types } from '@babel/core'
import { CodeGenerator } from '@babel/generator'
import { PluginOption } from 'vite'

export function removeCalls(removableFunctionCalls: string[]): PluginOption {
    return (
        {
            name: 'babel:remove-calls',
            transform(code, id, options) {
              if(code.includes('assert')) {
                const ast = parseSync(code)
                if(!ast) return null
                traverse(ast, {
                  CallExpression(path) {
                    if(path.node.callee.type !== 'Identifier') return
                    const identifier = path.node.callee as types.Identifier
                    const hasRemovableCall = removableFunctionCalls.find($ => identifier.name === $)
                    if(hasRemovableCall) path.remove()
                  }
                })
                return new CodeGenerator(ast).generate()
              }
            },
          }
    )
}

Calling it as
removeCalls(['assert', 'assertUsage', 'assertWarning', 'assertSingleInstance', 'assertNoContradiction'])

Am I configuring something wrong?
I used `esbuild` to package the worker and got a bundle size of `600kb`, of which the `vps` took up `140kb+`

To be honest, the priority so far has been to keep a high implemention speed for the V1 design. But, now that the V1 design is stabilizing, I intend to start digging into reducing bloat (which I'm already aware of).

Babel Vite Plugin that removes Assertion Calls, I've reduced the bundle size from 11kb to 7kb

Note that we can mostly only remove assert(). The other assertions are actually helpful for the end-user and, while we can reduce their number, we should be reluctant about removing helpful error messages.
If you run your babel plugin to only remove assert(), how much is the size reduced then? I expect the number to be much less impressive, since assert() usually don't have any costly string literal.
That said, removing the old 0.4 design and making the V1 page configs data more compact will lead to a significant reduction.
The page config part is actually next on my to-do list for the V1 design stable release.
Marking this as enhancement. (I do agree this is an important issue, but I use the bug label to track issues that break applications.)

Sorry for making it a bug, but I haven't seen the option for something else. I'll test in some hours the result with only removing asserts with messages and only removing asserts to see the size difference.
I can't say that the end-user can be really benefited from the other assertions, they do help in some ways as debugging in production, but most of the times Chrome Debugging Tools are enough to help debugging an error, I'd prefer spending more time debugging than having those messages in the code (I too think they reveal too much to someone who's analysing the JavaScript, I'm used to the JVM and everything there is obfuscated).
What would be your idea on the Page Config issue? Could you tell us more about it?

It's a trade-off: some are clearly worth it while for some others maybe aren't.

What would be your idea on the Page Config issue? Could you tell us more about it?

Basically reducing the size of DEBUG=vps:virtual-files pnpm run dev.

FYI the bundle sizes should have been reduced in the last couple of versions, but I'll further dig into reducing it. I guess we can close this in the meantime.
Let us know if you notice any bundle bloat (we're always careful about it but there may be some glitch).

I recently started to experiment with vike for prerendering and I’m quite happy so far except for bundle size. In my app, vike’s client routing entry point has 185kb (unminified) which comes to about 12% of my bundle size. By contrast, react-router-dom and its dependencies have a combined size of under 38kb. This is only the library code and does not include the page config.
I ran @phiberber’s experiment removing only the assert calls and this resulted in a size of 167kb, almost a 10% reduction.

Note that we can mostly only remove assert(). The other assertions are actually helpful for the end-user and, while we can reduce their number, we should be reluctant about removing helpful error messages.

The messages are indeed helpful. But it could be possible to have a production bundle of the routing entrypoint that removes more asserts.
Another thing that I observed is that assertions are sometimes used for runtime type validation. Maybe there’s something to be gained from using a dedicated library for that (e.g. runtypes.
If you think any of the approaches maybe worth exploring @brillout, I’d be happy to contribute.

Hi @geigerzaehler, thank you for reaching out and welcome to Vike.

I recently started to experiment with vike for prerendering and I’m quite happy so far except for bundle size. In my app, vike’s client routing entry point has 185kb (unminified) which comes to about 12% of my bundle size. By contrast, react-router-dom and its dependencies have a combined size of under 38kb. This is only the library code and does not include the page config.

Note that dist/client/assets/entries/entry-client-routing.$hash.js may also include user-land code. For example /examples/react-full/dist/client/assets/entries/entry-client-routing.UkuztdV2.js is 16.4 KB.

But it could be possible to have a production bundle of the routing entrypoint that removes more asserts.

Agreed. The plan is to eventually do this:

Remove all assert() from the production build, while creating a new setting debug: boolean | { keepAssertions?: boolean }.
Reduce assertUsage() to a strict minimum and make the error messages as concise as possible.
There is a lot of redundancy in the virtual files generated by Vike.
Meticulously inspect the client runtime with the goal of reducing KBs.

[!NOTE]
You can have a look at the redundancy by running $ DEBUG=vike:virtual-files pnpm run vite. You'll see a lot of low-hanging fruits to reduce the size of virtual files.

Right now the focus is to release v1.0.0, so I'm a bit reluctant to focus on this at the moment.
That said, contributions are welcome for reducing the size of virtual files. Let me know if you're interested and I'll create a new issue for it.

Another thing that I observed is that assertions are sometimes used for runtime type validation. Maybe there’s something to be gained from using a dedicated library for that (e.g. runtypes.

If we remove assert() from the production build then I guess we don't need to add runtime type validation.

I’d be happy to contribute.

Yes, contributions welcome, also about other topics if that's something you'd be interested in! Let me know if you are and I'll update/create new contribution-welcome issues.


Fixed issue with tick formating for X axis #129

Tested with success :+1:
This PR allows doc to be correct (and attributs to be more consistent).
Many thanks

Any news on this pull request being merged in the main branch?


Method to de-qeuque item

This is a feature request.
I think there should be a way to deQueue an item. I did not find a dequeue method.
This would be either crawler.dequeue(queueItem) or queueItem.dequeue()
Or maybe something else?

What is the purpose of dequeue?

In some cases, we don't want to queue an item but based on some more advanced conditions, and before actually fetching the item.
It also makes sense since there is a queue method to have a way to revert that operation.
At the moment I am using the discovery function for that.

You can already prevent items from being queued, without having to undo the operation. Check the section on Fetch Conditions in the docs. :)
Please let me know if this isn't clear — and I'll try to add some more explanation.

It's clear thanks. Fetch conditions only allows me to check against URL.
I wanted to check queue depth before deciding, and that was the origin for this idea.
If addFetchCondition callback would accept something such as a queueItem object or something more advanced than a URL, it might be helpful.

What else apart from depth would be useful? (Remember that there's only limited information available before fetching an item.)

@rolfen it's already possible to check queue depth in fetch conditions, see this section of the README.
The same issue was discussed in #256 and the decision was to not add a remove method for now, since this might make the API more confusing - we want people to filter stuff before it's added to the queue, not after.
Please leave a comment if you still believe there's a good use case for a queue.remove method!


[QUESTION] How to change mapping option label/value to id/name

Thank you for your nice contribution.
Default option type is
{
   value: "coffee",
   label: "Coffee",
}

But I want to use like this
{
   id: "coffee",
   name: "Coffee",
}

How can I do that?

@abinhho you can use the props getOptionLabel and getOptionValue from react select

@joao-salomao Thanks for helping out here, and you're spot on.
Here's a full example using getOptionLabel and getOptionValue
import { Select } from "chakra-react-select";

const options = [
  { id: "vanilla", name: "Vanilla" },
  { id: "chocolate", name: "Chocolate" },
  { id: "strawberry", name: "Strawberry" },
  { id: "salted-caramel", name: "Salted Caramel" }
];

const Example = () => (
  <Select
    isMulti
    name="flavors"
    options={options}
    placeholder="Select some flavors..."
    getOptionLabel={({ name }) => name}
    getOptionValue={({ id }) => id}
  />
);

export default Example;

CodeSandbox Link: https://codesandbox.io/s/chakra-react-select-custom-label-and-value-qn8je?file=/example.js


When using the spi method to drive the SD card, the file cannot be created in the specified directory. (IDFGH-11028)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.0.2
Operating System used.
Windows
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
CMD
Development Kit.
ESP32-C2
Power Supply used.
External 5V
What is the expected behavior?
Using fopen("/sdcard/path/123.txt"), a folder named path is normally created on the sdcard and a file named 123.txt is created in it.
What is the actual behavior?
It actually crashes and reboots right when it gets to that point.
Steps to reproduce.
    esp_err_t ret;

    // Options for mounting the filesystem.
    // If format_if_mount_failed is set to true, SD card will be partitioned and
    // formatted in case when mounting fails.
    esp_vfs_fat_sdmmc_mount_config_t mount_config = {
        .format_if_mount_failed = true,
        .max_files = 5,
        .allocation_unit_size = 16 * 1024
    };

    // sdmmc_card_t *card;
    // const char mount_point[] = MOUNT_POINT;
    log_i("Initializing SD card");

    // Use settings defined above to initialize SD card and mount FAT filesystem.
    // Note: esp_vfs_fat_sdmmc/sdspi_mount is all-in-one convenience functions.
    // Please check its source code and implement error recovery when developing
    // production applications.

    // Use settings defined above to initialize SD card and mount FAT filesystem.
    // Note: esp_vfs_fat_sdmmc/sdspi_mount is all-in-one convenience functions.
    // Please check its source code and implement error recovery when developing
    // production applications.
    log_i("Using SPI peripheral");

    sdmmc_host_t host = SDSPI_HOST_DEFAULT();
    spi_bus_config_t bus_cfg = {
        .mosi_io_num = PIN_NUM_MOSI,
        .miso_io_num = PIN_NUM_MISO,
        .sclk_io_num = PIN_NUM_CLK,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1,
        .max_transfer_sz = 4000,
    };
    ret = spi_bus_initialize(host.slot, &bus_cfg, SDSPI_DEFAULT_DMA);
    if (ret != ESP_OK) {
        log_e("Failed to initialize bus.");
        return;
    }

    sdspi_device_config_t slot_config = SDSPI_DEVICE_CONFIG_DEFAULT();
    slot_config.gpio_cs = PIN_NUM_CS;
    slot_config.host_id = host.slot;

    log_i("Mounting filesystem");
    ret = esp_vfs_fat_sdspi_mount(tfcard.mount_point, &host, &slot_config, &mount_config, &tfcard.card);

    if (ret != ESP_OK) {
        if (ret == ESP_FAIL) {
            log_e("Failed to mount filesystem. "
                     "If you want the card to be formatted, set the EXAMPLE_FORMAT_IF_MOUNT_FAILED menuconfig option.");
        } else {
            log_e("Failed to initialize the card (%s). "
                     "Make sure SD card lines have pull-up resistors in place.", esp_err_to_name(ret));
        }
        esp_restart();  //未检测到SD卡重启
        return;
    }
    log_i("Filesystem mounted");

    FILE *f = fopen("/sdcard/path/123.txt", "w");
    if (f == NULL)
    {
        ESP_LOGE(TAG, "Failed to open file for writing");
        return;
    }
    fprintf(f, "Hello \n");
    fclose(f);
    ESP_LOGI(TAG, "File written");

Debug Logs.
No response
More Information.
No response

Does the directory path already exist on the SD card when you are calling fopen("/sdcard/path/123.txt", "w")?

Does the directory already exist on the SD card when you are calling ?path``fopen("/sdcard/path/123.txt", "w")

no  exist

Does the directory path already exist on the SD card when you are calling fopen("/sdcard/path/123.txt", "w")?

no exist

In that case, the behavior makes sense — it works the same way if you use fopen on Linux or Windows with usual filesystems (FAT32, exFAT, ext4,...). fopen doesn't automatically create subdirectories. You need to call mkdir yourself to create it.

Note that the behavior is different with SPIFFS filesystem. SPIFFS doesn't have a concept of directories. When you are opening the file /spiffs/path/123.txt, then it simply creates a file with the name /path/123.txt — forward slashes are part of the filename. So if you were to do the same thing with SPIFFS, it would work without creating a subdirectory first. In fact, mkdir with SPIFFS always returns -1 and sets errno = ENOTSUP.

In that case, the behavior makes sense — it works the same way if you use fopen on Linux or Windows with usual filesystems (FAT32, exFAT, ext4,...). fopen doesn't automatically create subdirectories. You need to call mkdir yourself to create it.
Note that the behavior is different with SPIFFS filesystem. SPIFFS doesn't have a concept of directories. When you are opening the file /spiffs/path/123.txt, then it simply creates a file with the name /path/123.txt — forward slashes are part of the filename. So if you were to do the same thing with SPIFFS, it would work without creating a subdirectory first. In fact, mkdir with SPIFFS always returns -1 and sets errno = ENOTSUP.

Does this mean I can't create a directory in the SD card? In any case?

If you're using FATFS then you can use mkdir function from C stdlib:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

...

struct stat st = {0};

if (stat("/some/directory", &st) == -1) {
    mkdir("/some/directory", S_IRWXU); // S_IRWXU == 0700 permission
}

If you're using FATFS then you can use mkdir function from C stdlib:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

...

struct stat st = {0};

if (stat("/some/directory", &st) == -1) {
    mkdir("/some/directory", S_IRWXU); // S_IRWXU == 0700 permission
}

How do I use FATFS, is it by enabling SDMMC to drive the SD card?

It seems like you're already using it. You are using esp_vfs_fat_sdspi_mount function, which mounts your SD connected through SPI as a FAT file system. It doesn't matter if you're going to connect to the SD card via SPI or SDMMC. You just need to have your SD card formatted as FAT12/FAT16/FAT32 - if not, you can do it on PC or you can leave format_if_mount_failed set to true in this portion of your code (this probably means your SD card is already properly formatted though):
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
        .format_if_mount_failed = true,
        .max_files = 5,
        .allocation_unit_size = 16 * 1024
    };

It seems like you're already using it. You are using esp_vfs_fat_sdspi_mount function, which mounts your SD connected through SPI as a FAT file system. It doesn't matter if you're going to connect to the SD card via SPI or SDMMC. You just need to have your SD card formatted as FAT12/FAT16/FAT32 - if not, you can do it on PC or you can leave format_if_mount_failed set to true in this portion of your code (this probably means your SD card is already properly formatted though):
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
        .format_if_mount_failed = true,
        .max_files = 5,
        .allocation_unit_size = 16 * 1024
    };

struct stat st = { 0 };
    if (stat("sdcard/path", &st) == -1)
    {
        int ret = mkdir("sdcard/path", S_IRWXU);
        printf("mkdir ret: %d!!!!\n", ret);

    } else
    {
        printf("mkdir fail!!!!\n");
    }

我使用这种方式创建文件夹，但是mkdir()函数返回值为-1。
I create the folder this way, but the mkdir() function returns -1.


Fluter hot reload

Steps to reproduce
Android 13  can't be hot loaded, but lower versions can
Expected results
can hot reload
Actual results
android 13 button cannot be clicked
Code sample
Code sample

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[Paste your output here]
  • Flutter version 3.16.6 on channel stable at C:\Users\merit\AppData\Local\Android\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 46787ee49c (2 weeks ago), 2024-01-09 14:36:07 -0800
    • Engine revision 3f3e560236
    • Dart version 3.2.3
    • DevTools version 2.28.4
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn
</details>

Hi @isgetzz, what button are you referring to?
Do you have this issue if you run your app using the cli instead of your IDE/text editor?


Link to tags in the metadata page

So that if someone sees a post is tagged, e.g., Arabek, they can go find a list of posts in that setting.

Don't we already have this...?

Oh. Huh..
Unbitwise requested it so I assumed it wasn't done.


Update netty-handler to 4.1.104.Final

About this PR
📦 Updates io.netty:netty-handler from 4.1.81.Final to 4.1.104.Final
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 = "io.netty", artifactId = "netty-handler" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "io.netty", artifactId = "netty-handler" }
}]

labels: library-update, commit-count:1

Superseded by #1611.


[backport 2.8] rancher monitoring chart lacks Network Policy permission to collect metrics from GUI's ingress-nginx pods

Issue created for tracking the backport of https://github.com/rancher/rancher/issues/45603 to v2.8

I verified this with a CIS benchmarked cluster and was able to confirm the fix without any issues. Below are the verification steps:
Details :
Rancher: v2.8-head
Cluster: v1.28.15+rke2r1
Monitoring Chart Version: 103.2.1-rc.1+up57.0.3

Install Rancher with CIS enabled:
# cat /etc/rancher/rke2/config.yaml
cni: canal
secrets-encryption: "true"
profile: cis
pod-security-admission-config-file: /root/psa.yaml

Install Rancher Monitoring charts with the following configuration:
rke2IngressNginx:
  networkPolicy:
    enabled: true

Check the created NetworkPolicy:

# kubectl  get networkpolicy -n kube-system -l app.kubernetes.io/managed-by=Helm
NAME                                   POD-SELECTOR                                AGE
rancher-monitoring-coredns-allow-all   k8s-app=kube-dns                            8m46s
rke2-ingress-network-policy            app.kubernetes.io/name=rke2-ingress-nginx   8m46s

# kubectl get networkpolicy -n kube-system rke2-ingress-network-policy -o yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  annotations:
    meta.helm.sh/release-name: rancher-monitoring
    meta.helm.sh/release-namespace: cattle-monitoring-system
    np.rke2.io/ingress: resolved
  creationTimestamp: "2024-11-28T09:50:30Z"
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
  name: rke2-ingress-network-policy
  namespace: kube-system
  resourceVersion: "14538"
  uid: b4ea6fb8-6a1e-4aed-b6a6-8e75b17b9ecc
spec:
  ingress:
  - ports:
    - port: 10254
      protocol: TCP
  podSelector:
    matchLabels:
      app.kubernetes.io/name: rke2-ingress-nginx
  policyTypes:
  - Ingress

Attached is the screenshot for reference.

Issue has been fix with above raise PR. So closing this issue.


[BUG] Improper token has been passed.

Summary
When having discord.py and discord.py-self installed on the same system, I can not run/host a discord bot(s) while having both installed at the same time. I have pip3 installed discord.py 1.7.3 and discord.py-self 1.9.1 onto the same system. I wanted to run a discord bot instead of a selfbot or run discord bot code along side discord bot code and I get an Improper token has been passed error for the discord bot code. not the selfbot code
Reproduction Steps
How did you make it happen?

python3 -m pip install -U discord.py
python3 -m pip install -U discord.py-self
Make a discord bot how you'd normally make a discord bot.
Set up discord bot code then get the discord bot's token and pass it in somehow or put client.run("TOKEN_HERE") at the bottom of the code file.
Run the file

Code
Relevant code that shows the bug.
# Nothing to show here as the code for the bot itself works just fine.

Traceback Error
Trackback error block for debugging.
(When running discord bot code. not selfbot code)
Traceback (most recent call last):
  File "/home/ori/.local/lib/python3.9/site-packages/discord/http.py", line 349, in static_login
    data = await self.request(Route('GET', '/users/@me'))
  File "/home/ori/.local/lib/python3.9/site-packages/discord/http.py", line 302, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ori/Desktop/Projects/ChatterEye/eye_BOT.py", line 73, in <module>
    client.run('BOT_TOKEN_HERE')
  File "/home/ori/.local/lib/python3.9/site-packages/discord/client.py", line 631, in run
    return future.result()
  File "/home/ori/.local/lib/python3.9/site-packages/discord/client.py", line 610, in runner
    await self.start(*args, **kwargs)
  File "/home/ori/.local/lib/python3.9/site-packages/discord/client.py", line 573, in start
    await self.login(*args)
  File "/home/ori/.local/lib/python3.9/site-packages/discord/client.py", line 424, in login
    await self.http.static_login(token.strip())
  File "/home/ori/.local/lib/python3.9/site-packages/discord/http.py", line 353, in static_login
    raise LoginFailure('Improper token has been passed.') from exc
discord.errors.LoginFailure: Improper token has been passed.

Expected Results
What is supposed to happen?
The discord bot will come online and run its code.
Actual Results
What is currently happening?
Errors and says improper token has been passed.
System Info
Run python -m discord --version and paste the information below.
- Python v3.9.6-final
- discord.py v1.7.3-final
- aiohttp v3.6.2
- system info: Linux 5.10.59-1-MANJARO #1 SMP PREEMPT Sun Aug 15 13:11:32 UTC 2021

Checklist
Let's make sure this issue is valid!

[x] I am using the latest released version of the library.
[] I am using a user token. (For this bug, no. This bug involves normal discord bot tokens and not being compatible with discord.py installed at the same time you have discord.py-self installed.)
[x] I have shown the entire traceback and exception information.
[x] I've removed my token from any code.

Additional Information
Put any extra context, weird configurations, or other important info here.
Having discord.py and discord.py-self installed on the same computer at the same time will conflict with each other and means you can not and will not be able to run normal discord bots from your computer/laptop. It is the same thing that happens when trying to run the selfbot code without discord.py-self. It will say improper token. IF I uninstall discord.py-self, I will be able to run discord bot code again and not get this error. But then my selfbot code will give me this error and for obvious reasons, won't be able to run the selfbot code.

This has been discussed multiple times.
Some people wanted me to rename, some didn't; now there's a branch that has a renamed import name.
I'm not 100% sure if it's fully up-to-date, though. It might be on v1.9.0.

This has been discussed multiple times.
Some people wanted me to rename, some didn't; now there's a branch that has a renamed import name.
I'm not 100% sure if it's fully up-to-date, though. It might be on v1.9.0.
EDIT: It is on v1.9.0. I'll update it tomorrow.
The proper solution would be to use venvs.

Ok.
When you get to it tomorrow, it'd be great/nice if you or anyone else could send me the link to that branch to use.

@dolfies
I'll just be here then.

I just updated that branch with the latest changes. Hopefully it still works.
https://github.com/dolfies/discord.py-self/tree/renamed

I just updated that branch with the latest changes. Hopefully it still works.
https://github.com/dolfies/discord.py-self/tree/renamed

Ok, Ty!

@dolfies
Slight issue. I don't know how to install the renamed version,I tried to use the setup.py file and it bugged out to when I couldn't run selfbot code. And now I can't uninstall discord.py-self even as root user (for linux).
help?

@dolfies
Update:
Re installing setup.py but using the following commands fixed the removing the files issue and am back to where I started.
$ sudo python setup.py install --record files.txt
$ sudo rm $(cat files.txt)

I can say..I will not be installing that branch again until I can get clear instructions on how to install it properly.
If you can give me some clear instructions please..i'd be very greatful.

Generally, you don't want to install with setup.py. You would do pip install git+https://github.com/dolfies/discord.py-self@development

@dolfies

Generally, you don't want to install with setup.py. You would do pip install git+https://github.com/dolfies/discord.py-self.git@renamed

I gave that a try and It installed just fine. But it wouldn't let me use the selfbot code and gave the usual "Improper token passed" error. But the normal discord bot code worked though.

The version you just installed has a renamed import so it doesn't conflict.
Do import selfcord as discord instead of import discord

@dolfies

The version you just installed has a renamed import so it doesn't conflict.
Do import selfcord as discord instead of import discord

Ok. It works now. Ty for the help.


Increase the texture size to 2048×2048 for all examples

This makes example textures look better.
This also fixes the example texture sizes being too low after #38.
Don't merge yet – see the comment below.

I realized we may want to store the size attribute as an absolute power of two value, rather than an OptionButton index. This way, it won't break if we change the OptionButton's minimum value.
I can open a PR for this, and amend this one if you like the idea :slightly_smiling_face:

I realized we may want to store the size attribute as an absolute power of two value, rather than an OptionButton index.

Yes, this is how it should be, I guess.

I just pushed the size parameter changes (does not depend on the minimum value of the parameter anymore) and resized all examples to 2048x2048.

Thanks!
I guess this PR can be closed then :slightly_smiling_face:


Not able to download HPatches images

Hi, I'm using the download.sh script you provided to download HPatches images.
However, I keep getting connection error as shown below.

Does anyone know how to download the dataset? Thank you.

I met the same problem, then I found the dataset on Kaggle here :https://www.kaggle.com/datasets/javidtheimmortal/hpatches?resource=download.

Thank you!


Update CloudDB LUA Script

The POP_FIRST_SCRIPT updated so that when the list is empty, it is set
to the empty list instead of the empty object (which appears to be the
Redis default when you empty a “table”).
Change-Id: I15002a883eead373b3d23e85867c0b1ab103c0fd

Fixes #2427

This should not go into production until the SHA1 hash of the new script is added to the allowed scripts on the clouddb server. Note: The CloudDB server will also recognize the old version and turn it into this new version so we get the benefit of this fix even before we deploy a new Companion.
Updated CloudDB version has been coded and is now being tested.

The updates to the CloudDB server are in place so this can be tested, merged and put into production.
Note: The kludge to replace the script on the fly on the server is also in place.


add: hamclock-big

This need to be updated to the 5.0.0 spec

This need to be updated to the 5.0.0 spec

I'll work on it.

I've updated it to the 5.0.0 package specifications.

This need to be updated to the 5.0.0 spec

Apparently I missed something I didn't notice the pre-commit check for .SRCINFO I'm redoing this now with those commits in my tree for the hooks.

I meant to add the .SRCINFO file, hopefully that's the last one for this one.

Can you rebase your branch for the CI to run?

Ok the changes discussed are done, I'll make a different PR for dealing with sourcing the desktop file.

Look at @D-Brox's reviews.

I missed changing the $url to be a non-array value.


windows support

need to add windows support for make binary
(or make-less install since windows doesn't run make)

also, problems with paths passed to Docker
docker -v C:/path/to/something:/mount will not work

What about this ?
If I would create a virtualbox provider service (i.e. a simple Go webserver) that controls virtualbox on Windows then I could run Unik in a docker container and control virtualbox from the container (in the same way as vSphere is controlled)
Would that work ?

@seriousme There isn't too much work to get unik working on windows. It's really a matter of finding places in the code where we've hard coded paths Unix-ey style and making them OS-agnostinc using go's filepath.Join
Since all the dependencies are packaged in docker, everything should just work. I don't have a working windows environment to test against atm. Can you try running on windows and paste any errors you have here?

Well first problem I have is the 'make' utility which is omnipresent on Linux but lacking on Windows.
My git shell has some bash commands but no make. I could install the full cygwin64 suite, or the Visual Studio Community edition, but that sounds like quite some overkill just to get make ;-)
I tried to use just 'make' from the cygwin64 suite, but then I get
$ make binary
echo "Unknown platform MINGW64_NT-10.0"
Unknown platform MINGW64_NT-10.0
echo "Unknown platform "
Unknown platform
exit 1

Ok, the lack of make is solvable :-)
Looking at https://hub.docker.com/_/golang/ I can run make in a container with my CWD mounted :-)
e.g.:
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.6 bash -c make
Next challenge is that the Makefile has all kinds of other dependencies (e.g. Perl), so I'm wondering whether its not more easy to run the Makefile on the docker machine host and tweak the make file a bit to cross compile a windows binary of Unik . More or less like I proposed in my initial comment. It saves the project the hassle of supporting multiple build environments and the windows user just needs a Docker for Windows of Docker Toolbox installed to get going ;-)
Even more easy would be if Unik's CI would produce a windows binary and store it somewhere for download (e.g this is what fission.io does ;-))

the good news is that you don't need make or perl if all you're doing is building unik.
to build without make, you have two options:

build from source locally (requires go and go-bindata)

go-bindata -pkg bindata -o instance-listener/bindata/instance_listener_data.go --ignore=instance-listener/bindata/ instance-listener/...
go-bindata -pkg versiondata -o containers/container-versions.go containers/versions.json
go build -v .

build in a docker container (only requires docker)

docker build -t projectunik/binary -f Dockerfile .
mkdir -p ./_build
docker run --rm -v $(pwd)/_build:/opt/build -e TARGET_OS=windows projectunik/binary

Thx: tried both methods :-)
Somehow both don't deliver a binary
go build -v . gives the following result (second round, first round it already build all the packages, I used godep to get the dependencies in)
github.com/emc-advanced-dev/unik/pkg/providers/ukvm
github.com/emc-advanced-dev/unik/pkg/providers/qemu
# github.com/emc-advanced-dev/unik/pkg/providers/ukvm
pkg\providers\ukvm\stop_instance_cgo.go:26: undefined: syscall.Kill
# github.com/emc-advanced-dev/unik/pkg/providers/qemu
pkg\providers\qemu\stop_instance_cgo.go:26: undefined: syscall.Kill

No binary, I suspect because of the syscall.Kill error ;-)
docker run --rm -v $(pwd)/_build:/opt/build -e TARGET_OS=windows projectunik/binary  ends in:
....
github.com/emc-advanced-dev/unik/vendor/github.com/spf13/pflag
github.com/emc-advanced-dev/unik/vendor/github.com/spf13/cobra
github.com/emc-advanced-dev/unik/cmd
github.com/emc-advanced-dev/unik
mv: cannot stat './unik': No such file or directory

Took me quite some time to realize that this makes sense as the binary is called unik.exe :-(
Changing the last line of the Docker file to:
CMD make -e TARGET_OS=${TARGET_OS} localbuild && mv ./unik ./unik.exe /opt/build
fixes that.
I now have a working binary on windows.
Next step is the demo

In a windows cmd prompt I get:
unik daemon time="2017-04-09T20:38:37+02:00" level=error msg="running daemon failed: [cmd/daemon.go:114] failed to read daemon configuration file at \\.unik\\daemon-config.yaml\\n\n\t\tSee documentation at http://github.com/emc-advanced-dev/unik for creating daemon config.': {open \\.unik\\daemon-config.yaml: The system cannot find the path specified.}"
Things go a bit better when using the docker toolbox MINGW64 window, however we are not in the clear yet:
$ unik daemon --debug
time="2017-04-09T20:41:00+02:00" level=info msg="daemon started" config={{[] [] [] [{my-vbox VirtualBox Host-Only Ethernet Adapter host_only}] [] [] [] [] []} }
time="2017-04-09T20:41:00+02:00" level=info msg="using container versions" versions=map[compilers-includeos-cpp-hw:694e22e023dbbbc8 compilers-rump-python3-hw-no-stub:81a494acc94d7827 compilers-rump-python3-xen:1496a60a071e79e1 qemu-util:6f5922561bbb86e3 compilers-rump-c-xen:65c2c7316ad6fc77 image-creator:fa560ac11cecae33 boot-creator:d0665c8793b16c51 compilers-mirage-ocaml-xen:0cd46f5253c6ca8a compilers-osv-java:14f2183e5cb49482 compilers-mirage-ocaml-ukvm:2c35c23771682e9a compilers-rump-base-xen:f841298dae4340f7 compilers-rump-java-hw:e8c77dc577b288d9 compilers-rump-java-xen:43365940a0dd610c compilers-rump-base-hw:8cd85d4a7ee1009b rump-debugger-qemu:0a841d0bf71287e6 compilers-rump-c-hw:1954dce79e407724 compilers-osv-dynamic:59ba07ca2f12ecaa compilers-rump-go-xen:fe3335e71ed20510 compilers-rump-nodejs-hw-no-stub:baebfe68f3283190 vsphere-client:a9538c7c242acbef compilers-rump-base-common:2eb72d1b386ce2a4 compilers-includeos-cpp-common:8de1311f7b1365d9 compilers-rump-go-hw:d1bfbc13602e306d compilers-rump-nodejs-hw:b5029ddcc8731a25 compilers-rump-nodejs-xen:2fbc447253ba19b8 compilers-rump-python3-hw:22bc5378af6e099d]
time="2017-04-09T20:41:00+02:00" level=info msg="Bootstrapping provider virtualbox with config {my-vbox VirtualBox Host-Only Ethernet Adapter host_only}"
time="2017-04-09T20:41:00+02:00" level=info msg="checking if instance listener is alive..."
time="2017-04-09T20:41:00+02:00" level=info msg="listening for udp heartbeat..."
time="2017-04-09T20:41:00+02:00" level=debug msg="ARE WE LISTENING ON THE SOCKET YET?<nil>"
time="2017-04-09T20:41:00+02:00" level=debug msg="socket was&{{0xc082024d80}}err was<nil>"
time="2017-04-09T20:41:00+02:00" level=info msg="UDP Server listening on <IP_ADDRESS>:9967"
time="2017-04-09T20:41:10+02:00" level=info msg="cannot contact instance listener... cleaning up previous if it exists.."
time="2017-04-09T20:41:10+02:00" level=debug msg="running VBoxManage command" command=[VBoxManage controlvm VboxUnikInstanceListener poweroff]
time="2017-04-09T20:41:10+02:00" level=debug msg="running VBoxManage command" command=[VBoxManage unregistervm VboxUnikInstanceListener --delete]
time="2017-04-09T20:41:10+02:00" level=info msg="compiling new instance listener"
time="2017-04-09T20:41:10+02:00" level=info msg="Build cmd for container projectunik/compilers-rump-go-hw:d1bfbc13602e306d" args=[run --rm -e ROOT_PATH=github.com/emc-advanced-dev/unik/instance-listener -e BOOTSTRAP_TYPE=nostub -v C:\Users\J\AppData\Local\Temp\vbox.instancelistener.521858927:/opt/code --name=460e3bc8-ca52-465c-9b5b-0024628089cb projectunik/compilers-rump-go-hw:d1bfbc13602e306d]
time="2017-04-09T20:41:10+02:00" level=debug msg="running command" command=[docker run --rm -e ROOT_PATH=github.com/emc-advanced-dev/unik/instance-listener -e BOOTSTRAP_TYPE=nostub -v C:\Users\J\AppData\Local\Temp\vbox.instancelistener.521858927:/opt/code --name=460e3bc8-ca52-465c-9b5b-0024628089cb projectunik/compilers-rump-go-hw:d1bfbc13602e306d]
time="2017-04-09T20:41:10+02:00" level=debug msg="time=\"2017-04-09T20:41:10+02:00\" level=info msg=\"Unable to use system certificate pool: crypto/x509: system root pool is not available on Windows\" "
time="2017-04-09T20:41:10+02:00" level=debug msg="docker: Error response from daemon: invalid bind mount spec \"C:\\\\Users\\\\J\\\\AppData\\\\Local\\\\Temp\\\\vbox.instancelistener.521858927:/opt/code\": invalid mode: /opt/code."
time="2017-04-09T20:41:10+02:00" level=debug msg="See 'docker run --help'."
time="2017-04-09T20:41:10+02:00" level=error msg="running daemon failed: [cmd/daemon.go:86] daemon failed to initialize: {[daemon/daemon.go:107] initializing virtualbox provider: {[virtualbox/virtualbox_provider.go:49] deploying virtualbox instance listener: {[virtualbox/deploy_instance_listener.go:39] compiling instance listener source to unikernel: {exit status 125}}}}"

My hostonlyif is VirtualBox Host-Only Ethernet Adapter and I don't seem to be able to change that name to something without spaces. (see http://discoposse.com/2013/07/13/virtualbox-for-windows-vboxmanage-and-interface-names/ )

i imagine regular windows cmd will fail in lots of places because we've got hard-coded file paths that assume a unix-ish directory structure. there are probably other problems with windows (we place unik config files in $HOME/.unik, not sure if this is problematic on windows or not).
I've never seen either of these errors before (neither Unable to use system certificate pool nor invalid mode. What version of docker are you running? Are you using Docker for Windows, or Docker-Machine? You may want to try Docker Machine

The Unable to use system certificate pool is a known docker bug. Harmless but annoying, it's promised to be fixed in the next docker toolbox release. I'm using docker-machine which is part of docker toolbox.
Docker toolbox comes with a mingw64 shell which has Linux commands like 'ls' etc and also can find $HOME/. unik
My biggest concern for now is the msg="cannot contact instance listener... cleaning up previous if it exists.." looking at the virtual box UI I don't see any activity while starting unik in daemon mode.
Docker daemon is running 17.04 , cli is running 17.03

The 'invalid mode' seems to come from the backslashes in C:\Users\J\AppData\Local\Temp\vbox.instancelistener.521858927 which need to be front slashes.

cannot contact instance listener is fine. unik is listening for the heartbeat of a previously existing instance listener for about 10s before compiling/deploying a new one. since you haven't built it yet, it won't be running.

Ah, that explains it, thanks.  I'm not a die hard Gopher but I'll see if I can get around the slash problem.

OK, I monkey patched container.go to adjust the volume path
I now get:
time="2017-04-11T19:15:35+02:00" level=info msg="compiling new instance listener"
time="2017-04-11T19:15:35+02:00" level=warning msg="volume for container
time="2017-04-11T19:15:35+02:00" level=info msg="Build cmd for container projectunik/compilers-rump-go-hw:d1bfbc13602e306d" args=[run --rm -e ROOT_PATH=github.com/emc-advanced-dev/unik/instance-listener -e BOOTSTRAP_TYPE=nostub -v /C/Users/J/AppData/Local/Temp/vbox.instancelistener.363633335:/opt/code --name=2973aadb-79dd-40eb-8c01-9fa9780e2286 projectunik/compilers-rump-go-hw:d1bfbc13602e306d]
time="2017-04-11T19:15:49+02:00" level=error msg="running daemon failed: [cmd/daemon.go:86] daemon failed to initialize: {[daemon/daemon.go:107] initializing virtualbox provider: {[virtualbox/virtualbox_provider.go:49] deploying virtualbox instance listener: {[virtualbox/deploy_instance_listener.go:39] compiling instance listener source to unikernel: {exit status 2}}}}"

In my tempdir I see 3 files:
-rw-r--r-- 1 J<PHONE_NUMBER> apr 11 19:16 /tmp/etilqs_2tAZXLfl0ScIMY5
-rw-r--r-- 1 J<PHONE_NUMBER> apr 11 19:16 /tmp/etilqs_vQ0UT8NgPFlltVq
-rw-r--r-- 1 J<PHONE_NUMBER> apr 11 19:16 /tmp/etilqs_bUQdB6hVLqR62tf

In virtualbox I don't see any new VM defined. Any clue on whats happening ?

are you running with --debug flag ?

Hm, I forgot the '--' :-(
Now I get:
time="2017-04-11T19:32:20+02:00" level=debug msg="x86_64-rumprun-netbsd-gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -o $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/_cgo_.o $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/_cgo_main.o $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/_cgo_export.o $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/gomaincaller.cgo2.o -g -O2"
time="2017-04-11T19:32:20+02:00" level=debug msg="/usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/github.com/emc-advanced-dev/unik/instance-listener.a -trimpath $WORK -p main -buildid 3c4f756e3fdd8b44b175dd9abca32673002cd6cd -D _/opt/go/src/github.com/emc-advanced-dev/unik/instance-listener -I $WORK -pack ./bootstrap_nostub.go $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/_cgo_gotypes.go $WORK/github.com/emc-advanced-dev/unik/instance-listener/_obj/gomaincaller.cgo1.go"
time="2017-04-11T19:32:20+02:00" level=debug msg="# github.com/emc-advanced-dev/unik/instance-listener"
time="2017-04-11T19:32:20+02:00" level=debug msg="./gomaincaller.go:33[/tmp/go-build453744241/github.com/emc-advanced-dev/unik/instance-listener/_obj/gomaincaller.cgo1.go:41]: **undefined: main"**
time="2017-04-11T19:32:20+02:00" level=error msg="running daemon failed: [cmd/daemon.go:86] daemon failed to initialize: {[daemon/daemon.go:107] initializing virtualbox provider: {[virtualbox/virtualbox_provider.go:49] deploying virtualbox instance listener: {[virtualbox/deploy_instance_listener.go:39] compiling instance listener source to unikernel: {exit status 2}}}}"

Could this be an indication that the tmpdir is somehow not mounted ?

Progress !
Docker is rather nasty on its volume parameters on windows it needs to be //c/... instead of /c/...., after fixing that I get:
time="2017-04-11T19:54:22+02:00" level=debug msg="Status: Downloaded newer image for projectunik/boot-creator:d0665c8793b16c51"
time="2017-04-11T19:54:23+02:00" level=debug msg="container_linux.go:247: starting container process caused \"no such file or directory\""
time="2017-04-11T19:54:23+02:00" level=debug msg="docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused \"no such file or directory\"."
time="2017-04-11T19:54:23+02:00" level=debug msg="time=\"2017-04-11T19:54:23+02:00\" level=error msg=\"error getting events from daemon: context canceled\" "
time="2017-04-11T19:54:23+02:00" level=error msg="running daemon failed: [cmd/daemon.go:86] daemon failed to initialize: {[daemon/daemon.go:107] initializing virtualbox provider: {[virtualbox/virtualbox_provider.go:49] deploying virtualbox instance listener: {[virtualbox/deploy_instance_listener.go:39] compiling instance listener source to unikernel: {[rump/rump-go.go:55] creating boot volume from kernel binary: {exit status 127}}}}}"

The problem seems to be:
time="2017-04-11T19:57:48+02:00" level=debug msg="running command" command=[docker run --rm --privileged -v //c/dev/:/dev/ -v //c/Users/J/AppData/Local/Temp/bootable-image-directory.055379070:/opt/vol/ --name=fe96bb2d-e282-46a5-b785-1910055f09e5 projectunik/boot-creator:d0665c8793b16c51 -d /opt/vol/ -p program.bin -a {"rc":[{"bin":"program","argv":["-prefix","unik_virtualbox","-enablePersistence"]}],"net":{"if":"vioif0","type":"inet","method":"dhcp"},"net":{"if":"vioif1","type":"inet","method":"dhcp"},"blk": {"source":"dev","path":"/dev/sd0e","fstype":"blk","mountpoint":"/bootpart"},"blk": {"source":"dev","path":"/dev/sd1a","fstype":"blk","mountpoint":"/data"}} -o boot-creator-result.img.480823749 -part=true]

Which tries to mount //c/dev/  which obviously is a linuxism
If this container really needs access to /dev devices then my attepmt ends here and it might be easier to run the whole thing in a Linux VM.


Status Text on Custom Label

Hello together,
I got the following variable in my custom label: item.status.
But i only get numerica value, e.x: 10
How do i display OK, Attention needed, Damaged?
Thx a lot :D

Hi,
I do not think this is a bug. Status codes are numeric values. All codes a are defined here:
InvenTree/InvenTree/status_codes.py

Can you try item.status.name or maybe casting it to a string?

@wolflu05 unfortunately .name does not work.
@SergeoLacruz I didn't submitted this as bug, so I thought it should be okay.
I already saw it defined there, however, I don't get how to access this status name.

I found it. It is item.status_label

Thank you @SergeoLacruz. Now it works like it should.
Should be added here https://docs.inventree.org/en/latest/report/context_variables/#stockitem


Workflow Execution Archival - Unexpected Behavior

Hi,
Started Conductor with
conductor.additional.modules | com.netflix.conductor.contribs.ArchivingWorkflowModule
I created a workflow with below definition (pasted at the end of the content).
It has workflowStatusListenerEnabled as true.
I triggered workflow execution and before it could complete, I terminated the execution.
Then I archived the execution. The execution was still shown in the execution history.
I tried to restart the workflowexecution (that was supposed to be archived) and it restarted successfully.
I repeated the same process till archival and this time instead of restart , I did a retry and the workflow execution got removed from execution history.
I have attached the entire steps followed, in screenshots below, from a management UI I developed. Please refer for clear picture of what was done, if the above explanation is not detailed enough.

Question 1 : Is an archived workflow supposed to be restured in the api response (/api/workflow/search , to be exact the api with parameters is /api/workflow/search?start=0&size=10&sort=updateTime:DESC) ?
If the answer is that the workflow execution should not get listed in api response, then please verify as it seemsto be returned.
Else if it still can be listed in api response
Question 1.1 : Is an archived workflow restartable ?
Question 1.2 : Why does the archived workflow disappear from the view / list in api response if a retry is tried on the archived workflow ?
Conductor Server version : 2.30.3
Database : MySQL / MariaDB
Elasticsearch : External - Version 5.X
Workflow Def JSON :
{"ownerApp":"Fillory UI","createTime":1600724802786,"updateTime":1601999353132,"createdBy":"Fillory UI","name":"Test Dec Case Workflow","description":"Decision Case Workflow","version":1,"tasks":[{"name":"Which Name?","taskReferenceName":"Task-1","description":"string","inputParameters":{"name":"${workflow.input.name}"},"type":"DECISION","caseValueParam":"name","decisionCases":{"Mahesh":[{"name":"Test Task","taskReferenceName":"Task-2","description":"Testing Task in Workflow","inputParameters":{"name":"${workflow.input.name}"},"type":"SIMPLE","decisionCases":{},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"rateLimited":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]}],"Deepthi":[{"name":"Test Task","taskReferenceName":"Task-3","description":"Testing Task in Workflow","inputParameters":{"name":"${workflow.input.name}"},"type":"SIMPLE","decisionCases":{},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"rateLimited":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]},{"name":"Test Task","taskReferenceName":"Task-4","description":"Testing Task in Workflow","inputParameters":{"name":"${workflow.input.name}"},"type":"SIMPLE","decisionCases":{},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"rateLimited":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]}],"Aishani":[{"name":"Test Task","taskReferenceName":"Task-5","description":"Testing Task in Workflow","inputParameters":{"name":"${workflow.input.name}"},"type":"SIMPLE","decisionCases":{},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"rateLimited":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]}]},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]},{"name":"Test Task","taskReferenceName":"Task-6","description":"Testing Task in Workflow","inputParameters":{"name":"${workflow.input.name}"},"type":"SIMPLE","decisionCases":{},"defaultCase":[],"forkTasks":[],"startDelay":0,"joinOn":[],"optional":false,"rateLimited":false,"defaultExclusiveJoinTask":[],"asyncComplete":false,"loopOver":[]}],"inputParameters":["name"],"outputParameters":{"message":"${Task-5.output.message}"},"schemaVersion":2,"restartable":true,"workflowStatusListenerEnabled":true,"ownerEmail":"abc@gmail.com","timeoutPolicy":"ALERT_ONLY","timeoutSeconds":0,"variables":{}}

@conductor-boot Archiving a workflow means that it will be removed from the primary datastore and will only be available in the secondary datastore (elasticsearch). This helps keep the primary datastore datasize in check.
Since these workflows are persisted in the ES index, these workflows will be available to be returned from the search endpoints and also for restart/retry operations.
Regarding the workflow disappearing from the list upon retry, can you please verify if you are running into any errors during archival process? Also, can you check your ES index to see if the workflow has been archived (this can be verified by checking for the rawJSON field in your document)?


iocage 1.0 added a column to iocage list -> unable to parse

iocage added the column 'Basejail' to the long-format list, which causes this plugin to fail with an unable to parse error.
A fix is to change this line like this:
-                (_jid,_name,_boot,_state,_type,_release,_ip4,_ip6,_template) = l.split('\t')
+                (_jid,_name,_boot,_state,_type,_release,_ip4,_ip6,_template,_basejail) = l.split('\t')

But that of course breaks the plugin for older versions of iocage

Get this on FreeNAS 11.2 which has iocage 1.0-ALPHA1:
fatal: [freenas.example.com]: FAILED! => {"changed": false, "msg": "unable to parse -\ttest\toff\tdown\tjail\t11.1-RELEASE-p6\tDHCP (not running)\t-\t-\n-\tunifi\ton\tdown\tjail\t11.1-RELEASE-p6\tDHCP (not running)\t-\t-\n"}

The latest FreeNAS now says it has iocage Version	FreeNAS 11.2-U4. That's a very odd version number.
Error:
The full traceback is:
WARNING: The below traceback may *not* be related to the actual failure.
  File "/tmp/ansible_iocage_payload_eM6XuB/__main__.py", line 151, in _get_iocage_facts
    (_jid,_name,_boot,_state,_type,_release,_ip4,_ip6,_template,_basejail) = l.split('\t')

 [WARNING]: The value True (type bool) in a string field was converted to
u'True' (type string). If this does not look like what you expect, quote the
entire value to ensure it does not change.

presumably also not a problem any more
@berenddeboer  could you please check with latest master?


⚠ Bofrost.be has degraded performance

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

HTTP code: 200
Response time: 1738 ms

Resolved: Bofrost.be performance has improved in 67d2e01 after 13 minutes.


Usesudo npm install -g vue-cli  ERROR

Failed, can not find the reason，error message like this(very thks):
971 verbose cwd /home/l0ady
972 verbose Linux 4.4.0-103-generic
973 verbose argv "/home/l0ady/node-v9.2.1-linux-x64/bin/node" "/usr/bin/npm" "install" "-g" "vue-cli"
974 verbose node v9.2.1
975 verbose npm  v5.5.1
976 error path /usr/local/lib/node_modules/vue-cli/node_modules/absolute
977 error code ENOENT
978 error errno -2
979 error syscall access
980 error enoent ENOENT: no such file or directory, access '/usr/local/lib/node_modules/vue-cli/node_modules/absolute'
981 error enoent This is related to npm not being able to find a file.
982 verbose exit [ -2, true ]

Hey, this error is not related to vue-cli but to your computer setup, you should be able to find solutions on stack overflow quite by using the error code