Update contributing guide

In the last dev meeting, @drammock and I discussed that our Contributing Guide may need an overhaul.
Right now, the guide is long, hard to navigate if you search for something, and hard to understand/follow for new contributors.
The topics discussed (in order) within one page are right now:
ways to contribute, configuring git, GNU make explanation, forking and upstream on GitHub, virtual environments, git commands, SSH with GitHub, documentation, API changes, changelog, local testing, test writing, coding style, naming conventions, docstrings, cross-referencing, code organization, testing, building documentation, MNE command-line tools, GitHub workflow.
While undoubtedly all of this is important, the info is overwhelming and switches between topics (which might make sense, again, if you are following while contributing, but it might be hard to connect the dots when reading this for the first time).
I propose to chop this up into several pages (make it feel less overwhelming, have information on one topic more bundled and use links to interconnect). Further, I propose to potentially have different versions for new contributors and advanced contributors. This could e.g. be realized by having bullet point summaries at the top (if you just need to read up on something you forgot) and then more detailed explanations further down.
TL;DR: Proposal to split the contributor guide into several pages and have sections that speak to the advanced contributor that just wants to look something up as well as sections that are easier to follow and give detailed explanation.

Works for me. One way to think of beginner vs advanced topics/pages might be to target the beginner one toward someone who quickly wants to make a one or two line fix, and not concentrating on telling them everything but just enough that they might get it right on the first try. If there is too much text people won't read it, so I think it's better to be brief but incomplete and hit on the most important points. To me that's: using a GitHub workflow, TDD, and adding changes to the change log. FWIW this is what I have to comment on in beginner contributor reviews most of the time. The rest (like style issues) CIs help with and people often self correct in-PR.
Then at the end of the beginner doc we could write "some problem with your PR? See the advanced page!" And there in advanced we talk about flake, Makefile, html_dev-noplot, etc.

Thanks for your input @larsoner - sounds good to me. I would also like to move some extra info out onto extra pages (e.g. how to use git) - so people can easily find it through links, but it does not add a wall of text. Would that be against the philosophy of how MNE handles webpages?
Yes, I already discussed with @drammock that I'd be happy to give this a go - but I will only have an hour here and there to work on it in the upcoming weeks (just as a disclaimer).
Should I post a page overview here before I get started?

I would also like to move some extra info out onto extra pages (e.g. how to use git) - so people can easily find it through links, but it does not add a wall of text. Would that be against the philosophy of how MNE handles webpages?

No I think that's fine. And even better I think would be to link to some standard tutorials for how to use git and how to set up a standard GitHub workflow. NumPy/SciPy/Pandas etc. all use the same workflows I think so I'd look to see what they link to. Or if they have docs of their own, just say "follow this but for MNE instead"...

Should I post a page overview here before I get started?

If it's 10 minutes to copy-paste and open a PR where we can just look at the built docs instead then that's better. But if it's going to be 1h+ of work for the first version then sure we can think through here some more

I would also like to move some extra info out onto extra pages (e.g. how to use git) - so people can easily find it through links, but it does not add a wall of text. Would that be against the philosophy of how MNE handles webpages?

No I think that's fine. And even better I think would be to link to some standard tutorials for how to use git and how to set up a standard GitHub workflow. NumPy/SciPy/Pandas etc. all use the same workflows I think so I'd look to see what they link to. Or if they have docs of their own, just say "follow this but for MNE instead"...

For now I'd say keep whatever we already have on "how to use git" (though +1 to move it to a separate page). IMO pointing users to e.g. the Pandas docs is not great, and will take extra effort to make sure that what we're pointing them to is indeed equivalent to what we want (and stays that way). For the longer term, I'll bring this up as something that can be addressed at the level of the Scientific Python org (creation of a package-agnostic "how to use git to contribute to scientific python projects" tutorial) that all the projects could link to.

For ref it looks like NumPy has a basic page that then links to advanced stuff
https://numpy.org/doc/stable/dev/index.html

I worked on an outline for the refactoring of the contributing guide. This is probably not complete yet - rather than the details, I'd like to discuss high-level structure now (the low-level content is more to give you an idea).
The big changes I propose are:

split the page in many subpages
have a workflow overview
have a contribution checklist that can be consulted at different steps of the process and that links to the more detailed descriptions.

The difference between the workflow overview and the **checklist **would be that the overview explains what will happen during the contributing process, while the checklist should only list the responsibilities of the contributor before taking a certain step (i.e. that would also be useful for people who do not need an in-depth explanation).
Note: the numbering below is just to make it clear which site references which.
0. Getting started

Quickstart button: links to 5. contribution checklist
Types of contributions
Rules (Code of Conduct etc)
How to get support if needed

1. Workflow overview

Overview of the workflow from installation to testing, with links to more in-depth explanations
Satellite page: git and GitHub

2. Setup: dev. environment

git configuration (linking satellite page from 1.)
virtual environment with dev. version of MNE
IDEs (cf. #11615)
other tools to install
GNU make

3. Coding conventions

Code organization
Naming conventions
Cross-referencing
MNE conventions
API changes
Documentation/docstrings
test coverage (link to 4. Testing)
Deprecations
changelog

4. Testing and building documentation

writing tests
local testing: running the test suite
building the documentation
modifying command line tools

5. Contribution checklist
This is supposed to be a reference for anyone, from beginner to frequent contributor: a checklist to see if everything for the next step is considered, linking to more in-depth-info if a reminder is needed.
—> for each of the points below, link applicable parts in 0.-4.

before coding

e.g. should I even open a PR?, coding conventions

before opening a PR

e.g.  testing, test coverage, DRAFT PRs

before pushing new changes

e.g. considering which CIs to skip, merging upstream/rebasing

before asking for merge

changelog, names.inc

Looks reasonable to me!

my main comment is about the git "satellite" page (or "orphan" page in rST speak).  The main downside of such pages is that they take you out of the linear flow, which means they don't automatically get next/prev links at the bottom of the page. However: given that we hope to eventually outsource the git tutorial page (i.e., to a generic scientific-python page about git) I guess there's really no harm in having our git page be an "orphan" in the meantime.
Also wondering where the "should I even open a PR" content should go.  It appears in the checklist, but that's supposed to be just a link back right?  Does it go in section 0, maybe between "rules" and "how to get help"?

@drammock
Mh, I can see the concern about the orphan page ... Apart from the reason of it being outsourced in the future, I was also driven by my inner conceptualization that this does not necessarily fit into the flow anyway - you have to know/learn about git and GitHub at different places in the workflow, but it still might be beneficial to have all git/GitHub resources bundled in one page.
But I have no strong opinion here - happy to have it in a linear flow as well.
Regarding the "should I even open a PR" content: I loosely bundled it with "Ways to contribute" for now (that is where it's discussed right now), but I agree that it might make sense to make it a bigger/its own bullet point.

Also relevant: https://github.com/mne-tools/mne-python/issues/9572

Also relevant: https://github.com/mne-tools/mne-python/issues/6266

Thanks @larsoner - after my summer of travelling™  comes to a close, I will put this back on the plate.

Maybe for a lot of stuff we can point to
https://learn.scientific-python.org/development/
And then "just" list our local conventions?


Navigation issue on Windows 10

OS: Windows 10 Pro
Browsers: IE Edge, Google Chrome (Version 53.0.2785.143 m (64-bit)), Opera (version 41.0.2353.46 (64-bit)), Firefox (version 50.0b10 (64-bit))
NPM: 3.8.6
Gulp: CLI version 3.9.1, Local version 3.9.1

Steps to reproduce
Update fork (master) to latest upstream commits (ava to jest)
Run gulp
Navigate to locahost:3000
Expected Behavior
Clicking main navigation links loads the corresponding page data.
Actual Behavior
After a menu item is selected the url reflects the selected menu choice, but the corresponding page data is not loaded. 'Pages' are only loaded correctly after the cursor is placed in the url bar and return is hit.
See attached image

Does https://este.firebaseapp.com/users works?

Yes, users, as well as all the other menu options work, but only after you have placed the cursor in the url bar and hit return.

I believe steida ment the actual website. If it doesn't work for you it could be a problem with your browser and not the other parts of your setup.
I'd recommend you to update your setup (node, npm) and try it again.
Could you post the console log too?
I'm also using W10 and it works for me.
But be aware that building doesn't work properly(missing assets) with Windows, it gets the assets paths all wrong(tried to debug this but I guess this is 'webpack-isomorphic-tools' fault, so leave it be). If someone is having this issue too, just set up linux somwhere somehow and use it to build your app.

@degroote22 "I'm also using W10 and it works for me" Did you merge the latest upstream commits into an existing project (master), or did you git clone directly from the latest este release?
I ask as I did the former and suspect something got lost in the wash.

Well, I cloned it... Perhaps you're right. :)

@TheoMer Try npm install instead of yarn. Maybe it will solve your problem.

@steida Yes, a fresh install did the trick. Thanks.


Add PostgreSQL range types support

Hi, all!
I tried to add Postgres range types support described in #234
Please comment as much as need it.
TO-DO:

[x] Fix failure on the test build with JRuby
[x] Add range operators
[ ] Add test for range functions

I checked other PG libraries (Postgrex, Sequel) and now I think that this format for Range type values will be better:
module Values
  Range = Struct.new(:lower, :upper, :lower_inclusive, :upper_inclusive)
end

WDYT?


fixed error on building

fixed following error on build:
/PerfectTemplate/Packages/PerfectHTTPServer-2.0.1/Sources/PerfectHTTPServer/HTTPServer.swift:2                }
26:29: error: cannot convert value of type 'Int' to expected argument type 'Int32'
_ = setsockopt(net.fd.fd, IPPROTO_TCP, TCP_NODELAY, &flag, UInt32(MemoryLayout.size))
^~~~~~~~~~~
Int32(     )
:0: error: build had 1 command failures

This problem snuck in but was fixed pretty quickly. Please remove that Packages/PerfectHTTPServer-2.0.1 folder (or swift build --clean=dist) and build again. The updated version should build without error. Thank you - K

Yup, it's good now.  Thanks!


Update dependency versions and remove unneeded dependency

I see that the linter is failing in the pipeline saying that eslint-plugin-deprecation is not installed despite being included in the recommended packages for itwins. This is not affected locally and started after the initial commit. Perhaps the version update to @itwin/eslint-plugin or removing @itwin/core-bentley is causing the issue? Is a similar problem occurring for other projects

@SpencerWBarnes figured this out, the one pipeline I updated had the install dependencies before we actually installed pnpm so it wasn't working correctly. Should be working now.


Routes rules should allow regex matchers

Describe the feature
For example, I have two routes, users/add and users/edit and I want to set ssr:false for both, right now, I have to define them both separately like this:
'/users/add/**': {
    ssr: false,
  },
'/users/edit/**': {
    ssr: false,
  },

What would be nice is to be able to do this:
'/users/(add|edit)/**': {
   ssr: false,
 }

Additional information

[X] Would you be willing to help implement this feature?
[ ] Could this feature be implemented as a module?

Final checks

[X] Read the contribution guide.
[X] Check existing discussions and issues.

let's track in https://github.com/unjs/radix3/issues/51.


screenshader: rename output uniform to monitor

Describe your PR, what does it fix/add?
I recently switched my GPU from NVIDIA to AMD and for some reason the output screenshader uniform no longer works because it's considered a reserved word:
[wlr] [GLES2] 0:4(13): error: illegal use of reserved word `output'
[wlr] [GLES2] 0:4(13): error: syntax error, unexpected ERROR_TOK, expecting ',' or ';'

Renaming the uniform to monitor fixes it.
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
Assuming this affects all AMD GPUs, it's probably safe to assume that very few people use this feature so hopefully it shouldn't be too disruptive?
Is it ready for merging, or does it need work?
Ready

it'd be better to use something like wl_output then.


On first getting started, cannot find dotnet without a relaunch

When I'm first getting started with the extension and dotnet/C# in general, following https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code, I get these errors even after installing dotnet and ensuring it is in my path. Upon relaunching (not reloading) VSCode, I was able to proceed. It seems the extension is not able to find dotnet on my path if it was added during the session.
Environment data
dotnet --info output:
.NET Core SDK (reflecting any global.json):
Version:   3.1.100
Commit:    cd82f021f4
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.14
OS Platform: Darwin
RID:         osx.10.14-x64
Base Path:   /usr/local/share/dotnet/sdk/3.1.100/
Host (useful for support):
Version: 3.1.0
Commit:  65f04fb6db
.NET Core SDKs installed:
3.1.100 [/usr/local/share/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
VS Code version: 1.41
C# Extension version: 1.21.9

@JacksonKearl Correct. You will need to restart VS Code, this isn't really something this extension can do anything about - VS Code doesn't re-query the environment after the .NET Core installer adds it to the path.
Is there anything that we could in either docs or this extension to better let you know that you need to restart Code? I have wondered before if maybe that error message should link to a troubleshooting page that talked about this scenario.

I am on the VS Code team, can you explain where you'd expect the environment to be re-queried that isn't happening? I would expect you'd be able to trigger a re-query of the environment on opening a C# file or attempting to run/debug.

First some background: there are lots of different tools that need to launch dotnet. They all search for it using the PATH environment variable. This extension doesn't try to do anything fancy to try and find it because that might fix it for this extension, but it wouldn't fix all the other stuff.
Now, if we wanted to support scenarios where the user installs a new SDK and it lights up in VS Code without a restart, we would need a new feature in VS Code to update the environment when it is modified by another installer (or the user). VS Code would need to monitor the various files that are used to modify the environment (if you are interested, we can find a .NET Core setup person to comment on how they do this to at least cover the ones they use) and re-query the environment when one of these files are modified and update all of the various VS Code processes. I think this is the code that VS Code uses to fetch the environment: getUnixShellEnvironment)

I see this each time the extension updates, with the Output for C# showing Failed to spawn 'dotnet --info, despite dotnet being in my path, and dotnet --info running successfully in the VS Code terminal.
Restarting VS Code resolves.
Below details where captured when the extension updated today, 12/19/2019.
C# log
Installing C# dependencies...
Platform: darwin, x86_64
Downloading package 'OmniSharp for OSX' (44721 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package 'OmniSharp for OSX'
Downloading package '.NET Core Debugger (macOS / x64)' (51272 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package '.NET Core Debugger (macOS / x64)'
Downloading package 'Razor Language Server (macOS / x64)' (50263 KB).................... Done!

I am going to close this issue since it isn't really about this extension. Note that I am adding a help link to the error message that does mention this problem with #3507.


Update Compliance verification GCDP endpoints version

Good stuff Glen. Could you change the destination to develop instead of master?

Update to Develop branch now.

Cheers Glen. I'll hold off releasing it for a few weeks in case any other services are updated.

@glencollins18888 So in the app do we only use v5.0 for the 2 GCDP products? What about the other products available on the Compliance Verification service like GBO/SO?

Yes Paul at the moment we only use v5.0 for GCDP calls. GBO and so are still on v1 I think.


[Issue-13782] Add Search RBAC config option in settings

Describe your changes:
Part of Issue-13782
https://github.com/user-attachments/assets/568fe21b-2578-4742-b664-d5324c69bb1a

I worked on ... because ...

Type of change:

[ ] Bug fix
[ ] Improvement
[ ] New feature
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

@chirag-madlani can someone take this up from UI we need to a simple setting with a toggle under Settings -> Access Control -> RBAC Search cc @harshach

@chirag-madlani can someone take this up from UI we need to a simple setting with a toggle under Settings -> Access Control -> RBAC Search cc @harshach

Having just a toggle in a page will not look good. will check with @Rupchavan here tomorrow

@chirag-madlani lets addd beta flag around the search rbac setting in UI

Duplicate #18338


[Feature] Add sync_id to stg_fivetran_log__log

Is there an existing feature request for this?

[X] I have searched the existing issues

Describe the Feature
Add the sync_id field to the stg_fivetran_log__log model. This would be useful for quickly identifying which sync events are associated with.
Describe alternatives you've considered
No response
Are you interested in contributing this feature?

[X] Yes.
[ ] Yes, but I will need assistance and will schedule time during your office hours for guidance.
[ ] No.

Anything else?
No response

Hi @camcyr-at-brzwy thanks so much for suggesting this feature request!
I think this would be a great addition to the package and I see the value of being able to leverage the sync_id in the log models. I noticed you are interested in contributing this feature! If you would like to open a PR to contribute this new field I would be happy to review your PR and work with you to integrate your contribution into the next release.
Let me know if this would be of interest to you. Otherwise, my team can work to fold this into an upcoming sprint.

Hey @fivetran-joemarkiewicz! Wanted to let you know that I just opened this PR to make this change.

Thanks so much @camcyr-at-brzwy! I will review your PR in our current sprint and will let you know if I have any comments or suggestions directly in your PR 😄

Thanks again for opening this feature ad contributing to the package! This feature is now live in the latest release of the package.

@fivetran-joemarkiewicz Awesome! Glad I could help out and super excited that this is live.


0x Permit2  Spike and then send it

0x launched their new API. They sent us all this documentation about saving people gas and making the UX better. This ticket covers picking up a more secure pattern for token allowances on the 0x swapper.
It's basically: replace approval with permit2 for the 0x swapper.
Consider it low priority but worth picking up. Should only use the pattern for permit2 since allowance holder requires double transaction flows.
from smart contract lore, a good overview: https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/permit2
0x docs: https://0x.org/docs/upgrading/upgrading_to_swap_v2#step-1-get-indicative-price
Headless example: https://github.com/0xProject/0x-examples/blob/main/swap-v2-headless-example/index.ts#L62-L83

@reallybeard it's simple and we already have this,  but a mock or two here would be super helpful.
0x is nagging us about upgrading to v2 so we might as well see where we're going. Just to round it out.

Questions to answer:

[ ] Can we wrap all of the swappers in Permit2 or does the protocol need to support Permit2 for it to work?

@woodenfurniture going for extra credit.
vomited thoughts for now https://excalidraw.com/#room=57937cdcd3d70f535ad4,MgzvO8mKR_lRaC18ncX2-g

waiting for UI help from @reallybeard

Was having trouble getting this to run correctly on my local env. But I went through the different jams. Everything looks great, only small feedback is to move the instructions below the label. @woodenfurniture
Crappy screenshot attached.


Wip fpc rfc

Final review of Updates on the FPC RFC before pushing it out to fabric-rfc repo

I approve these changes once #12 is merged!


Update http3.php

https://youtrack.jetbrains.com/issue/WI-45684

There have been lots of fixes. The current version generated from docs is available here:

https://github.com/mdref/mdref-http


Hi. how to contact with you?

Hi. how to contact with you?

hi is there any issue regarding the library?


Feat: CLI makes WebOps Evergreen + Vercel

What's the purpose of this pull request?
This PR aims to power our CLI to make changes that permit our starter.store works using WebOps and Vercel.
How it works?

[x] Adjust Lighthouse BASE_SITE_URL.
This env var is read inside WebOps and makes LH runs using the correct site URL. Since previously this was set inside the faststore.config.js and this file was copied just in build time, the fallback (localhost) had been used and makes webops LH fails. Now we are fixing this var by default in faststore LH package directly.
[x] Copy resources to the correct folder (usually the root) in build time.

faststore.config.js - The merged version (core + customizations) with cypress, lighthouse, and other necessary configs.
/public - public assets + partytown.
vtex.env - WebOps env vars.
❓ Question ❓: keep this copy in build time, or should this live in the starter.store project from the very beginning? so far, we are copying.   now it lives in the start.store.
lighthouserc.js - LH configs.
cypress - cypress setup.
node_modules inside .next/standalone folder.
The faststore-ci-cd image (WebOps) uses next standalone mode. This mode makes the project lean, but some libs were missing, so we need to copy this folder. next standalone reference.

[x] removes the default module from the faststore.config.js merge step and uses stringifyObject instead of JSON.stringfy. This turns the file better to read and avoids duplicated values.

Before
After

[x] Removes engines from the package.json.

"engines": {
    "node": ">=16.0.0"
  },

WebOps uses deno and node to make its pipelines run. We are using AbortController in our CLI that was introduced in node 15 and deno 1 (reference). Removing this engines section makes webops able to work.
How to test it?

you can run locally by running yarn build inside the cli package, adding the bin folder to your $PATH, and running run dev inside the starter.store. (how to guide)
you can use this PR to test it.
you can install @faststore/cli globally and test the faststore commands (build, dev, start) in starter.store repo.

npm install -g @faststore/cli

starter.store PR
https://github.com/vtex-sites/starter.store/pull/12
References
https://nextjs.org/docs/advanced-features/output-file-tracing#automatically-copying-traced-files
https://developer.mozilla.org/en-US/docs/Web/API/AbortController#browser_compatibility
https://www.cyberciti.biz/faq/appleosx-bash-unix-change-set-path-environment-variable/

Agree with you! now, vtex.env lives in the starter.store since the beginning.


Add keyboard navigation to Croppie

This does two things:

Makes it so a user can focus on the viewport using their keyboard.
Makes it so a user can move the image around in the viewport using their keyboard.

Rationale: Some users are not able to use a mouse to navigate the web. In order to be inclusive and to adhere to the Americans with Disabilities Act best practices, all mouse actions should also be able to be accomplished using a keyboard.
Also, you can already use the zoom bar using the keyboard so for continuity it makes sense to add keyboard controls to the viewport navigation.

I love this idea!  Thanks for the PR.  I'll clone it and run through it as soon as I can.
Just a thought, did you consider enable zooming with the keyboard as well?  I assume it works when you tab to the zoom slider, and maybe that's enough.  But what if you could press Ctrl+Up/Down and that would zoom in and out...

I didn't consider that as there was already the existing functionality, but I think that could be a good addition as well. I'll see about adding that to the PR in the next day or two.

Updated to include keyboard zoom functionality within the viewport. I ended up using Shift + Up/Down as Ctrl+ Up/Down appears to be used by operating systems for different shortcuts and saw no reason to override that.

Sorry for the delay in response - was out of town for the week.  I plan on merging this one in this week and releasing it.  Thanks again!

Again, this is awesome.  Thanks.  I can see how it'd be useful to configure the step size when adjusting the position and zoom using this method, but I love having this functionality in there.


Update WinForms Form.CancelButton Remarks

Describe the issue or suggestion
See the WinForms issue https://github.com/dotnet/winforms/issues/11537
Can we please update the docs on Form.CancelButton so that its obvious that the buttons DialogResult is set to DialogResult.Cancel when there isn't a value present. It should also mention that if its set to anything, then that value will take precedence.

@merriemcgaw are you talking about the API docs?

I will have to check that. There's both the regular API docs and there's some How To pages that might be applicable.


[HUDI-5162] Allow user specified start offset for streaming query

Change Logs
Add new configure: hoodie.datasource.streaming.startOffset to allow users to specify start offset
Impact
Should not affect users as it keeps the default behavior to fetch earliest offset if users don't set the configure.
Risk level (write none, low medium or high below)
low
Documentation Update
Describe any necessary documentation update if there is any new feature, config, or user-facing change

The config description must be updated if new configs are added or the default value of the configs are changed
Any new feature or user-facing change requires updating the Hudi website. Please create a Jira ticket, attach the
ticket number here and follow the instruction to make
changes to the website.

Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

@nsivabalan @YannByron can take a look now, the CI passed

@hudi-bot run azure

Nice work. Looks good, just leave two comments to solve.

@hudi-bot run azure

Hey @YannByron All comments are addressed. Please take a look.


multiple FU-A groups in a h264 frame, does baresip support?

I code a private codec module which uses the mediacodec of java sdk to ecode/decode by jni. I use a echo session to test video quality.  The decode quality is too bad. The remote view from echo session caton.
I found the 264 encoded by java's mediacodec  have multiple FU-A groups in a h264 frame. Usual a h264 frame has only a FU-A group. Dose baresip's parse code support multiple FU-A groups in a h264 frame.

can you share your *.264 binary files ?
also, what operating system are you using, which version of ffmpeg etc.
Alfred

your encoder is probably sending STAP-A packets
(Single Time Aggregation Packet):
https://tools.ietf.org/html/rfc6184#section-5.7.1
this is not supported, it is part of packetization-mode=1.
you can try to configure your encoder to use packetization-mode=0 (mandatory).
packetization-mode 1 is on the roadmap, we will try to add it
when we have some time for that:
https://github.com/alfredh/baresip/wiki/Roadmap


Semantinc error reporting

Detecting errors as soon as possible is pretty important because reduces development times (editing -> compiling -> running).
As far as I know currently just are detecting at editing time syntax errors and some errors related to failed resolving class or instance names. But there are a lot of other semantic errors.
For example:
var a = 10;
a = "hello";

Is syntactically correct, doesn't have problems resolving names, but it is invalid. You cannot reassign a variable that has type int with a string.
Other example:
interface Test1 { function a(); }
class Test2 implements Test1 { }

Test2 doesn't implements Test1 methods.
Other more example:
for (n in 10) { trace(n); }

Int doesn't conform the Iterable typedef.
So it would be great to be able to detect those kind of errors.
In order to do that, we need a new phase, that should be executed (if doesn't exist yet) after opening a file or after editing a file, and after the file and dependent files have been parsed so we have context information (can resolve any referenced type and check members).
Do you know how it would be possible to trigger that event in intelliJ? I think I could do the code that checks these semantinc errors, opening a new kind of error reporting so we can improve it bit by bit.

I have found Annotators: https://confluence.jetbrains.com/display/IntelliJIDEA/Annotator
So probably that will be the way to go. It should work fine directly for detecting inheritance issues, but not sure about detecting in-method issues. I will think and will experiment about that.

Yeah, it's annotators

Do you know how it would be possible to trigger that event in intelliJ? I think I could do the code that checks these semantinc errors, opening a new kind of error reporting so we can improve it bit by bit.

Of course it's possible, and it's great, I can help you with implementation, it's exciting to me but there are some pretty critical issues there, for example honestly it's hard to do macro stuff and use HaxeFlixel(because of generics) and there are basically tons of things to do, and I am responsible for refactoring features also.
I will write a basic instruction if someone wants to do it
Basically you can implement it yourself if you want, there is great guide on that:
http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support/annotator.html
Basically copy that annotator from sample, and
interface Test1 { function a(); }
class Test2 implements Test1 { }

For this case, you may want to:

Iterate through classes
Get inheritor of each class, for start you can start with single inheritor, there is helper function for that
Get/resolve inheritor, for start do only if it's instanceof HaxeInterfaceDeclaration or so
There is function to get methods of class/interface, so basically check if methods are implemented.
Show annotation (just like in sample)

You can event add quick fix for it like Implement missing methods stuff like JetBrains did for Java

I know that preprocessor and macros limit a lot refactoring and makes things harder for IDEs. Some years ago I used D language. It was powerful because of the macros, but compilation times were crazy on a very very large project I did that used a lot of macros and compile-time generation code. Also disallowed to do incremental compilation, and the complexity made a IDE hard. So I had a bad experience with preprocessor. I was using it for generating code, but people is using preprocessor in haxe to implement lack of features: like generators, async, value-object constructors. So I don't like preprocessors and I like more generating code at runtime when it is possible or other ways of doing things.
D at least didn't had preprocessor, but a "static if" http://dlang.org/version.html that didn't break the syntax of the language. But since you can use the Haxe preprocessor everywhere, a generic parsing without knowing the preprocessor declarations is very hard and prone to errors and bugs.
So probably the things I like less from haxe are: preprocessor, macros, no DRY getters, constructors without being able to create fields and lack of generatords and await...async.

Regarding to generics I think that we can ride that.
I have already used annotator today.
https://github.com/soywiz/intellij-haxe/commit/77148d5435749097ce511dc04b737866a7de13c8
I have already done a small semantic error reporting. It checks if the package element matches the folder. I was not able to detect where are the source roots so it is not perfect, but at least it is a start.
Since the annotator runs  for each psielement. I am doing thte analysis just once and then displaying the stored errors as userData.

@as3boyan
I have implemented package fixer. It checks the source content roots to determine the right package:

But I have a problem. I should detect content root of haxe std, and maybe libraries. Is there code to query for those folders?

std is a content root, and if I got it right, then it should be present in the SDK, we used to work with such paths when we worked on haxelib discovery feature, which detects used libs from project.xml/hxml/project arguments and adds it to it

We used to get classpath list for module, https://github.com/TiVo/intellij-haxe/blob/ef4e8880f37269e43d7413bf98427d98853fe56d/src/com/intellij/plugins/haxe/haxelib/HaxelibManager.java#L85
Not sure how to make it for sdk
https://github.com/TiVo/intellij-haxe/issues/17

there are should be way to get content root
BTW, great work

Regarding to source roots, I have been managed to get the sdk source roots. Probably still require some work for libraries, but at least it is a step forward.
Furthermore to method and field type detection (you can return a constant field and the constant will be propagated) I have implemented override errors.

There is a file HaxeLibRootDetector which does some of that.
We also implemented HaxelibClasspahtUtils, which has a number of useful functions that all use the locally installed 'haxelib' executable to find the libraries as the compiler does.  Of particular note are getProjectLibraryClasspath() and getSdkClasspath().

Note for me:
class Test extends BaseTest { public function new() { } } // Here
class BaseTest { public function new() { } }

Informs wrongly that it requires an override, i have to check if it is the constructor. Also I should enforce a super(); in the case the parent class has a constructor.
With a bit more of work I will be able to check function calls too to ensure signature.

I have fixed that in the last commit and also checked that you are not trying to override static or inline methods (I have to check @:final too) and that you are not changing the visibility when overriding.
I should check that wew don't have things like "public public" or "public private" (that modifiers are not repeated or that you are not using severals of the same category like public/private)

I have added code that checks if a class is implementing an interface

I want to add a quick fix to implement them. I have seen that there is HaxeImplementMethodHandler, but the code is a bit coupled as I have seen. There is reusable code that with a psielement of a class + psielement of interface methods, I can generate code for those methods?

Awesome
Code for https://github.com/TiVo/intellij-haxe/blob/ImplementNestedFunctionTypesSupport/src/common/com/intellij/plugins/haxe/ide/generation/OverrideImplementMethodFix.java - may be some parts can be reused, perhaps we can make an util class.
https://github.com/TiVo/intellij-haxe/blob/ImplementNestedFunctionTypesSupport/src/common/com/intellij/plugins/haxe/ide/generation/CreateGetterSetterFix.java Seems to work in a similar way.
https://github.com/TiVo/intellij-haxe/blob/ImplementNestedFunctionTypesSupport/src/common/com/intellij/plugins/haxe/ide/generation/BaseCreateMethodsFix.java#L88-88 - seems to be heavily used for most method generating actions.
HaxeElementGenerator class I used a lot when I implemented some refactoring features(push up/push down) basically it used to work in a same way. But I got an issue with formatting, I don't really understand how it works for getter/setter and override/implement methods action, not sure, can't find code for it there, not sure.
You prepare text code, then pass it to HaxeElementGenerator puts it in some sandbox(creates dummy file and parses it I guess), and returns members.
In push up refactoring, we generate method in interface from a class, I used something like this
methodCopy = HaxeElementGenerator.createFunctionPrototypeDeclarationWithAttributes(myProject, methodCopy.getText().trim() + ";");

Basically it does same thing - generates method from text.
Looking at OverrideImplementMethodFix - there is should be some way to call it or activate, I think.....

I should check that wew don't have things like "public public" or "public private" (that modifiers are not repeated or that you are not using severals of the same category like public/private)

That can be (and some of it is) enforced in the BNF.
What's a bit more interesting is that visibility rules in Haxe override the stated visibility by the code.  That is, the 'private' keyword is redundant and ignored in most places.  http://haxe.org/manual/class-field-visibility.html.  That is something that can't be enforced in the BNF, but might be useful for developers to know.

A lil bit offtopic: I got a funny glitch in IDEA http://i.imgur.com/hDId6mv.png

:P I didn't read this. So intelliJ is now owning browsers too.

I'm closing it, since it is partially implemented. And I would create issues for false-positives and for specific errors that are not reported at this point.


How can I change the platform of inferred Datasets?

We have DataHub collecting data from Trino and Looker, which leverages some of those tables. When looking at dashboard lineage, I can see that the looker dashboards point to Presto datasets instead of the desired Trino ones.
I'm wondering if there's a way for me to change those inferred Dataset's platform so that they get mapped to the Trino datasets instead, is that possible?

I just had to make an issue to figure it out 🤣
I was able to change the connection mapping to Trino in my looker ingestion configuration, which resolved this for me. Now I can see duplicates for each table but I'm hoping they go away after the ingestion completes. Otherwise I can deprecate manually.


feat: optionally strip tracking parameters from final URL

Closes #2
I'm an absolute noob with JS/TS, so hopefully this isn't too awful 👀

Merge PR commit:
https://github.com/seadfeng/redirect-checker/commit/992c3adeb9ea382060deae8a73d79e7dbc0bbbf6


adding a redundancy to setting csv string

Why is this necessary? It's going to cause a StringBuilder to get built on every single put on the backend. I'm not sure you want this. My guess is that something isn't calling eof. You might want to hunt down that instead of doing this.


feat: move social tiles to the theme

Related issues
Fixes #1736
Short description and why it's useful
See issue
Screenshots of visual changes before/after (if there are any)
Contribution and curently important rules acceptance

[x] I read and followed contribution rules
[x] I read the TypeScript Action Plan and adjusted my PR according to it
[x] I read about Vue Storefront Modules and refactoring plan for them

cna you please include this change in upgrade notes?

Done, fixed the store to be namespaced, and it's not extending the product store anymore


Updating docs for upgrades

Updating upgrade docs to reflect the current status of juju work.

This change is

/assign

Thanks, @heckj. I didn't know about the plan to remove Latin abbreviations.

/approve
/lgtm


hipconfig seems missing some package dependency

When manually installed HIP according to here: HIP-Installation. And run the following command:
/opt/hip/bin/hipconfig --full
shows:
HIP version  : 4.2.21155-37cb3a34

== hipconfig
HIP_PATH     : /opt/hip
ROCM_PATH    : /opt/rocm
HIP_COMPILER : clang
HIP_PLATFORM : amd
HIP_RUNTIME  : rocclr
CPP_CONFIG   :  -D__HIP_PLATFORM_HCC__= -D__HIP_PLATFORM_AMD__= -I"/opt/hip/include" -I"/opt/rocm/llvm/bin/../lib/clang/12.0.0" -I/opt/rocm/hsa/include

== hip-clang
HSA_PATH         : /opt/rocm/hsa
HIP_CLANG_PATH   : /opt/rocm/llvm/bin
clang version 12.0.0 (https://github.com/RadeonOpenCompute/llvm-project.git b204d7f0cae65b6cd4446eec50fc1fb675d582af)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/rocm/llvm/bin
LLVM (http://llvm.org/):
  LLVM version 12.0.0git
  Optimized build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: znver1

  Registered Targets:
    amdgcn - AMD GCN GPUs
    r600   - AMD GPUs HD2XXX-HD6XXX
    x86    - 32-bit X86: Pentium-Pro and above
    x86-64 - 64-bit X86: EM64T and AMD64
hip-clang-cxxflags : Can't exec "/opt/rocm/bin/rocm_agent_enumerator": No such file or directory at /opt/hip/bin/hipcc line 592.
Use of uninitialized value $targetsStr in substitution (s///) at /opt/hip/bin/hipcc line 593.
Use of uninitialized value $targetsStr in split at /opt/hip/bin/hipcc line 599.
 -std=c++11 -isystem "/opt/rocm/llvm/lib/clang/12.0.0/include/.." -isystem /opt/rocm/hsa/include -isystem "/opt/hip/include" -O3
hip-clang-ldflags  : Can't exec "/opt/rocm/bin/rocm_agent_enumerator": No such file or directory at /opt/hip/bin/hipcc line 592.
Use of uninitialized value $targetsStr in substitution (s///) at /opt/hip/bin/hipcc line 593.
Use of uninitialized value $targetsStr in split at /opt/hip/bin/hipcc line 599.
--driver-mode=g++ -L"/opt/hip/lib" -O3 -lgcc_s -lgcc -lpthread -lm -lrt

=== Environment Variables
PATH=/home/yimin/anaconda3/bin:/home/yimin/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

== Linux Kernel
Hostname     : yimin-System-Product-LatexWorkstation
Linux yimin-System-Product-LatexWorkstation 5.4.0-050400-lowlatency #201911242031 SMP PREEMPT Mon Nov 25 01:44:43 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic

it says: Can't exec "/opt/rocm/bin/rocm_agent_enumerator" ...... , how to fix it?

Thanks @terU3760 for reaching out.
I will definitely help you, let me take a look.
Thank you.

Hi @terU3760
Looking at the error message, found that HIP installation did not go well.
/opt/hip/bin/hipcc is a wrong path from the error message you pasted.
Make sure that once HIP installed successfully under /opt/rocm/hip
hip-clang-cxxflags : Can't exec "/opt/rocm/bin/rocm_agent_enumerator": No such file or directory at /opt/hip/bin/hipcc line 592.
Use of uninitialized value $targetsStr in substitution (s///) at /opt/hip/bin/hipcc line 593.
Use of uninitialized value $targetsStr in split at /opt/hip/bin/hipcc line 599.
-std=c++11 -isystem "/opt/rocm/llvm/lib/clang/12.0.0/include/.." -isystem /opt/rocm/hsa/include -isystem "/opt/hip/include" -O3
hip-clang-ldflags  : Can't exec "/opt/rocm/bin/rocm_agent_enumerator": No such file or directory at /opt/hip/bin/hipcc line 592.
Use of uninitialized value $targetsStr in substitution (s///) at /opt/hip/bin/hipcc line 593.
Use of uninitialized value $targetsStr in split at /opt/hip/bin/hipcc line 599.
--driver-mode=g++ -L"/opt/hip/lib" -O3 -lgcc_s -lgcc -lpthread -lm -lrt
Request you to check the same: https://rocmdocs.amd.com/en/latest/Installation_Guide/HIP-Installation.html#default-paths-and-environment-variables
Hope this helps.
Thank you.

Hi, @ROCmSupport
Fatually I looked at the code of /opt/hip/bin/hipcc .
It is:

if($HIP_PLATFORM eq "amd"){
    # No AMDGPU target specified at commandline. So look for HCC_AMDGPU_TARGET
    if($default_amdgpu_target eq 1) {
        if (defined $ENV{HCC_AMDGPU_TARGET}) {
            $targetsStr = $ENV{HCC_AMDGPU_TARGET};
        } elsif (not $isWindows) {
            # Else try using rocm_agent_enumerator
            $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator";          <------------------ line 592
            $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`;
            $targetsStr =~ s/\n/,/g;
        }
        $default_amdgpu_target = 0;
    }

But I found factually rocm_agent_enumerator was installed under:
/usr/bin/rocm_agent_enumerator
Which I installed ROCclr via runnning:
sudo make install
What should I do to make it run correctly?

Hi @terU3760
Looks like everything got messed up.
To try/install/build anything, you need to have rocm installed on your machine first.
So I request you to do the below things.

clean your machine from rocm and all other things
sudo apt autoremove rocm-dkms and check if everything is removed. Check this by "sudo dpkg -l | grep rocm".
Next replace rocm to rock, hsa,hip,llvm, comgr and remove one by one if you have any package in the system.
Once cleaned, reboot the machine.
Now install rocm freshly as per instructions @ https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html#ubuntu
Reboot now and check your installation by "/opt/rocm/bin/rocminfo" and "/opt/rocm/opencl/bin/clinfo" commands.
/opt/hip/bin/hipconfig --full --> shows data without any errors.

Hope this helps.
Thank you.


updated visual-studio-code (0.10.6-release)

cask-repair pulls the wrong shasum, should be 78d333e1e7ae9bffc84fa1c6a0dbc3e8530d85b62c3b318e6687eefec2b3ddf9

Thank you for the contribution. It needed some fixes, so they were made in ea54842d77c99356dff740b2ea3932aab61a7048. Your contribution is still included (and still credited to you), with the appropriate modifications. Please feel free to ask about any of the changes.


HtmlFormatter dies not include document type and  tag

At the moment, the html formatter returns the plain html table starting with the  <table> tag. This is fine for most email programms.
Unfortunatly there are also some programs that wont render this correctly. Android's gmail app, for example, will show an empty mail with a file attachment named something like "-38". Its not possible to display that file as html at all on a phone.
To change that, proper html declaration must be given I think. The table should be wrapped with something like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>some text</title>
    </head>
    <body>
        PUT CONTENT HERE
    </body>
</html>```

Unfortunately the problem is records are formatted individually, so this would have to be done at a higher level in the handler itself before sending the email.


The background
While preparing a new version of my library, I am testing the interactions between the old version (v2) and the new version I am working on (v3). I want to import them both, using local rewrites in my local go.mod. The caveat: there is no v3 yet, so internally the imports of both versions are identical.
The actual issue
This is the most minimal reproducer I could produce: https://go.dev/play/p/Up68jxuX6_v
This might help understanding the directory structure of the example in the sandbox:
$ tree
.
├── go.mod
├── main.go
├── new
│   ├── go.mod
│   ├── speak.go
│   └── sub
│       └── say.go
└── old
    ├── go.mod
    ├── speak.go
    └── sub
        └── say.go

5 directories, 8 files

There is a package main that imports both old and new. Both old and new contain exactly the same code, and they both import a sub-package sub. The content of those two sub packages is different: one says I am old, the other says I am new.
Both imports are resolved to old/sub.
I find it surprising that imports within a module are not rewritten when a module is imported as a rewrite. I expected package_new.Speak() to print I am new, because package_new imports sub from within its own module, and I have rewritten the import of that module.
What did you see happen?
$ go run .
sub says: "I am old"
sub says: "I am old"

What did you expect to see?
$ go run .
sub says: "I am old"
sub says: "I am new"

Related Issues and Documentation

cmd/go: add (or make explicit) tests for ambiguous imports in module mode #28806
cmd/go: can use invalid sub-dependency version #69437 (closed)
cmd/go: update to '@latest' when promoting an indirect dependency to a direct one? #34534
Module's local transitive dependencies work only with explicit replace directive #57056 (closed)
cmd/go: module dependencies added from different go.mod files of single module at different versions #35884 (closed)
Go module replace doesn't work when 2 levels deep #35450 (closed)
Add support for short import paths for packages in the same module #41568 (closed)
cmd/go: downgrading a module with `go get` retains indirect dependencies #26481 (closed)
cmd/go: 'go mod why -m' gives false negative in inconsistent, pruned module #48613 (closed)
x/vgo: proposal: let sub packages could use the same version of root package in monorepo. #26087 (closed)

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

this looks working as intended, MVS applies to modules and not packages. modules need to declare different names in their go.mod
Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions

MVS applies to modules and not packages

hmm right, that's why I am surprised that it applies to packages in this case

A consequence of the issue I am presenting is that you can't import a module twice, if that module has internal packages. Are you sure that this is intended, @seankhliao ?

@seankhliao
I have slightly changed the example to highlight the suspicious behaviour.
The module is correctly fetched, but subpackages of the modules are fetched by name without namespacing them to the module.
Reproducer: https://go.dev/play/p/1OD7Zm41iMM
$ go run .
from OLD, subpackage says: "I am old"
from NEW, subpackage says: "I am old"

Whereas it should have been:
$ go run .
from OLD, subpackage says: "I am old"
from NEW, subpackage says: "I am new"

The modules aliased as "old" and "new" are correctly fetched, but the subpackage of "NEW " should have said "I am new". Instead, the sub subpackage of OLD is used.
Are you sure that mixing packages from different modules really is the intended behaviour? That is surprising enough to look like a bug to me.

They both import the same package github.com/golang/speak/sub, only one  package is named that.

... modules need to declare different names in their go.mod

If the module name of new is changed to a different name, then the code will not compile.

From the perspective of the module in the new folder, the github.com/golang/speak/sub package path is ./new/sub. But when it is used as a dependency module, the github.com/golang/speak/sub package path is ./old/sub. This is totally unexpected from the perspective of the module in the new folder.
In my honest opinion, the compiler should report a duplicated packages alike error. The current behavior (it compiles) is very confusing/surprising. (I totally understand OP's feeling here.)
(This is just one pitfall of the current module system design. There are some others.)

The code (https://go.dev/play/p/VLhjzQtcbD3) works as OP's intention in an unexpected way.

This issue proves that relative import paths are necessary in the module system.

I suggest to re-open this issue, with a different title: a dependency module A should not use the packages in another dependency module B if A's go.mod file doesn't require B.

What you described and I described are two things. In the OP's case, speak-new doesn't require speak at all, even indirectly.


Manage panel in PWA is hard to close

Description
The "Manage Movie" and "Manage Series" panel is too tall in the PWA on iOS and reaches into the upper area reserved by the OS for sliding down the control panel. So when hitting the "X" with your finger you don't click the "X" but hit the area for sliding down the control panel.
Version
1.6.0
Steps to Reproduce

Open any "Manage" panel in the PWA on iOS

Screenshots
The red line is the approximate border between the PWA and the area used to slide down the control panel.

Logs
No response
Platform
smartphone
Device
iPhone XS
Operating System
iOS 16.6
Browser
Safari
Additional Context
No response
Code of Conduct

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

This has been fixed in recent versions and I have not been able to reproduce this so I will be closing this. Feel free to re-open if you still face the same issue


请确保您已阅读以上注意事项，并勾选下方的确认框。

[X] 我已确认我已升级到最新版本（最新代码）测试过，问题依旧存在。
[X] 我已经在 Issue Tracker 中找过我要提出的问题，没有找到相同问题的ISSUE。
[X] 我理解并认可上述内容，并理解项目维护者精力有限，不遵循规则的 issue 可能会被无视或直接关闭

campus框架版本
1.0.13
本项目 campus-imaotai 版本
1.0.13
运行环境
其它（请在下方说明）
运行架构
x86
问题描述
ash-4.4# docker-compose build
[+] Building 0.0s (0/0)
[+] Building 0.4s (1/2)
=> [internal] load build definition from mysql-dockerfile                 0.3s
=> => transferring dockerfile: 170B                                       0.0s
[+] Building 0.6s (2/3)
[+] Building 0.7s (2/3)
[+] Building 2.2s (3/3) FINISHED
=> [internal] load build definition from mysql-dockerfile                 0.3s
=> => transferring dockerfile: 170B                                       0.0s
[+] Building 1.9s (3/3) FINISHED
=> [internal] load build definition from redis-dockerfile                 0.2s
=> => transferring dockerfile: 323B                                       0.0s
=> [internal] load .dockerignore                                          0.3s
=> => transferring context: 2B                                            0.0s
=> ERROR [internal] load metadata for docker.io/library/redis:latest      1.6s

[internal] load metadata for docker.io/library/redis:latest:

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 5.7]: 403 Forbidden
期望的结果是什么？
部署成功
简单的复现代码/链接（可选）
ash-4.4# docker-compose build
[+] Building 0.0s (0/0)
[+] Building 0.4s (1/2)
 => [internal] load build definition from mysql-dockerfile                 0.3s
 => => transferring dockerfile: 170B                                       0.0s
[+] Building 0.6s (2/3)
[+] Building 0.7s (2/3)
[+] Building 2.2s (3/3) FINISHED
 => [internal] load build definition from mysql-dockerfile                 0.3s
 => => transferring dockerfile: 170B                                       0.0s
[+] Building 1.9s (3/3) FINISHED
 => [internal] load build definition from redis-dockerfile                 0.2s
 => => transferring dockerfile: 323B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 2B                                            0.0s
 => ERROR [internal] load metadata for docker.io/library/redis:latest      1.6s
------
 > [internal] load metadata for docker.io/library/redis:latest:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 5.7]: 403 Forbidden

日志记录（可选）
No response
补充说明（可选）
No response

可以看下这边分享的教程：https://github.com/oddfar/campus-imaotai/discussions/categories/分享部署教程

教程都看过了，没有使用docker-compose部署的

403 Forbidden ：Docker Hub 访问受限
可以尝试手动拉取 redis 镜像，然后再运行 docker-compose build：
docker pull redis:latest

同样报错failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 5.7]: 403 Forbidden
已经拉取了redis
ash-4.4# docker pull redis:latest latest: Pulling from library/redis efc2b5ad9eec: Already exists  e1881a4a6fdd: Pull complete  272d90b014a2: Pull complete  1c6e055151a6: Pull complete  6a4ea20e8d76: Pull complete  1aa3206413a2: Pull complete  4f4fb700ef54: Pull complete  7f3c1f3a060e: Pull complete  Digest: sha256:e59c42a34bdb950f988a1578504c31ce981096e3a18b83db1808bd7a32302e7f Status: Downloaded newer image for redis:latest docker.io/library/redis:latest ash-4.4# docker-compose build [+] Building 0.0s (0/0)                                                                                [+] Building 0.1s (0/2)                                                                                => [internal] load build definition from redis-dockerfile                                                       0.1s  => => transferring dockerfile: 323B                                                                             0.0s  => [internal] load .dockerignore                                                                                0.0s [+] Building 0.3s (2/3)                                                                                [+] Building 1.2s (5/8)                                                                                => [internal] load build definition from redis-dockerfile                                                       0.2s  => => transferring dockerfile: 323B                                                                             0.0s [+] Building 1.4s (6/8)                                                                                => [internal] load build definition from redis-dockerfile                                                       0.2s   => => transferring dockerfile: 323B                                                                             0.0s  => [internal] load .dockerignore                                                                                0.2s  => => transferring context: 2B                                                                                0.0s  => [internal] load metadata for docker.io/library/redis:latest                                                  0.0s  => [1/4] FROM docker.io/library/redis                                                                           0.6s  => [internal] load build context                                                                                0.2s  => => transferring context: 96B                                                                                0.0s  => [2/4] RUN mkdir -p /home/campus/redis                                                                        0.5s failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 5.7]: 403 Forbidden

那你试试 https://github.com/oddfar/campus-imaotai/discussions/374 sqlite版的

谢谢，的确可以用

谢谢，的确可以用

https://github.com/oddfar/campus-imaotai/discussions/374dokcker-compose

教程都看过了，没有使用docker-compose部署的

docker-compose可以参考这篇教程： https://www.bilibili.com/read/cv33190924

谢谢！用同一个作者的一键命令，已经启动了


WIP: mount kernel filesystems if run as pid1

Hi aurae community,
This PR adds first steps to make auraed boot as pid1, mainly mounting the kernel filesystems (devfs, procfs and sysfs), but also some minor fixes to make auraed boot without kernel panic.

Fixes kernel panic due to a rust panic thrown by syslog creation (missing unix sockets [1])

The rust panic causes auraed to stop, and if started as pid1 the kernel will in turn also panic because the init process ended.

Fixes hack/hack.mk for zsh users
Adds a SystemRuntime (analog to AuraedRuntime), which handles system preparation.

SystemRuntime Case: not-pid1

assume a systemd environment (currently only unix socket /var/run/syslog)

SystemRuntime Case: pid1

initializes logging without unix socket dependency. Using syslog crate would require creation of unix socket first, and I suggest to discuss this first if there is a use case to have a unix socket for logging.
mounts file based kernel interfaces
devfs, sysfs, procfs

Added helper functions for basic file io (currently for devfs, sysfs, procfs interfaces)

get content of e.g. /dev, /sys or /proc
or /sys/class/net/ to see available network interfaces

ToDo:

Discuss Logging targets

Same log targets for all SystemRuntime cases?

Network initialization
Stop auraed in pid1 case gracefully (kernel halt syscall to shutdown or reboot)

How to test
Steps to run auraed as pid in a qemu vm are documented in the hack/README.md. Copy pasted them here:
make build-container
make kernel
make initramfs

# create `vm-br0` bridge on your machine:
make network

# run auraed in a VM as pid 1:
make virsh-start virsh-console virsh-stop

# exit VM console with Ctrl+]

Links
[1] https://docs.rs/syslog/latest/src/syslog/lib.rs.html#232-243

@cla-bot check

@cla-bot check

@cla-bot check

Non blocker however I am wondering about the name system for a module for init. This seems to be overloaded. I am unsure how I feel about it. Does anyone else have any thoughts?

Non blocker however I am wondering about the name system for a module for init. This seems to be overloaded. I am unsure how I feel about it. Does anyone else have any thoughts?

My vote goes to naming it init. Current scope is just initialization of stuff for the user space.

@kris-nova this PR is ready to be merged from my point of view
Thanks for your feedback!

Note for myself. Configuration to remove /proc procfs(5) is in this issue:  https://github.com/aurae-runtime/auraed/issues/25


StalePersistentVolumeClaim duplicate time series in Victoria Metrics

Hi,
The StalePersistentVolumeClaim query here breaks Victoria Metrics in some configurations:
https://github.com/openebs/monitoring/blob/161b5af7f7525c223b9165a13db2d6b667d08aad/deploy/charts/rules/volume/volume-rules.json#L12
422: error when executing query="kube_persistentvolumeclaim_info unless (kube_persistentvolumeclaim_info * on(persistentvolumeclaim) group_right kube_pod_spec_volumes_persistentvolumeclaims_info) == 1" on the time range (start=1700931915000, end=1700932215000, step=15000): cannot execute "kube_persistentvolumeclaim_info unless ((kube_persistentvolumeclaim_info * on(persistentvolumeclaim) group_right() kube_pod_spec_volumes_persistentvolumeclaims_info) == 1)": cannot execute "(kube_persistentvolumeclaim_info{persistentvolumeclaim=~\"audit-vault-0|audit-vault-1|audit-vault-2|... duplicate time series on the left side of `* on(persistentvolumeclaim) group_right()`: ...

In our particular case, this happens on any ReadWriteMany PVC that occurs in more than one pod in the same namespace.

Request community to help here.

@avishnu I think I'm seeing the exact same issue when using renovate with a persistent cache. I think the problem is, that renovates CronJob produces several pods each referencing the same PVC, which leads to a many-to-many situation that prometheus doesn't support.
I've changed to rule to this:
kube_persistentvolumeclaim_info{namespace!="renovate"} unless (kube_persistentvolumeclaim_info * on (persistentvolumeclaim) group_left () (max by (persistentvolumeclaim) (kube_pod_spec_volumes_persistentvolumeclaims_info))) == 1

The main change is, that I replaced group_left () kube_pod_spec_volumes_persistentvolumeclaims_info) with group_left () (max by (persistentvolumeclaim) (kube_pod_spec_volumes_persistentvolumeclaims_info))). This max by (persistentvolumeclaim) collapses all series into one per PVC. Not sure if that's a good way to do it, but it does work.
@dhess can you confirm that you have multiple pods referencing the same PVC? (count by (persistentvolumeclaim) (kube_pod_spec_volumes_persistentvolumeclaims_info) > 1)
This also breaks when using RWX volumes with scaled-up applications.

I created #124 with the change I suggested in my previous comment


adding mobx to spfx React web part breaks build

Category

[ ] Question
[ ] Typo
[x ] Bug
[ ] Additional article idea

After scaffolding a new spfx web part with react and adding mobx integrations, bundle fails with errors thrown from files in node_modules.
Expected or Desired Behavior
gulp bundle should succeed after adding reference to observable in code
Observed Behavior
gulp bundle exits in failure. Exact text can be found here:
Steps to Reproduce
Two ways:

clone this repo and run npm install and  gulp serve --nobrowser

or

scaffold a new spfx web part using react
npm install mobx mobx-react
add import {observable} from 'mobx'; to any typescript file
gulp serve or gulp bundle

generator version is 1.7.1
node version is 8.12.0
I'm sure it has to be some sort of dependency collision but wasn't able to figure it out after a few hours of head scratching.

I was able to get this working with the help of a colleague. Later versions of mobx do not seem to play well with spfx.
Here's the fix:
npm install --save-dev<EMAIL_ADDRESS><EMAIL_ADDRESS>


small improvement of readability

[X] I understand that this repository is auto-generated and my pull request may not be merged

Changes being requested
Additional context & links

Thanks; we may do this later as part of a lint rule addition, but won't incorporate as a one-off.


refactor: remove connection protocol

This PR Removes the deprecated connections protocol.
In addition to the message handlers and routes, this also means:

CLI flags relating to connections protocol removed.
References to specific messages in base connection manager were removed; there will need to be some working around this in the plugin to continue to support the protocol but I think it's good and necessary to at least rip it out for now here.
Introduction protocol used to use Connections invitations. I did a very rough-and-ready conversion to OOB invites.
Connections management routes (e.g. querying connections) were moved to aries_cloudagent.connections.routes (from aries_cloudagent.protocols.connections.v1_0.routes).

I am expecting this to not be fully functional yet so opening as a draft for now.

@dbluhm it was mentioned on the call this was moved to a plugin. Is the code to enable using that plugin included in this pr?

It’s in the plugin repo: https://github.com/hyperledger/aries-acapy-plugins/pull/925

@swcurran thank you, I was referring towards the "code required to make this plugin work" which was highlighted in the meeting.
The functionality lost/broken features outlined here, will this require code from within the aca-py code base or it can all be managed in the external plugin?

Doh…sorry about that. Good point.  And per my comment in the meeting — is it viable to simply document how to use the plugin?  I suppose not being able to use the artifacts directly (e.g., having to change the Python code) might be a bit too painful.

With the most recent updates on this branch and to the corresponding plugin, I have successfully completed a connection using the plugged in connection protocol. There are some failing tests I will address but I will go ahead and mark this as ready for review.

Cool.  Let’s include in our discussion tomorrow the version number if we remove this.  1.1.0?
Should the SonarCloud analysis be addressed before merging?

I'm just wondering if maybe a scenario test that installs the plugin and creates a v1 connection might be a good idea.

We can do that though this is basically what's happening in the integration test of the plugin itself. So I'm not sure how valuable it is for it to be tested in both places.

We'll need good docs for when it gets released.

Indeed, I have not adequately addressed this need yet.

Should the SonarCloud analysis be addressed before merging?

I am not too concerned personally. The most complaints are coming from code that was just moved but detected as new in the connection routes (moved from the protocols.connections.routes to connections.routes).


Add create_presentation function

To create a PowerPoint presentation from provided data, likely in the form of JSON.

We can use python-pptx for this.


Pass params to postlink

rnpm link/react-native link is great, however there are some patches specific to our plugin that developers need to make when instrumenting their app with our plugin. We intend to automate these extra steps for them in a postlink script.
Some of these patches require information that the user needs to provide to us (in our case, a deployment key). We tried to do something like this to prompt the user for the key:
{
  "rnpm": {
    "params": [
      {
        "message": "What is your CodePush deployment key for iOS (hit <ENTER> to ignore)",
        "name": "iosDeploymentKey",
        "type": "input"
      }
    ],
    "commands": {
      "postlink": "rnpm codepushify-ios ${iosDeploymentKey}"
    }
  }
}

However, the ${iosDeploymentKey} syntax doesn't actually get replaced with the key when our script is called. The alternative is for us to poll for that additional param ourselves, but it would be great if we can add support for parameterized strings in the postlink declaration.

Hi @geof90! Thanks for the warm words about link.
About your request: tbh, we didn't expect people to use postlink hooks and parameters this way :) I don't have any ideas about it now. Parametrization is an experimental feature that we implemented only for Android (iOS version is on the roadmap). I'll try to keep you posted (and of course, we'll keep in mind your feature request).

wdyt, @grabbou?


pysdie2 package causing poetry to hang

Doing any command which requires updating dependencies (i.e. poetry update or poetry lock) causes poetry to hang. It seems like it is hanging on resolving the dependencies for the pyside2 package.
Edit: This originally said bitbox02 but I did some debugging and it seems to be pyside2 that's causing the problem.

Apparently I have a caching problem. Clearing some poetry http cache fixes this.

Apparently I have a caching problem. Clearing some poetry http cache fixes this.


Use np.histogram_bin_edges to compute bin edges for ECE

What is this PR for ?
This PR is intended at improving the binning used in the calibration step by using np.histogram_bin_edges instead of the current _get_bin_index_edges function.
It also adds a new calibration_bin_count parameter to CBPE to be able to tune the number of bins to use in needs_calibration function.
Please note that the default values for bin_count are still 10. However it would probably better to switch to auto or fd as it would be generally better.
How was it tested?
New tests added in tests/test_calibration.py to validate the new behaviour.
poetry run tox is passing.

Hi @Jebq, that's indeed a great PR. Two things from my side:

Reconsider the parameter'right' that you use in np.digitialize, I ran this binning with some randomly generated data and it results in a very small first bin very often. See the example here:

x = np.linspace(0,1,100)
bin_edges = np.histogram_bin_edges(x)
bin_edges[-1] += 1e-8

bins_proba = np.digitize(x, bin_edges, 'right')
np.unique(bins_proba, return_counts=True)

outputs:
(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10], dtype=int64),
 array([ 1,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10], dtype=int64))

while without this option:
bins_proba = np.digitize(x, bin_edges)
np.unique(bins_proba, return_counts=True)

gives more reasonable:
(array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10], dtype=int64),
 array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10], dtype=int64))

The proposed change significantly changes our default behavior. Currently we get 10 bins of equal size, the changes introduced will give us 10 bins of equal width. Both methods have their pros and cons. Equal sized bins reduce the risk that we will get bins with a very few observations, this is partially mitigated by the fact that we weight by the size of the bing. Equal-width bins help us to compare more relevant data though. For now we have tested only the equal-sized approach. We know that it is good enough. Your comment is right though - other methods may be better and your code allows to use other methods as well.

Anyways, having another look on calibration is on our road map and we want to research it thoroughly (in about 2 or 3 months). For now I'm hesitant to change the default behavior, but I also want this work that you did to become a part of the library as we will have to do it at some point anyways. Can we merge both worlds @nnansters and just have two methods for calibration checks?

Update on the topic:
I have recently realized that our approach has one strong disadvantage: it can put the same predicted probabilities into different bins and this is not right. Imagine such data:
y_pred_proba = [0.2, 0.2, 0.2, 0.5, 0.6, 0.9]
y_true      =  [  0,   1,   0,   0,   1,   1]

If we split into 3 equal-size bins we would get:
y_pred_proba = [0.2, 0.2,   0.2, 0.5,   0.6, 0.9]
y_true      =  [  0,   1,     0,   0,     1,   1]

so the 0.2 get separated. There's unwanted random stuff going on as well, cause the following is just as likely (notice the y_true change):
y_pred_proba = [0.2, 0.2,   0.2, 0.5,   0.6, 0.9]
y_true      =  [  0,   0,     1,  0,     1,   1]

And the ECE would might end up being different. We should therefore switch to almost-equal-sized binning with no bin splitting on the same value.

Hi @jakubnml, and sorry for the late reply.
Thank you for your feedback. I agree with all the points you raised, especially that the issue with having few observations within a bin is inflated by using the equal-width binning approach.


Automatic Snapcraft Builds

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
The official snap package listed on the snapstore always lags the release by up to a week or more:
https://snapcraft.io/atom
This documentation seems to indicate you can setup an automatic deployment from the Git releases:
https://docs.snapcraft.io/build-snaps/ci-integration
It appears from your issue tracking that you already have travis-ci working from this repo.

Thanks @nickhagen!  I was reading up on this recently, it'd definitely be nice to create official Snaps for our releases.  If we did this, I'd also want to make sure we could do something similar with Flatpak so that we can cover the widest possible set of users.


[SUPPORT] SqlQueryBasedTransformer causes memory issues

Describe the problem you faced
With a DeltaStreamer job that runs fine before, adding a SqlQueryBasedTransformer that only SELECTs 1 column runs into memory issues.
"--transformer-class",             "org.apache.hudi.utilities.transform.SqlQueryBasedTransformer",             "--hoodie-conf",             "hoodie.deltastreamer.transformer.sql=SELECT a.ATTRIBUTES FROM <SRC> a"
To Reproduce
Steps to reproduce the behavior:

Add SqlQueryBasedTransformer with simple SELECT statement to a DeltaStreamer job
Run job

Expected behavior
Getting back one column from the job, without memory issues
Environment Description

Hudi version : 0.10.1

Spark version : 3.1.2

Hive version : -

Hadoop version : 3.1.2

Storage (HDFS/S3/GCS..) : Reading from Kafka, storing in S3

Running on Docker? (yes/no) : no

Additional context
Some additional screenshots and messages in this slack thread: https://apache-hudi.slack.com/archives/C4D716NPQ/p1663698444989499
Stacktrace
│ 2022-09-19T21:45:44.236+0000: [GC (Allocation Failure) [PSYoungGen: 25113K->25029K(2758656K)] 77023K->76946K(8351232K), 0.0177561 secs] [Times: user=0.02 sys=0.02, real=0.02 secs]                        │
│ 2022-09-19T21:45:44.254+0000: [Full GC (Allocation Failure) [PSYoungGen: 25029K->0K(2758656K)] [ParOldGen: 51917K->54295K(5592576K)] 76946K->54295K(8351232K), [Metaspace: 112463K->112463K(1155072K)], 0. │
│ 2022-09-19T21:45:44.378+0000: [GC (Allocation Failure) [PSYoungGen: 0K->0K(2720768K)] 54295K->54295K(8313344K), 0.0035697 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]                                │
│ 2022-09-19T21:45:44.381+0000: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(2720768K)] [ParOldGen: 54295K->45261K(5592576K)] 54295K->45261K(8313344K), [Metaspace: 112463K->109953K(1155072K)], 0.1912 │
│ #                                                                                │
│ # java.lang.OutOfMemoryError: Java heap space                                                                                │
│ # -XX:OnOutOfMemoryError="kill -9 %p"                                                                                │
│ #   Executing /bin/sh -c "kill -9 22"..```

@tzhang-fetch Couldn't reproduce this issue as SQL transformer is working fine.
Are you saying with same executor and driver memory , hudi job got killed when using sql transformer.
Are you still Can you let us know the memory configs used?

@tzhang-fetch Closing out this issue for now due to no activity. Please reopen in case you have any concerns. Thanks a lot.


ARROW-3320: [C++] Improve float parsing performance

This relies on Google's double-conversion library at https://github.com/google/double-conversion
Before:
---------------------------------------------------------------------
Benchmark                              Time           CPU Iterations
---------------------------------------------------------------------
[...]
BM_FloatParsing<FloatType>          4621 ns       4620 ns     151802   1.65125M items/s
BM_FloatParsing<DoubleType>         4629 ns       4628 ns     150171   1.64846M items/s

After:
---------------------------------------------------------------------
Benchmark                              Time           CPU Iterations
---------------------------------------------------------------------
[...]
BM_FloatParsing<FloatType>           563 ns        563 ns    1240915   13.5616M items/s
BM_FloatParsing<DoubleType>          313 ns        313 ns    2227610   24.3934M items/s

Is google/double-conversion a small enough codebase to vendor similar to what you did with Abseil (either submodule or simply cp -r && git add?

I see this is in conda-forge so it may not be a big deal

Codecov Report

Merging #2625 into master will increase coverage by 1.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #2625      +/-   ##
==========================================
+ Coverage    87.2%   88.23%   +1.03%
==========================================
  Files         381      319      -62
  Lines       59196    55488    -3708
==========================================
- Hits        51624    48962    -2662
+ Misses       7502     6526     -976
+ Partials       70        0      -70

Impacted Files
Coverage Δ

cpp/src/arrow/util/parsing.h
100% <100%> (ø)
:arrow_up:

rust/src/record_batch.rs

go/arrow/datatype_nested.go

rust/src/util/bit_util.rs

go/arrow/math/uint64_amd64.go

go/arrow/internal/testing/tools/bool.go

go/arrow/internal/bitutil/bitutil.go

go/arrow/memory/memory_avx2_amd64.go

go/arrow/array/null.go

rust/src/lib.rs

... and 53 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5167502...da82bee. Read the comment docs.

The codebase looks small indeed. The .git directory is 7.2MB and the source tree itself is 19M.
The conda-forge package is apparently not built for Windows, and it only provides the shared library.
OTOH, building double-conversion from scratch (as an external project) is reasonably quick too. What do you suggest?

Let's stick with ExternalProject for now; this perhaps puts more pressure for the upstream project and conda-forge packages to be maintained

Merging. The build only failing because of the known flakiness with the Java Flight tests and the new macOS failure that's shown up in the last 24 hours


Please invite me to the Recode-Hive GitHub Community Organization

Name
Alok Vishwakarma
Discord Username (if applicable)
its_me_a.l.o.k_
Additional Context
No response

Invitation sent to join the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see. You can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/recodehive/people


using SSH keys

would love to have ability to use SSH keys to authenticate instead of password

Funny you should bring that up, I was just thinking about that last night and how I want to incorporate that sooner rather than later.

:) If I get some time this week or next, I can try to take a stab at implementation unless you think you might get there sooner.

That sounds great!

This feature would be quite useful.

Stay tuned!  Just need to finish up some testing.

Ok, just committed the changes and updated the README, which describes how to connect. Let me know if you run into any issues!

Oh great!  That looks pretty similar to the code I was working up a few days ago to send.  Thanks for taking a look @scottdware.  I'll be able to test in the next few days.

This worked for me, though I had to generate a passphrase-less key.  The passphrase handling didn't seem to work and I didn't dig in.

I'll take a look at that today. I don't think I used a passphrase as well during my initial testing.

On a Windows machine, I was able to connect with a passphrase-enabled key. I'll try on another OS as well.


Model with to_param set isn't mapping correctly with ID in edit

I have a model Product with to_param defined to return, in this case, the UPC code of a product. I have overridden the show method and in this case @upc = params['id'] gives me the UPC code as I would expect, rather than the id field from the database.
The edit method is not defined in my controller, so it should be falling back on the default inherited_resources method. However, when I try it, I get this error: Couldn't find Product with ID=[SOME UPC CODE]. I think this means that inherited_resources is not recognizing the to_param when it does the find. Is that possible?

Don't you think it would be nice to have a finder method ?
class Product < InheritedResources::Base
  finder "upc"
  actions :show
end

Just like we have with belongs_to :finder => find_by_upc!


php: update to 0.22.8

With the automation script.

(closing, requires a more complex update I'm not willing to bet at (common libs and stuff))


the weight file

seems it lacks weight file, are you willing to share it?

I added a link for the weights..


Copy atom.png to standard icon path locations for RPM build

:penguin: This completes a missing feature of pull request #5336 which in turn references issue #5331. Basically, the new version of the atom.desktop file from pull request #5336 allows the desktop environment to scan its icon path for the "atom" icon. This is great! The only catch is the icons weren't actually being placed in that path yet. This pull request solves that issue. :smile:
As an added bonus, this pull request replaces a hardcoded path in the atom.spec.in file that pointed to the default build location ("/tmp/atom-build"). This would break if someone builds to a non-standard location and tries to build an RPM from it. Now, regardless of where the initial build is done, the RPM build should work.

:+1: Beautiful! Much better!

ImageMagick is included in order to convert the images to sizes that most desktop environments can use in "/usr/share/icons/hicolor/". The icon in the atom/atom repo is 1024x1024, which no Linux desktops will recognize, as far as I can tell. Thus, the included atom.png file is resized at rpm build time to play nicely with desktop environments. ImageMagick is used for this. It is often pre-installed with most Linux distributions.
One alternative option is to include the varying icon sizes in the git repo, but that seems like a redundancy that is unneeded, since they can be dynamically generated at build time.
The last option I can think of is I can try to modify the build rpm.spec.in build script so that it will create them if ImageMagick is installed, but will skip it otherwise. If they are not generated, the icon will still show up in the application, but it won't show up in any menus in the desktop; it will be whatever icon the desktop falls back on.

One alternative option is to include the varying icon sizes in the git repo, but that seems like a redundancy that is unneeded, since they can be dynamically generated at build time.

This is often preferable because large assets don't always resize / look nice at smaller sizes and are usually adjusted manually by a designer to change / remove details so they look right when very small. I don't necessarily think it's a big deal in terms of the RPM package but I want to get @simurai's thoughts on this - I think these assets might actually already exist.

I had noticed that that at really small sizes the icon got a bit mushy since the contrast between the white and the green becomes relatively low, so it would be great to have alternate designs for varying sizes. However, if they exist, I haven't been able to find them in the repo yet, in either png or svg format. I looked for a while before implementing this particular solution; I really didn't want to add another dependency if I could help it.

Yes, the icons vary slightly depending on the size. For example in the 32px and 16px version, the white border is removed.

For OS X and Windows, the different sizes are "backed in" the .icns and .ico file.
For Linux I could add all the .pngs needed. Not sure where, maybe to atom/resources/linux/icons/? Currently these sizes are already made:

If you specify there you break the RPM package in multiple places. RPM already implements relocation feature for those that wish to install somewhere else. The current version package already supports this feature, it was implemented by @eestrada on #5314.

For Linux I could add all the .pngs needed. Not sure where, maybe to atom/resources/linux/icons/?

Yeah, that sounds good, thanks @simurai

RPM already implements relocation feature for those that wish to install somewhere else

Currently the recommended way to install the RPM package is through yum using localinstall argument. However the only way to change the installation directory is through rpm using --prefix argument. In this case, if someone want to install atom in different directory the only option would be  using rpm instead of yum
Is the reason to move installation path from /usr/local/bin to /usr/bin just because the desktop environment wont' pick up the icons from  /usr/share/icons/hicolor/?

True, YUM doesn't support relocating packages. If someone wanted to relocate, that can be done only with RPM.
The installation path was moved because it's common for RPM apps to be installed on /usr instead of local. Actually checking on my setup (with multiple custom repos), I don't have a single file on local. The idea is that since it's package managed, it should feel 'native'.
The icons could be installed on /usr/local/share/icons also, it works. IIRC, the XDG base directory spec says it should be included on icon path search.

Then why not keep it the same, so it will be consistent with Ubuntu installation and leave it open to generate rpm package for custom installation directory? That way, all we need to change would be atom.spec and atom.desktop to pick up the new icons folder.

@ardeshirj , that seems like a good idea. We should probably also base the atom.spec "Prefix:" tag on the value of grunt.config.get('atom.installDir'), as well as all the paths in the atom.spec file, really. Then we get both a customized rpm build and an rpm that can be relocated at install time. As they are currently implemented, the paths are all hardcoded in atom.spec, so choosing a custom install dir through grunt would probably have just broken it anyway.
I can work on getting the atom.spec.in file in shape tomorrow.

:+1: Great stuff, sounds good to me! Ping if you need some help @eestrada. :)

Thanks @edgard! I'll let you know.

If we are going to allow the RPM package build to fully control where the install location is through grunt, can we change the default RPM package that is downloadable from atom.io to point to "/usr" instead of "/use/share"? Are the install packages created by hand for each new release, or is there an automated build script somewhere we can modify?