JLCPCB Ordering Guide step 13 not working as described

Hello, I am interested in getting some USB ports to attach to a colorlight board. I am following your instructions on ordering from JLPCB:
https://github.com/nand2mario/usb_host_pmod/blob/main/doc/guide.md
The steps up to 13 all worked and produced forms that looked like the ones in your screenshots.
But when I get to step 13, it does not behave like in the instructions. Step 13 says: "The placement of some components will appear wrongly placed. This is ok. Just press the "align" (marked with an "A") button on the toolbar and it will be fixed." I interpret this to mean that it is fine for the components to initially appear wrongly, but I assume they need to be correctly placed before proceeding.
This is what i see on initially loading the pane

However, if I click "Align" it does not fix it. I can press "Align" multiple times and each time it snaps to a different incorrect-looking position.

It says the preview is "for reference only". Is it okay to proceed from this point if the preview still looks wrong even after pressing the "Align" button? Do these problems indicate I did something wrong earlier in the order process?
Thanks.

JLC probably changed their "align" function somehow. It use to work just fine. To be sure you can move and rotate the usb socket and pins to the correct locations. These two are manually assembled. So I believe some inaccuracies on your side should be fine.

Based on your comment I moved all the pieces in place to a close visual match of the diagram in the ordering guide. (This turned out to not be hard.) When the part arrives I will report back whether it arrived as expected.
I think you should consider altering step 13 in your guide to note that if the align button does not seem to work, then you suggest manually dragging the pieces in the table one by one to fit the picture. If you do not feel this is necessary, you may close this issue.
Thank you for the help.

Hmm, unfortunately it appeared eyeballing it did not work out so well after all :(
Last night I got back an email from JLCPCB:

Sorry to bother you, but there is one thing that we want to confirm with you about your SMT order before proceeding.
As shown below, seems the packages of the parts (R3、R4、R1、R2 ) cannot match the corresponding pads on the PCB board, so we are unable to assemble them.
For this case there are 3 options for your choose as follows:
A- we enable the replace part button for you that you can re-select the corrected part
B- we leave this parts unpopulated and refund cost of the mismatch parts back to you to proceed and can’t ship the unsoldered parts with PCB due to the customs clearance issue,
C-cancel this PCB order and SMT order to place new order (there is no replace gerber file button for SMT order)

Can you give me any advice on how to proceed?

I spoke to a friend. They looked at the email and the git repo and concluded the part number C1035 for R1,R2,R3,R4 (bom.csv line 8) is incorrect (possibly accidentally duplicated from line 7) and the part number there should be something like C25092 (a 22 ohm 0402 resistor which is in the parts library here). So I think I want to go with "option A" (replace part, and swap out R1,R2,R3,R4 for C25092). Does this sound correct to you?

C25092 is the correct part number. Not sure how it got mixed up.
Thanks for catching this.

Okay great, thanks for confirming. And I guess don't thank me thank Tavy :)
I have replaced the part in the order and production has resumed.

To update, after re-submitting to JLCPCB they sent it back again with this note…

Hi there,
So sorry to bother you.
About the D1, is that correct we solder it with C145508? The pins can't match the pads, which will cause short circult.

From the wording ("can't"), this doesn't sound like an incorrect placement issue. Could there be another incorrect part number?

My friend Tavy who helped with the incorrect part before took a look at this. This is what they concluded:
D1 has a footprint for a 0402 diode, but the part selected (the C145508) is a "DSN-2" package. They believe the correct way to fix this is to fix the original CAD files so that D1 is sized for a DSN-2. They said that a C907849 could be substituted and fit, but that that part is rated for 1A not 2A so it's not totally clear it's a proper substitute. They also said that in a home assembly one could probably just force the C145508 to fit in the 0402-sized D1, and that looking at your photos they believe this is what you did in your existing builds, but they believe the size mismatch could introduce risks like shorting even aside from the fact that JLCPCB is balking at assembling it so it's worth fixing anyway.
Does this sound right to you ? Do the input gerber files need to be corrected?

Hi, I'm the designer of this PCB, but I haven't actually tried submitting the design.
Usually, there're might be a constant offset that can be corrected by JLCPCB, but here it might be too few components to correctly detect.
Also, each component's footprint has their own reference point(the origin point when you open a component in KiCADFootprint Editor), for SMT components this is kinda universal(for 0402-like Cs and Rs, it's the middle point). But through-hole components, especially connectors like the USB, it's very common to have a reference point different from JLCPCB's model, and it'll appear off and shifted, it's impossible for auto-alignment to correct this.
So I usually need to rotate the component if necessary, and drag the component to the correct position. This is the same thing that causes some ICs and diodes to be mounted reversed if not careful.
About the overall shift, it's not recommended to drag-and-move each 0402 by hand. You can try the "Place origin point for drill files and component placement files", and place the origin at bottom-left corner of the board.

And then tweak the "Use drill/place file origin" option when generating placement files.
If this won't work, you can select all components on JLCPCB's interface(I think there's such a function), and manually move so that the SMT parts are aligned. Then manually align the THT parts.
I've used 0603 components on 0805 hand-solder footprints on JLC and there's just a warning and nothing's wrong with assembly, but maybe in the diode case it's too much...

@regymm , thanks, please excuse my limited knowledge on this subject. I'm not sure I've properly communicated what's happening…

Usually, there're might be a constant offset that can be corrected by JLCPCB, but here it might be too few components to correctly detect… If this won't work, you can select all components on JLCPCB's interface(I think there's such a function), and manually move so that the SMT parts are aligned. Then manually align the THT parts.

There are two layers of problem using the JLCPCB flow. The first is that the automatic part placement panics and strews the parts all over (probably because, due to the R1-R4 and D1 errors in the repo's production files, the parts really truly do not fit). You are correct that I can manually move the parts in a JLCPCB web interface, and I did this, but this web interface is very imprecise.
The second layer of problem comes after manually placing parts and submitting the order. JLCPCB refuses to actually build it due to the non-fitting parts. In the case of R1-R4 this is because bom.csv was wrong; the R1-R4 problems are now fixed in git (although only in the .kicad_pcb, not in the production/ directory) and with my JLCPCB order I was able to simply tell them to substitute the wrong part for a right one. So that was straightforward. But after that was addressed they again declined to build, because of the separate issue with D1. In this case the bom.csv part is correct but the footprint for it on the board appears to be incorrect, and this they can't just swap out, the pcb will need to be changed.

I've used 0603 components on 0805 hand-solder footprints on JLC and there's just a warning and nothing's wrong with assembly, but maybe in the diode case it's too much...

When I search Google, I do find that the DSN1 footprint supposedly is a different size from the 0402 ones. If you tell me it will fit and it's fine that's one thing, but what both JLCPCB and my friend Tavy are telling me is that when it works it works with the risk of shorts. So I would prefer to fix it proper rather than asking JLCPCB to just ignore the size mismatch and solder it anyway.
Tavy graciously went into kicad and made a modded kicad_pcb with a changed footprint for D1. I have added this as a PR: https://github.com/nand2mario/usb_host_pmod/pull/2
Unfortunately, I don't know enough to confirm her work, and moreover I don't know enough to create "production" files from the kicad project :( So, I cannot submit this modded kicad_pcb to try it unless either I learn kicad (maybe not a bad idea) or one of y'all does whatever generation step you used to create the gerber, bom.csv and positions.csv files last time…

Hi, thanks for your feedback, I recorded a video for JLCPCB demonstration (please ignore the first 10 seconds of uploading files).
https://www.youtube.com/watch?v=vbSGLDT_DI0
About the diode footprint: it's selected wrong by default, but as in the video, you can search and replace it with a normal 0402 footprint diode (that is in stock) and the warning will be gone. Thanks Tavy for the mod, but I think it'll be cool to keep both of the versions available, I'll probably change that commit into a new branch.
Then I demonstrated the part alignment, the auto-alignment works if you press the button many times... or just select all parts and drag them. As I mentioned before it's common to have through-hole components aligned off, that's because of the footprint model difference between kicad and JLC and can't be avoided. Personally I didn't notice web interface issues, and go to the payment scene without a problem.
Please let me know if there's anything else I can help!


Package unpublish request: aqueduct_orm

URL: https://pub.dartlang.org/packages/aqueduct_orm
please help me to remove or modify the name of this package

Sure, we can help you unpublished this package. Then you can later upload a new one with the new name.

@jakobr-google can you do this, please?

Package aqueduct_orm removed.

Thank you


Automated cherry pick of #5298: Fix GKE conformance job

Cherry pick of #5298 on release-1.12.
#5298: Fix GKE conformance job
For details on the cherry pick process, see the cherry pick requests page.

/skip-all

GKE conformance job succeeded: http://jenkins.antrea-ci.rocks/view/cloud/job/cloud-antrea-gke-conformance-net-policy/555/


Getting header info

Hi,
Having trouble in determining how to get header info akin to https://github.com/osmcode/node-osmium/blob/master/doc/tutorial.md#getting-the-file-header using pyosmium.
A small example to point me in the right direction would be greatly appreciated.

This works quite similar to the node example. You need to create an explicit Reader which then exposes the header:
import osmium

reader = osmium.io.Reader(inputfile)
has_history = reader.header().has_multiple_object_versions

osmium.apply(reader, handler)

has_multiple_object_versions currently is the only attribute exported to python.
Leaving this ticket open as a reminder that the documentation for the osmium.io is not created properly, so that description of Readers and Header objects is missing.

The online documentation is now fixed.

@lonvia thankyou, that's pretty much what I thought.. Are there plans to add bounds to the header info in the future?

@batFINGER I've added that just yesterday, as it happens. reader.header().box() now returns an osmium.osm.box object with the bounds.


not works

not works IDA  shows every string

That's true. It makes obfuscation useless

x64dbg shows all string. don't work

Try AY obfuscator, it work fine for me, no string exposure https://github.com/adamyaxley/Obfuscate

Try AY obfuscator, it work fine for me, no string exposure https://github.com/adamyaxley/Obfuscate


Add login command

Coverage decreased (-10.7%) to 68.905% when pulling e488860f3478b52df2713f129cd89fc613c54c8a on login-juha into d5582568c743d68a897053dcbae2733159a9af84 on master.

Coverage decreased (-10.7%) to 68.905% when pulling e488860f3478b52df2713f129cd89fc613c54c8a on login-juha into d5582568c743d68a897053dcbae2733159a9af84 on master.

LGTM.


Example not working

sh <(curl tea.xyz) https://github.com/teaxyz/cli

Is returning
error: http (spilt-tea-404)
400: https://raw.githubusercontent.com/teaxyz/cli

While in the README.md we can see this written.

Though this particular usage would be hilarious since it will essentially run sh <(curl tea.xyz) after cloning tea/cli :D

I'm not sure if executable markdown works yet. If it's supposed to, I get this error.
> tea https://github.com/magnusviri/tea-notes/blob/main/README.md
tea: README.md downloading

panic: split tea. we’re sorry and we’ll fix it… but you have to report the bug!

    https://github.com/teaxyz/cli/issues/new?title=panic%3Anot-found%3Asrcroot

----------------------------------------------------->> attachment begin
Error: not-found:srcroot
    at file:///opt/tea.xyz/src/v0.13.0/src/hooks/useVirtualEnv.ts:34:15
    at useVirtualEnv (file:///opt/tea.xyz/src/v0.13.0/src/hooks/useVirtualEnv.ts:35:7)
    at abracadabra (file:///opt/tea.xyz/src/v0.13.0/src/app.exec.ts:163:25)
    at async exec (file:///opt/tea.xyz/src/v0.13.0/src/app.exec.ts:12:72)
    at async file:///opt/tea.xyz/src/v0.13.0/src/app.ts:30:9
<<------------------------------------------------------ attachment ends

I have been trying to build a package and I noticed this output. The TEA_PREFIX is certainly set ("/opt/tea"), but the PATH isn't getting the correct prefix ("/opt/tea.xyz").
+ export TEA_PREFIX=/opt/tea
+ TEA_PREFIX=/opt/tea
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ MACOSX_DEPLOYMENT_TARGET=11.0
+ export PATH=/opt/tea.xyz/var/pantry/scripts/brewkit:/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
+ PATH=/opt/tea.xyz/var/pantry/scripts/brewkit:/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.

I just figured out why the paths are the way they are. I submitted another issue about it. I think it's unrelated to this issue.

These examples have been removed. We may still add the feature where you can run commands against a repo. Maybe. Feels a little out of scope.


Material social cards not working with customized social.cards_dir directory

assets/images/social is hardcoded at this line, so if you change the directory where social cards are stored then the cards are not detected and linked to properly:
https://github.com/Guts/mkdocs-rss-plugin/blob/19069bb57c5f0ac944bcbeeac12518e4f4f12b95/mkdocs_rss_plugin/integrations/theme_material_social_plugin.py#L309
For example this configuration would be broken:
plugins:
  social:
    cards_dir: assets/img/social

It also doesn't seem to be using the computed location correctly when used with the material blog plugin: https://github.com/squidfunk/mkdocs-material/issues/7518
If it helps, here's how mkdocs-material references the cards_dir:
https://github.com/squidfunk/mkdocs-material/blob/8df393d11158ebc87026e4eea9ed0c887eae2371/src/plugins/social/plugin.py#L197

Hello @jonaharagon and @perpil,
Sorry for the delay, I work on this side-project from time to time, mainly when I have free time to develop, review, get paid for or have a particular need.
Which version of the plugin are you using? Because since 1.16, the integration with Material Blog has been improved: https://guts.github.io/mkdocs-rss-plugin/changelog/#1160---2024-10-24
Since you're using the Material theme, please consider using the same report workflow as described in their documentation: https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/

Thanks for the update! Using 1.17, the repro that was attached to https://github.com/squidfunk/mkdocs-material/issues/7518 seems to be working. However, when I try with my mkdocs.yml, it's looking for the social cards in the wrong place still. I'll debug further in the coming week and try and provide a new repro.

Ok, here's a repro. It appears to be that the build directory for social cards isn't correct when use_directory_urls: false
9.5.48+insiders.4.53.14-rss-social-use_directory_urls-false.zip
I was able to make some minor edits to the code to make it work in this scenario, will see if I can make it work for all scenarios.

Thanks @perpil for your attentive tests and following up here, really appreciated. I try to have a look before next year!


Don't special case single-value tags in tags_select

The way it was before:

Motivation:

that box that says firehose-etl should be editable so that people can put in query variables like $cluster

(from dbx OBS-429)

:+1:


Fix BYOB job results bytes typing issue

Summary
https://github.com/Qiskit/qiskit-ibm-runtime/pull/1220
Details and comments

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 51.713%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

qiskit_ibm_provider/job/ibm_circuit_job.py
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3411

Relevant Lines:
6596

💛  - Coveralls


Question: Getting the validator type

Package version
latest
Describe the bug
How i can get the type of the result of a Validator?
Let's say i have a class like this:
export default class MyClass {
   handle(req: Request) {
        const data = await MyValidator.validate(req.body)

        ///OTHER CODE
   }

   private saveSomething(data : <VALIDATOR_RESULT_TYPE>) {
      // other code
   }
}

If i need to declare the type of the data in my method saveSomething i would need to declare a new type that is exaclty the same as the result of my validator.
there is some better way than declare same types over and over?
Thanks and great work!
Reproduction repo
No response

Hey @kevinmelo! 👋🏻
You have to use Infer.
import vine from '@vinejs/vine'
import { Infer } from '@vinejs/vine/types'

const schema = vine.object({
  username: vine.string(),
  email: vine.string().email(),
  password: vine
    .string()
    .minLength(8)
    .maxLength(32)
    .confirmed()
})

type UserRegistration = Infer<typeof schema>
/**
 * {
 *   username: string
 *   email: string
 *   password: string
 * }
 */

📚  https://vinejs.dev/docs/getting_started#inferring-types-from-schema


Samtools view

TOLIT-1817: Use the upstream version of samtools_view, which now supports the unoutput (now called unselected) output channel.

PR checklist

[ ] This comment contains a description of changes (with reason).
[ ] If you've fixed a bug or added code that should be tested, add tests!
[ ] If you've added a new tool - have you followed the pipeline conventions in the contribution docs
[ ] Make sure your code lints (nf-core lint).
[ ] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
[ ] Usage Documentation in docs/usage.md is updated.
[ ] Output Documentation in docs/output.md is updated.
[ ] CHANGELOG.md is updated.
[ ] README.md is updated (including new tool citations and authors/contributors).

Samtools version also being up0dated from 1.17 to 1.20

Samtools version also being up0dated from 1.17 to 1.20

Yep. Something to add to the CHANGELOG when we prepare the release


Adding REST API feature

Change in this Pull request
Adding some REST functionality to NIPAP.
The change will make it possible to do XMLRPC and REST requests to the same IP and Port.
Limitations
Per this pull request only the following NIPAP functions are provided by the REST API:

list_prefix
add_prefix
remove_prefix

The above are done through GET, POST and DELETE to the endpoint /rest/v1/prefixes
PUT needs to be added for editing prefixes, it's not with this PR.
Further development should be made to add the other functionalities that are in the XMLRPC API.
This should/might be done by adding more classes in rest.py

Looks good, merging!


Question: hub_routing_preference

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Versions

terraform: 1.6.2
azure provider: azurerm.connectivity
module: connectivity
Description
Describe the bug

Steps to Reproduce
For virtual WAN deployment, I try to set the hub_routing_preference to "ASpath" for a specific Hub but I don't see this documented anywhere. Also other settings like "virtual_router_auto_scale_min_capacity" are missing.
I tried to put these settings somehow into the "advanced" section and also in the "custom_settings_by_resource_type" but without success.
Can someone help, guide or post a link where I can find this in the documentation (I was not able to find it there).

Hi @hannesbreit
We don't expose these settings at the moment.
We will add these to the backlog for prioritisation.

Thanks @matt-FFFFFF
Is there a workaround available until then?

You could use azapi_update_resource from the AZAPI provider.
It can update a resource properties.

any plan on that. Also facing the same issue and the az api update resource helps but have the different state with the modules so that it always destroy and recreate. Will be great to have the properties directly from caf

Can you ignore the property in the azurerm resource and only manage through azapi?

Thanks for the answer. As i know it s not possible to ignore changes on Modules. Is this possible by Caf some how?

@matt-FFFFFF sorry to ping you.
There is a PR #930 by a colleague. Can we do something to get this merged? We are making changes outside of terraform at the moment, because we can't run tf without resetting the routing preference. It would be appreciated, that someone could have a look at that PR to fix that.


Report invalid JVM installations on each build

Fixes #20813

OK, I've already triggered the following builds for you:

ReadyForNightly build

@bot-gradle cancel

@bot-gradle test ReadyForNightly

OK, I've already triggered the following builds for you:

ReadyForNightly build

OK, I've already triggered the following builds for you:

ReadyForNightly build

Your PR is queued. See the queue page for details.


Fill out zed api docs

I'm going to do a quick pass on the api docs to update them but remove the detailed information about response payloads. This issue is a place holder to revisit and fill them out more.

@mattnibs: We've been adding to the API docs over the past several months as you know. Based on the current state of https://zed.brimdata.io/docs/lake/api, would you agree that we could close this issue now?


Display groups on profile page

Fixes #106
Description (what might a PO or reviewer want to know?)
PR checklist

[X] dev-branch has been merged into local branch to resolve conflicts
[ ] tests and linter have passed AFTER local merge
[X] localization is supported (Guide)
[ ] another dev reviewed and approved
[ ] if feature-Branch: Teams PO has approved (show via e.g. screenshots/screencapture/live demo)

Peek 2022-12-08 16-33.webm


Remove DependencyModel dependency

cc @Eilon \ @pakrym

Verified Mvc against dotnet version 1.0.0-beta-001817.

cc @NTaylorMullen

:shipit: if it works

Might be worth adding a loud header at the top of each of the copied files so no one attempts to modify them inbetween now and when we revert this change.

:shipit:

Not gonna look at the code, but :shipit: anyway :smile:

What's the story here? This will still ship as a separate library, right? I'm asking cause we're using this in Nancy as well :smile:

What's the story here? This will still ship as a separate library, right? I'm asking cause we're using this in Nancy as well :smile:

The library is here https://github.com/dotnet/cli/tree/rel/1.0.0/src/Microsoft.Extensions.DependencyModel. this is a workaround to unblock ourselves in the short term.


Ignore self signed certificate

It could be nice to have a option like "Ignore self signed certificate".
Thank you!

Any update on this?

I have struggled with this issue too and would love to see a resolution.
The http options I am using for my check:

agent: "false,"
requestCert: "true,"
rejectUnauthorized: "false,"

The address:

https://someserver.local:8443/login

rejectUnauthorized: false
requestCert: true
agent: false

This is the correct way to implement what fzaninotto added in 920eebf


[Android]hight resolution ratio ImageView didn't display in ListView's rowItem

Description
I used ImageView in the ListView's rowItem,and source use hight resolution ratio image(like 800x800) from net.
when I scroll ListView for load more new rowItem ,the some new Item’image  will  do not show  in android.
Solution
use the low resolution ratio Image source
Additional Information

React Native version: 0.42.0
Platform: Android
Operating System:  MacOS

We're cutting down on the number of outstanding issues, in order to allow us to focus. I'm closing this issue because it has been open for over 60 days with no activity. If you think it should still be opened let us know why. PRs are always welcome.


Fixed error handling in sync transaction requests

fixes #26

Codecov Report

Merging #38 (8652a20) into main (c825d65) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 8652a20 differs from pull request most recent head 9d6b53e. Consider uploading reports for the commit 9d6b53e to get more accurate results

@@           Coverage Diff           @@
##             main      #38   +/-   ##
=======================================
  Coverage   28.53%   28.53%
=======================================
  Files          18       18
  Lines        1749     1749
=======================================
  Hits          499      499
  Misses       1238     1238
  Partials       12       12

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 c825d65...9d6b53e. Read the comment docs.


[SPARK-40453][SPARK-41715][CONNECT][TESTS][FOLLOWUP] Skip freqItems doctest due to Scala 2.13 failure

What changes were proposed in this pull request?
This is a follow-up of #39947 to ignore freqItems doctest back.
Why are the changes needed?

Does this PR introduce any user-facing change?

How was this patch tested?

Merged to master and branch-3.4. Since we should monitor the scheduled jobs, and CI doesn't verify this change.

Thank you, @HyukjinKwon ! I was editing the PR description but it's fine.


KV providers: support discovery endpoints by dns SRV records

Do you want to request a feature or report a bug?

Feature
What did you expect to see?
Support discovery endpoints by dns SRV records.

Duplicate of #4288


Newcore

Coverage decreased (-1.3%) to 74.223% when pulling 3674ffc814bec8b11fb8510c0f86297b2637c3bb on newcore into bfeccf844d70a84e6ea75ae78409dd81b352ad89 on master.


Bulk downloads only cover the last 5 months

I was just looking at the bulk downloads listed on this page and found that some of them don't cover the expected range of dates.

The reconciled electricity data is supposed to go back to July, 2018, but only reaches July, 2023 (there are ~3400 hourly records in the file).
The CO2 emissions data have the same truncated timeline.
The raw EIA-930 data is also truncated to July, 2023
The older reconciled electricity data contains the expected range of dates (2015-07-01 to 2018-07-01, 26,300 hourly records).

The newer files date back to the updates I made for the EIA's switch to v2 of their API (#12). At that time, I also updated the gridemissions API to now only store one month of historical data. What I did not do back then is go back and process the historical data - breaking the description on the page you referenced.
Updating the historical data was less straightforward than I initially thought because the EIA also changed the way they were making data available in bulk. Instead of one giant csv file with all of the data - they now make the data available in six-month chunks and split it into two files (see here).
Since the datasets generated by this codebase directly depend on the Grid Monitor dataset I think it makes sense for the tools here to also process data in the same six-month chunks.
I just opened #20 to process those six-month datasets and launched the workflow in that PR's Makefile. Eleven six-month chunks are currently available. The CvxCleaner step takes about 1 hour per six-month chunk on the machine I am using, the other steps are not very expensive. I'd like to do a bit of sanity checking once that run completes. If that all looks good, I'll update the way these files are distributed and update the description correspondingly.
Thank you for the reminder to do this!
@ktehranchi FYI

FYI, we have some functions in the OGE repo to download and process the six month files into the format you use here. Not sure if this would be helpful.

FYI, we have some functions in the OGE repo to download and process the six month files into the format you use here. Not sure if this would be helpful.

Just saw this. Your code looks similar to what I did here.
BTW, I noticed when looking at your code that I looks like you are using the conventions I used to use for the EIA API before their v2 update. More recent versions of the code in this repo use a different convention. See eia_api_v2.py.


Add variable substitution for proof configs

Allow proof configs to have variable values that will be substituted at runtime when the proof is generated.
The way this works is that when the proof is generated from the config (generate_proof_request) it calls a helper class function replace_proof_variables that recurses over the generated proof.
This finds any nested value that starts with $ and then looks for if  the $<var_name> is contained in a map of preset variables and runs a function that is mapped to that variable.
That recursive helper method invokes another class in variableSubsitutions.py that contains a "static variable" map of variable names, and also overrides for contains and getitem allowing "dynamic variables" that can have parameters in the variable name.
So this allows a VCAuth operator to potentially just drop in their own variableSubsitutions.py allowing for operator-defined variable allowances and calculations.
Supported here are
$now get now time.time()
$today_str string rep of today's date ie 20240911
$tomorrow_str string rep of tomorrow date ie 20240912
and a dynamic variable $threshold_years_X that will do a string rep of today minus X years (like the 19 year check in LCRB DAV)
So adding $threshold_years_10 would substitute in 20240911
Added unit test coverage for this stuff.
Error handling
If a proof has a $<var_name> that does not resolve, throw back a 400 when trying to get the proof

I don't see a reason to process anything other than the predicates section, at least not now. If the processing time isn't significantly higher we may leave the whole payload for processing though.

Yeah it goes through the whole payload. It's recursive, but the payload is always going to be such a relatively small bit of JSON in the grand scheme of thigs it won't make any real difference for performance if it was restricted to just the predicates.


Update Sentinel URL's from Azure to Microsoft Sentinel in the "Commen…

…t on our blogs..." section

@clivewatson : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@yelevin
Thanks for approving the proposed changes! IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
#assign:@MicrosoftDocs/public-repo-pr-review-team

The following users don't have valid GitHub IDs, or are not collaborators on this repo: microsoftdocs/public-repo-pr-review-team

#sign-off


HELP ""

empty command should default to HELP?

Handle Help.vi handles empty commands rather than passing into Get SMO HELP.vi. Add extra documentation to Get SMO HELP.vi...


Replaced ProgressBarAndroid with ActivityIndicator

Hi,
As latest versions of React gives warning on calculated props, as used in ProgressBarAndroid on "indeterminate" prop, I replaced ProgressBarAndroid with ActivityIndicator.
react-native-cacheable-image uses ProgressBarIndicator without progress indication, it seems that it can be replaced with ActivityIndicator, which always has an indeterminate progress.
Regards.

Nice. I will try to get to this soon. Much appreciated.


fix dynamic library building issue

fix error: scoped imports are not yet supported in module interfaces import class Foundation.Bundle
Motivation:
When building a dynamic library with swift build --configuration debug -Xswiftc -emit-module-interface -Xswiftc -enable-library-evolution --disable-sandbox, this error occurs:
DerivedSources/resource_bundle_accessor.swift:1:25: error: scoped imports are not yet supported in module interfaces
import class Foundation.Bundle

Modifications:
Change import class Foundation.Bundle to import Foundation
Result:
dynamic library can build success

IIUC this is written as a qualified import on purpose due to the amount of symbols declared in Foundation and brought in by an unqualified import such as in your change.
OTOH I'm tentatively ok with this change if it fixes the issue and doesn't introduce new ones. Let's run the test suite first to see the impact.

@swift-ci smoke test

IIUC this is written as a qualified import on purpose due to the amount of symbols declared in Foundation and brought in by an unqualified import such as in your change.

I think that's the intent, but in practice it doesn't behave that way today. Based on that, this change seems fine to me.

We also offer the option now to declare resources as .embedInCode which omits the accessor generation entirely, making Foundation entirely optional.


How to save the text file of a news link with file name as title of the article?

How to save the text file of a news link with file name as title of the article?
eg. I want to save the content of this news page in a text file with the file name as "title of the article.txt"
https://www.msn.com/en-us/news/us/passenger-accused-of-punching-southwest-flight-attendant-faces-federal-charges/ar-AAO4AFu?ocid=entnewsntp

What do you consider the content of this news page?

Nevermind. Solved. Thanks

@githubtrip  How you did it?


Links in sublists are not registered

I get a Found unused definition (remark-lint:no-unused-definitions) error with the following markdown. Any ideas?
1.  Short description

    Long description

    a.  Subsection

        Long description [link]

[link]: http://google.com

Error message:
  9:1-9:26  warning  Found unused definition  no-unused-definitions  remark-lint

⚠ 1 warning

Hi Alexey, thanks for using remark-lint!
You can’t use letters to make “ordered” lists in markdown. What you have here is a list, where the “Long description [link]” is a code-block.
See astexplorer for how this is seen in markdown.
👋


Interim Meeting Request Tool cannot express requirements

Describe the issue
I don't understand how it's possible to request an in-person interim meeting that lasts more than 5 hours on multiple days.
The tool returns an error if one requests more than 300 minutes on a single session, so I have to split individual days into a morning and an afternoon session.
The tool also returns an error if days are not consecutive, so two sessions on the same day also returns an error.
What is the proper way to request an in-person interim with ~7 hours of meetings per day?
Code of Conduct

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

if this an easy fix, I'll just wait. If it will take more than a few days, I'll just request four separate interims.

Request it as four separate interims.
The use-case for day-long in-person interims, especially on multiple days (and absolutely especially if the days are not sequential) is not addressed. Note also that there is a max length for sessions if you're using meetecho that is (IIRC ~4hrs).

On 2024-04-18, at 16:00, Robert Sparks @.***> wrote:

The use-case for day-long in-person interims, especially on multiple days (and absolutely especially if the days are not sequential) is not addressed. Note also that there is a max length for sessions if you're using meetecho that is (IIRC ~4hrs).

We got hit with that at one of the last T2TRG interims.
I don’t think meetecho has a limit by itself here, but after the 5 hours that datatracker tells it are over, the existing participants can continue, but new participants are no longer accepted.
Until this is fixed, I second the recommendation to do an interim per half-day.
Grüße, Carsten

(Doing label cleanup, apologies that these weren't added mid april) - change here is still queued.


Kafka_2.11 Scala

Dear all,
I would like to contribute so that we can have another version of this plugin using kafka_2.11 client. This is because if you use for example mysql-postgres vertx plugin together with this you will be having transitive dependency conflict (mysql-postgres vertx is using 2.11 and this one using 2.10).
Please advise on how to have this with 2 version. I can create a PR but I am not sure how you going to version it as release to maven repo.
Regards.

Hi,
could you please create a PR which will basically change the maven build so it uses different classifiers for the different versions of scala so we can support all of the versions out there. Something like this: http://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once.
Thanks you for the contribution

Got it. Will come up with a PR soon.

@eemmiirr shouldn't the usage of profiles would be more appropriate here? Not advisable to produce multiple artifacts on 1 pom.

@MazizEsa tried to implement it but then came to the conclusion that it doesn't make much sense so can't you just override it since it's anyway a transitive dependency. Will this work out?


i18n(ru): translate credits

Update:

ru/reference/configuration.mdx
packages/starlight/translations/ru.json

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

ru
reference/configuration.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


why not use difference param

projectName or project
https://azkaban.github.io/azkaban/docs/latest/#api-upload-a-project-zip

project
The name of the project.

https://azkaban.github.io/azkaban/docs/latest/#api-flexible-schedule

projectName
The name of the project.

Please take a look at this documentation.
https://azkaban.readthedocs.io/en/latest/
The one you mentioned is old.

https://azkaban.readthedocs.io/en/latest/ajaxApi.html#fetch-jobs-of-a-flow
https://azkaban.readthedocs.io/en/latest/ajaxApi.html#flexible-scheduling-using-cron


Add Multi-Samba User Mode

When using samba, you may need to use different samba accounts to share different content.
If you run many docker container instances, it will make management more complicated.
I think it is not appropriate to start multiple container instances just because there are multiple accounts for a service.
So I modified the entrypoint script to introduce a multi-account mode.
Users can initialize multiple samba accounts and groups simultaneously by mounting configuration files, allowing for better customization of samba sharing policies.
This patch is compatible with previous versions, and existing configuration files do not need to be modified for existing users.

#12

Thank you for pointing out my mistake and for fixing the code. I apologize for not testing all the possible scenarios.


Added link to a post about the benefits of typescript in dev-teams

I am sorry @simonfranzen, but I would not add this article to the list. It is a good blog post, but it is too shallow, meaning it does not uncover any secret or any other useful or weird aspect of the language or a story about real live experience adopting the language.

Hey @dzharii thaks for the feedback!
And ya, I tried to make my post a bit more public :)


copy/paste error in CONTRIBUTING.md

The tail end of the contributor guidelines mentions requesting a fork in the 'googlecast' organization. For these samples, should read 'googlesamples'

Thanks :) Fixed in 710d0a52a3ec300b25ea11577f13836001ad0d0d.


Textures are missing.

Every time I play the game, the terrain appears black, and same with the sky, and players have textures, but their faces are missing, and their hat is blank.

You need to clear your cache. You submitted the wrong ROM. You need a US z64 rom

okay thanks!

Please close the issue, I cannot myself

i forgot, how do you get a z64 rom again? and yeah i will close it

for legal reasons, i cannot provide information on this. However the ROM file extension needs to end in .z64, you likely have one that ends in .n64

okay also how do i submit another ROM in the site?

type localStorage.removeItem('sm64jsAssets') into the JavaScript console

alright
thanks!


Meetup 32 Post

These are the meetup notes for November 2023

@inodentry @zaycev @kvark @c12hz if you could take a look at this post and make sure everything in your section looks good, that would be great!


H36M, MuCo SMPL GT

Hi. thanks for sharing the nice work.
In your code, You use SMPLify-X pseudo GT on 3D datasets(H36M, MuCo), and use Neural Annot pseudo GT on 2D datasets(CrowdPose, MSCOCO).
Can I ask why you don't Neural Annot on H36M, MuCo?

@asw91666
I remember using NeuralAnnot of H36M and MuCo brought marginal gains. I think it's because H36M and MuCo already have accurate 3D joint annotation (not mesh though), since they are MoCap datasets.


Getting Started: 🤔 Start thinking about project ideas & the technical stack

From voyage-template created by jdmedlock: chingu-voyages/voyage-template#3
Task Description

[x] Check out apps that Voyage teams have created in prior Voyage by reviewing the Project Showcase
[x] Come up with 1 to 3 ideas for projects you'd like to build so you can discuss them with the rest of the team when the Voyage starts.
[x] Think about what technical stack you'd like to use to build that app. Similarly, you'll discuss this as a team at the start of the Voyage.

Technical Considerations
N/a
Additional Considerations
N/a
Resources
Choose a project & create a Vision Statement (Chingu Handbook)
Member of Epic: #15

I suppose we are all in agreement about what stacks we're using and what we're building.


TS error with react native 0.73 and Expo 50

node_modules/agora-react-native-rtm/src/RtmEngine.ts:441:20 - error TS2339: Property 'removeSubscription' does not exist on type 'NativeEventEmitter'.

Duplicate with #763 and will fix in #748
#748 will release in end of February, please make a patch temporarily
@emilnilimaa


Bumping 0.6.3

Improving __repr__ for all objects.
TsGroup __getattr__ and __setattr__ added to access metadata columns directly
TsGroup __setitem__ now allows changes directly to metadata
TsGroup __getitem__ returns column of metadata if passed as string

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 84.877%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2345

Relevant Lines:
2693

💛  - Coveralls


custom json methods for virtual machine

Add custom JSON methods for Marshal and Unmarshal so other projects can write a configuration file based on virtual machine.  the key issue is the use of interfaces, for example devices, in virtual machine.  When using JSON to marshal and unmarshal, we need to tag what kind of device it is so the process can tag and ultimately re-identify the proper device.

@cfergeau friendly ping

rebased and updated for virtioinput and virtiogpu
@jakecorrenti ptal

One small change, but lgtm otherwise

Closing this in favour of https://github.com/crc-org/vfkit/pull/46 where I did some follow-up work.


Feature Request: Change terminal cursor shape depending on mode

Howdy!
I'm really loving the direction euporie is headed. One small request would be to allow customization of the cursor depending on the editing mode. Many people who use modal text editors (e.g., Vim, but not trying to flame any wars) configure their editors to change the cursor shape depending on the mode. For instance, I use a block cursor for command mode and a vertical bar for insert mode (as well as an underline for replace mode, but the former is way more important).
This could be done easily by allowing the user to set a string that may contain escape sequences that is emitted during mode changes, akin to Readline's vi-ins-mode-string and vi-cmd-mode-string. This would also enable further creative uses.
If you'd be willing to provide some pointers to spots in the codebase, I'd be happy to attempt an implementation.
Thanks again for your awesome work!

Hello,
I'm glad you like euporie!
I've actually already implemented this in the dev branch (here), it just hasn't made it into a release yet.
I'll create a new release with this in soon.

Awesome! I feel silly not checking out activity on dev first, so thanks for the reply.
I had also just discovered the E for $EDITOR shortcut, which is also quite fantastic and makes the above less crucial. Although this does make me want to ask, are there are any plans to be able to embed Neovim inside cells? It's totally insane, but would certainly eliminate some friction there.
Feel free to close this issue, unless you'd like to close it when the feature is released. Until then, I'm absolutely going to try out the dev branch.

I've released v2.0.8, which has the cursor-shape changes in.
I think it might be possible to achieve an "embedded neovim" type effect by running euporie inside tmux, and setting the external editor command to open your editor in a pop-up tmux pane. It would look a bit like this:
_editor-embed.webm
I'd need to make some changes in euporie to allow a custom editor command to be configured, and to inject the position parameters into the command, but I think it might work.

Awesome work. I've been using the dev branch and really like the cursor behavior. Well done!

Hello again,
With v2.1.0 it's now possible to simulate embedding an external editor inside cells.
You need to run euporie inside a tmux session, and set the new external_editor configuration option to launch your editor in a tmux popup as follows:
euporie-notebook --external-editor="tmux display-popup -x {left} -y {bottom} -w {width} -h {height} -B -E neovim" my-notebook.ipynb

The positional arguments in the external-editor command get replaced with the cell's position by euporie, resulting in the popup appearing directly over the cell being edited.


Will ProsoSpeech be open here?

No. ProsoSpeech is part of the production of the company where I interned and thus it won't be released.


Mac OS, DBeaver 3.5.5 - Inline Editing of Postgres HSTORE Column leads to DBException when saving

Inline Editing of Postgres HSTORE Column leads to DBException when saving
My table looks like this:
CREATE TABLE public.entry (
    id bigserial NOT NULL,
    uuid uuid DEFAULT uuid_generate_v4(),
    type varchar(64),
    name varchar(255),
    attributes hstore,
    creation timestamp DEFAULT 'timezone('UTC'::text, now())',
   last_modified timestamp DEFAULT 'timezone('UTC'::text, now())'
);

Trying to manipulate values in the attributes column (hstore type) and saving lead reproducible to a DB Exception:
DBCException: SQL Error [XX000]: ERROR: Syntax error near 's' at position 9
   org.postgresql.util.PSQLException: PSQLException: ERROR: Syntax error near 's' at position 9

DB: PostgresQL 9.4.4
jdbc: 9.4-1206-jdbc4

hstore value should look like "key1"=>"value1", "key2"=>"value1"
What actual value causes this issue?

data is represented in the grid like this:
{key_activity=sport, key_location=gym}
UPDATE entry set attributes = attributes || '"key_activity"=>"soccer"'

works


[WIP] #260 Convert Schema into edn::Value

Here is what I have done so far. Can I please check that this is right?
Also, I am not sure the best way to test the output. Advice welcome.

Here's the simple way to test: build the EDN you expect the schema fragment to produce, and check they're equal.
https://github.com/mozilla/mentat/blob/rust/edn/tests/tests.rs#L853
@ncalexan might have other ideas.


fix(ffe-form): Fix vertical alignment of ffe-tooltip

Changes line-height from 22px to 24px to better center the ?
vertically.
Fixes #731

Comparison screenshots in the linked issue

Coverage remained the same at 81.459% when pulling f3b8dcb7a68900674d0d888507e82abd0f9d7448 on ivarni:731-fix-vertical-alignment into 40ad14dc3ea31d57c1d514b68ffe47ea9d24da78 on SpareBank1:develop.


fix non-ascii filename mojibake when uploaded

before: 日本語ファイル名.txt -> ?????.txt
after: 日本語ファイル名.txt -> 日本語ファイル名.txt
This patch requires patched version of clj-http (https://github.com/dakrone/clj-http/pull/522), so CI fails for now.
how to try this patch
$ git clone git@github.com:toyokumo/clj-http.git
$ cd clj-http
$ git checkout add-option-to-add-multipart-charset
$ rm -rf ~/.m2/repository/clj-http/clj-http/3.10.1-SNAPSHOT/ # if needed
$ lein install
$ cd ..
$ git clone git@github.com:toyokumo/kintone-clj.git
$ git checkout fix-filename-mojibake

add a kintone app that has 添付ファイル field
add dev-resources/config.edn

{:auth {:basic {:username "hoge" :password "hoge"}
        :api-token "hoge"}
 :domain "hoge"
 :app 999999999}

try dev/test.clj.

This is a draft for now (waiting for https://github.com/dakrone/clj-http/pull/522 to be merged).

This is a draft for now (waiting for dakrone/clj-http#522 to be merged).
Merged. Waiting for next release.

dev/test.clj is ok
Loading dev/test.clj... done
(run-tests 'test)

Testing test

Ran 16 tests containing 42 assertions.
0 failures, 0 errors.
=> {:test 16, :pass 42, :fail 0, :error 0, :type :summary}

I also manually checked that file-upload uploads 日本語ファイル名.txt correctly.

1d11e29 is redundant, but don't care


No PT-BR

I got the following error
An Error occurred: pt-br --> No support for the provided language.

Whatever translator (Google Translate I'm guessing) you've selected doesn't support Brazilian Portuguese


Client Allocation Request for: asd

Client Allocation Questions
Core Information

Name: asd
Website / Social Media: asd, (asd, asd)
Region: North America
DataCap Requested: 288 GiB
Addresses to be Notarized: asd
Notary Requested: Deon Erda

This user’s identity has has been verified through filplus.storage

This user’s identity has been verified through filplus.storage


Obfuscate the client

Hi,
I love your project, thank you for supporting and developing it.
Something cool that may improve the opsec during is having the client obfuscation.
I've just came across this project -https://github.com/burrowers/garble
Also this post showing practical usage of it:
https://posts.specterops.io/get-your-socks-on-with-gtunnel-4a70a9b82b24
What do you think ?
Cheers,
PY

Howdy!
I've been thinking about adding garble to the server link command for ages and just never got around to it.
With you expression your want for it, I'll add it in the next couple days :)

Awesome !!!
Just make it sure you use the latest source code, not the release... because of this issue:
https://github.com/burrowers/garble/issues/577
Just tested and it compiles the binaries and seems to work just fine.
Haven't tested the -tiny, -literals and -seed=random , but you should know better than me if those are needed.

Howdy @presianbg this now lives on the unstable branch. Fee free to test it out with link --garble.
Feel free to close the issue once you have


Are App Service Plans behind the firewall?

Hi, can you please confirm if App Services on a different App Service Plan (in the same Subscription) require explicit permission?
I've tested that App Services on the same Plan do not require explicit permission, which makes sense. Just wondering if same is true for different App Service Plans?
Thank you.

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

ID: d90bbf62-44f9-30a6-d6ea-bbf776f6efc5
Version Independent ID: b3961eac-6c70-b345-f48c-e4c0ec67059c
Content: Azure App Service IP Restrictions
Content Source: articles/app-service/app-service-ip-restrictions.md
Service: app-service-web
GitHub Login: @ccompy
Microsoft Alias: ccompy

Oops, just tried a different test and unable to access app service from same plan without adding the plan's own IP address.
This is not convenient. :(

@deruss Thanks for the feedback. We are actively investigating and will get back to you soon.

@deruss As you found, you will need to add the IPs for internal (Azure) services and external services. Other services such as Azure SQL offer the ability to whitelist any internal traffic with a check box but the built in IP restrictions requires you to manually add all resources at this time.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


[BUG] Concurrent Requests Share Input Data

The @ParameterStorage used e.g. in @QueryParameter is shared among all instances of one implementation of Responder.
Consider the following code:
import Meridian
import Foundation

struct SampleEndpoint: Responder {
    @QueryParameter("name") var name: String

    func execute() throws -> Response {
        let n = name
        print(n)
        sleep(5)
        print("\(n) \(n == name ? "==" : "!=") \(name)")
        return JSON(name)
    }
}

Server(errorRenderer: BasicErrorRenderer())
    .register {
        SampleEndpoint()
            .on("/")
    }
    .listen()

When two request arrive within the 5 second margin the name of the second one overrides the name in the first request. E.g.:
echo "http://localhost:3000/?name=khanlou\nhttp://localhost:3000/?name=themomax" | xargs -P 2 -n 1 curl
"themomax""themomax"

While my example is blocking, I think this problem should prevail for non-blocking Responders since there are multiple EventLoops running anyways.
We had the exact same issue for Apodini. We were able to solve it by using the Runtime framework instead of Mirror. Runtime allows for editing value types and thus don't have to use a class based store on the parameter types.
Please let me know in case you find a solution that doesn't require Runtime.

Hmm, good find! I wonder if we can use isKnownUniquelyReferenced to make it effectively copy-on-write? Did yall try that?

No, we didn’t. Never heard about it before tbh. I’m curious to see how it turns out.

isKnownUniquelyReferenced didn't work, because update(_ requestContext: RequestContext, errors: inout [Error]) isn't mutating. And if it could be mutating, then it would we wouldn't need parameter storage in the first place. I will think more about this

I may have found another solution next to the Runtime framework that is based on Codable. I haven't implemented it yet, but I am pretty confident it works. The basic idea is that instead of relying on runtime reflection we abuse the automatic conformance to Codable in order to get references to all children of a Responder. We have to implement a custom class that is both an Encoder and Decoder and basically just stores all the property wrappers used on a Responder while encoding. Each time a request comes in, we generate new Responder instance by decoding from this same custom class instance.
The point is that we don't pass out the original property wrapper objects in the process of decoding. At this point we can perform mutating operations on the property wrapper instances. Here you'd have to allocate a new @ParameterStorage on a copy of the original property wrapper and pass out this copy.
As I already mentioned, I haven't tried this out yet. I don't know how this approach would compare to the usage of the Runtime library in regards to runtime-performance. Based on the runtime of the JSONDecoder, I could imagine this approach could be up to 3x more performant as compared to the Runtime library, but that is just a semi-educated guess.

Or you could instantiate Responder when the route is hit rather than keeping a single instance around for the application’s lifetime.

....That actually gives me an idea. What if we stored the RouteBuilder block and just ran it again to construct new structs (and more importantly new backing stores) any time a new request came in?

That fix seems to solve the problem! I'm going to try it out for a few weeks in some personal projects before making a release, but this is really promising!

I‘m really curios how this will turn out in the long run as you kind of give up some control (especially in terms of always getting an „equal“ Responder (e.g. as defined by a future OpenAPI support).
@khanlou I also had an idea in regards to the actual implementation of injecting PropertyWrappers with the requestContext. Currently, you use Mirror to iterate over the properties of the Responder which is quite expensive. Instead you could make all PropertyWrappers append themselves to an array that is stored in a static variable on initialisation. You would have to use a NIO.ThreadSpecificVariable for that.
Basically, when a request arrives, before instantiating the Responder, you habe to place an empty array ob the static ThreadSpecificVariable. Then you call the Responder-intializer-closure and all the PropertyWrappers append themselves to the array. You then store the array (containing a copy of all PropertyWrappers) , from the static variable, along with the actual instance of the Responder. Before evaluating the Responder, just where you currently use Mirror, you iterate over the array instead. All changes here are non-mutating, as the changes only affect the Inner storage (which is a reference type). This also means that changes are propagated to the actual Responder instance. After that you can evaluate the Responder as usual.
This way you wouldn‘t have to use runtime reflection at all.

You then store the array (containing a copy of all PropertyWrappers) , from the static variable, along with the actual instance of the Responder. Before evaluating the Responder, just where you currently use Mirror, you iterate over the array instead. All changes here are non-mutating, as the changes only affect the Inner storage (which is a reference type).

Wouldn't this result in property wrapper update methods getting called for responders that won't be responding? That doesn't seem good to me, since they could have side effects (like updating a session's lastActive field or something).

With the current setup, yes. You would have to adapt Route so you can do the matching without instantiating the Responder. Basically, instead of storing closures of Route, each Route would have to store a closure of its Responder. Then you can directly access the RouteMatcher without initializing the Responder.
Starting from that line, you'd then have about the following:
let results: (() -> Responder, MatchedRoute)?
(results, errorRenderer) = router.route(for: header)

guard let (routeClosure, matchedRoute) = results else {
    throw NoRouteFound()
}

let requestContext = RequestContext(
    header: header,
    matchedRoute: matchedRoute,
    postBody: body
)

var errors: [Error] = []

myStaticThreadSpecificVariable.currentValue.childrenArray = []

let route = routeClosure()

let children = myStaticThreadSpecificVariable.currentValue.childrenArray

for child in children {
    if let prop = child as? PropertyWrapper {
        prop.update(requestContext, errors: &errors)
    }
}

if let firstError = errors.first {
// from here it's just as before


IOS 11 Issue

Hi list show overlay to textfield

Any idea?
Thank you

I fixed this by Commenting the animation and assigning tableView.frame to tableViewFrame, for some strange reason in iOS 11 assigning inside the animation block is not working
var tableViewFrame = CGRect(x: 0, y: 0, width: frame.size.width - 4, height: tableHeight)
             tableViewFrame.origin = self.convert(tableViewFrame.origin, to: nil)
             tableViewFrame.origin.x += 2
             tableViewFrame.origin.y += frame.size.height + 2
//                UIView.animate(withDuration: 0.2, animations: { [weak self] in
//                    self?.tableView?.frame = tableViewFrame
//                })

             tableView.frame = tableViewFrame

Hey!, sorry for the delay, can you please help me replicating it?. I can't.

@alaa001 Thanks it working properly now

In my case, the filtering results weren't shown at all on the iOS 11.1
fix from @alaa001 works, thanks

@livenplay do you have the chance to download the last code and to run the example project in order to double check that the issue is happening only in your project for any reason?. If that's the case probably we can detect together what's different in your configuration so I can find a fix for the issue without the need to avoid the animation. Thanks in advance.


TLS Bootstrapping

This PR enables TLS bootstrap for Lokomotive.
NOTE: Look at the PR per commit to look at the changes.
Fixes https://github.com/kinvolk/lokomotive/issues/177

In kube-apiserver config:

Add Node authoriser.
Enable NodeRestriction admission plugin.
Enable bootstrap token auth.

In kube-controller-manager:

Enable tokencleaner controller:
Set cluster signing duration flag.

Remove the ClusterRoleBinding system-nodes which assigned group system:nodes permission to role system:node.

This PR removes all the certs generated statically for kubelet. These certs are no longer needed with bootstrap kubelet.

Add terraform plugin random to bootkube which will generate the random strings for bootstrap token.

Add bootstrap-secrets chart

Add chart that will install bootstrap secrets in kube-system namespace corresponding to a node.

Add variable bootstrap_tokens to bootkube so that platforms can pass a list of token-id and token-secret corresponding to each node in the cluster.

Add ClusterRoleBindings so as to enable kubelet bootstrapping mechanism.

In kubelet:

Provide the bootrap kubeconfig via flag --bootstrap-kubeconfig.

Provide a path to store downloaded kubeconfig via existing --kubeconfig flag. This place has to writable.

Added flag to rotate ceritificates.

Change the path of kubeconfig to delete node.

For packet: Generate bootstrap tokens per node

Create bootstrap kubeconfig, with random token id and secret, per node.

Add bootstrap kubeconfig template.

Output CA cert, API server endpoint and bootstrap-secrets chart values in controller module.

Pass CA cert and API server endpoint to worker pools, so that they can construct bootstrap kubeconfig. To enable this data flow add variables ca_cert and apiserver.

Pass tokens from worker pools to controller pool, so that it combined with controller pool tokens and can be passed to bootstrap-secrets chart in bootkube. To enable this data flow add variable worker_bootstrap_tokens in controller module and output worker_bootstrap_tokens in worker module.

Don't pass statically generated kubeconfig to the workers.

cluster-apply: Apply bootstrap-secrets helm chart without node bootup check

Bootstrap secrets should be available so that nodes join the cluster. So this chart should be installed without node readiness checks.

For aws: Generate bootstrap tokens per node

Create bootstrap kubeconfig, with random token id and secret, per node.

Add bootstrap kubeconfig template.

Output CA cert, API server endpoint and bootstrap-secrets chart values in controller module.

Pass CA cert and API server endpoint to worker pools, so that they can construct bootstrap kubeconfig. To enable this data flow add variables ca_cert and apiserver.

Pass tokens from worker pools to controller pool, so that it combined with controller pool tokens and can be passed to bootstrap-secrets chart in bootkube. To enable this data flow add variable worker_bootstrap_tokens in controller module and output worker_bootstrap_tokens in worker module.

Don't pass statically generated kubeconfig to the workers.

Pass kubeconfig to controller nodes via ignition config.

For baremetal: Generate bootstrap tokens per node

Create bootstrap kubeconfig, with random token id and secret, per node.

Add bootstrap kubeconfig template.

Replace a token
This helped in in regenerating the token and replacing the node:
export poolname=pool-1
export workernumber=2
export clustername=suraj-lk-cluster

cd assets/terraform
kubectl drain $clustername-$poolname-worker-$workernumber
kubectl delete node $clustername-$poolname-worker-$workernumber
terraform taint module.worker-$poolname.random_string.bootstrap-token-id[$workernumber]
terraform taint module.worker-$poolname.random_string.bootstrap-token-secret[$workernumber]
terraform taint module.worker-$poolname.packet_device.nodes[$workernumber]

Right now we use same token for each node. Which is not a big deal of a problem if you think about it. The real problem is creating a new token and distributing it across nodes. How do we achieve it later, if the token is leaked accidentally?

What I would do is to create a token per worker group and then collect them in bootkube module and create them from there.
Also, in case the token leaks, one can taint the random resources in Terraform and tokens will be recreated. And so should be worker groups then.

@invidian

Also, in case the token leaks, one can taint the random resources in Terraform and tokens will be recreated. And so should be worker groups then.

Can this be triggered from lokoctl? Or can we think about a feature of doing it like that for lokoctl?
I would have ideally wanted a per node token. And a mechanism to ship bootstrap token without node recreation.

Can this be triggered from lokoctl? Or can we think about a feature of doing it like that for lokoctl?

Yes, I can imagine we could implement it as a feature in lokoctl. To be able to manage the tokens somehow.

I would have ideally wanted a per node token.

I don't think that's possible. We use Ignition configuration per worker group to utilize cloud node groups capabilities.

And a mechanism to ship bootstrap token without node recreation.

I think it's OK, if we don't allow updating it on the nodes, as after the node registers, it should use obtained kubeconfig anyway, not the bootstrap token. I wonder for how long the certificates are issued. Because if it's like 90 days, then node would have to be down for this period to require re-using bootstrap token. I'm not even sure if that's implemented.

This helped in in regenerating the token and replacing the node:
export poolname=pool-1
export workernumber=2
export clustername=suraj-lk-cluster

cd assets/terraform
kubectl drain $clustername-$poolname-worker-$workernumber
kubectl delete node $clustername-$poolname-worker-$workernumber
terraform taint module.worker-$poolname.random_string.bootstrap-token-id[$workernumber]
terraform taint module.worker-$poolname.random_string.bootstrap-token-secret[$workernumber]
terraform taint module.worker-$poolname.packet_device.nodes[$workernumber]

I deployed a cluster with current master 461abbf91f1ae4986bcc5acc6ea8b63bb943fbe9 and then tried to upgrade it with current PR and I see following changes:
Details

$ lokoctl cluster apply -v
...
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
  - destroy
 <= read (data resources)

Terraform will perform the following actions:

  # module.packet-my-cluster.data.ct_config.controller-ignitions[0] will be read during apply
  # (config refers to values not yet known)
 <= data "ct_config" "controller-ignitions"  {
      + content  = (known after apply)
      + id       = (known after apply)
      + platform = "packet"
      + rendered = (known after apply)
      + snippets = []
    }

  # module.packet-my-cluster.data.ct_config.controller-install-ignitions[0] will be read during apply
  # (config refers to values not yet known)
 <= data "ct_config" "controller-install-ignitions"  {
      + content  = (known after apply)
      + id       = (known after apply)
      + rendered = (known after apply)
    }

  # module.packet-my-cluster.data.template_file.bootstrap-kubeconfig[0] will be read during apply
  # (config refers to values not yet known)
 <= data "template_file" "bootstrap-kubeconfig"  {
      + id       = (known after apply)
      + rendered = (known after apply)
      + template = <<~EOT
            apiVersion: v1
            kind: Config
            clusters:
            - name: local
              cluster:
                server: ${server}
                certificate-authority-data: ${ca_cert}
            users:
            - name: kubelet
              user:
                token: ${token_id}.${token_secret}
            contexts:
            - context:
                cluster: local
                user: kubelet
        EOT
      + vars     = {
          + "ca_cert"      = "[REDACTED]"
          + "server"       = "https://my-cluster-private.example.com:6443"
          + "token_id"     = (known after apply)
          + "token_secret" = (known after apply)
        }
    }

  # module.packet-my-cluster.packet_device.controllers[0] will be updated in-place
  ~ resource "packet_device" "controllers" {
        access_private_ipv4              = "<IP_ADDRESS>"
        access_public_ipv4               = "<IP_ADDRESS>"
        access_public_ipv6               = "2604:1380:1000:cd00::1"
        always_pxe                       = false
        billing_cycle                    = "hourly"
        created                          = "2020-06-19T10:13:11Z"
        deployed_facility                = "sjc1"
        facilities                       = [
            "sjc1",
        ]
        force_detach_volumes             = false
        hostname                         = "my-cluster-controller-0"
        id                               = "02369f5a-f2fb-4630-8278-2c58b2e52182"
        locked                           = false
        network                          = [
            {
                address = "<IP_ADDRESS>"
                cidr    = 31
                family  = 4
                gateway = "<IP_ADDRESS>"
                public  = true
            },
            {
                address = "2604:1380:1000:cd00::1"
                cidr    = 127
                family  = 6
                gateway = "2604:1380:1000:cd00::"
                public  = true
            },
            {
                address = "<IP_ADDRESS>"
                cidr    = 31
                family  = 4
                gateway = "<IP_ADDRESS>"
                public  = false
            },
        ]
        network_type                     = "layer3"
        operating_system                 = "flatcar_stable"
        plan                             = "t1.small.x86"
        ports                            = [
            {
                bonded = true
                id     = "f0f53195-8600-4a5f-9a23-eb713e75d1fb"
                mac    = ""
                name   = "bond0"
                type   = "NetworkBondPort"
            },
            {
                bonded = true
                id     = "78ed0f56-35cc-4f5c-8d76-e06f07946b14"
                mac    = "0c:c4:7a:b5:86:ea"
                name   = "eth0"
                type   = "NetworkPort"
            },
            {
                bonded = true
                id     = "2a75c5c7-f65f-43a3-93d8-7408f2e928e2"
                mac    = "0c:c4:7a:b5:86:eb"
                name   = "eth1"
                type   = "NetworkPort"
            },
        ]
        project_id                       = "436c24d4-770d-46c7-a610-8c32d7e8fe22"
        public_ipv4_subnet_size          = 31
        ssh_key_ids                      = [
            "[REDACTED]",
        ]
        state                            = "active"
      ~ tags                             = [
          - "lokoctl-version:v0.1.0-489-g461abbf9",
          + "lokoctl-version:v0.1.0-500-gd36430b7",
        ]
        updated                          = "2020-06-19T10:20:18Z"
      ~ user_data                        = (sensitive value)
        wait_for_reservation_deprovision = false
    }

  # module.packet-my-cluster.random_string.bootstrap-token-id[0] will be created
  + resource "random_string" "bootstrap-token-id" {
      + id          = (known after apply)
      + length      = 6
      + lower       = true
      + min_lower   = 0
      + min_numeric = 0
      + min_special = 0
      + min_upper   = 0
      + number      = true
      + result      = (known after apply)
      + special     = false
      + upper       = false
    }

  # module.packet-my-cluster.random_string.bootstrap-token-secret[0] will be created
  + resource "random_string" "bootstrap-token-secret" {
      + id          = (known after apply)
      + length      = 16
      + lower       = true
      + min_lower   = 0
      + min_numeric = 0
      + min_special = 0
      + min_upper   = 0
      + number      = true
      + result      = (known after apply)
      + special     = false
      + upper       = false
    }

  # module.packet-my-cluster.template_dir.calico_host_protection will be created
  + resource "template_dir" "calico_host_protection" {
      + destination_dir = "../cluster-assets/charts/kube-system/calico-host-protection"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/packet/flatcar-linux/kubernetes/calico-host-protection"
    }

  # module.worker-pool-1.data.ct_config.ignitions[0] will be read during apply
  # (config refers to values not yet known)
 <= data "ct_config" "ignitions"  {
      + content  = (known after apply)
      + id       = (known after apply)
      + platform = "packet"
      + rendered = (known after apply)
      + snippets = []
    }

  # module.worker-pool-1.data.ct_config.install-ignitions[0] will be read during apply
  # (config refers to values not yet known)
 <= data "ct_config" "install-ignitions"  {
      + content  = (known after apply)
      + id       = (known after apply)
      + rendered = (known after apply)
    }

  # module.worker-pool-1.data.template_file.bootstrap-kubeconfig[0] will be read during apply
  # (config refers to values not yet known)
 <= data "template_file" "bootstrap-kubeconfig"  {
      + id       = (known after apply)
      + rendered = (known after apply)
      + template = <<~EOT
            apiVersion: v1
            kind: Config
            clusters:
            - name: local
              cluster:
                server: ${server}
                certificate-authority-data: ${ca_cert}
            users:
            - name: kubelet
              user:
                token: ${token_id}.${token_secret}
            contexts:
            - context:
                cluster: local
                user: kubelet
        EOT
      + vars     = {
          + "ca_cert"      = "[REDACTED]"
          + "server"       = "https://my-cluster-private.example.com:6443"
          + "token_id"     = (known after apply)
          + "token_secret" = (known after apply)
        }
    }

  # module.worker-pool-1.packet_device.nodes[0] will be updated in-place
  ~ resource "packet_device" "nodes" {
        access_private_ipv4              = "<IP_ADDRESS>"
        access_public_ipv4               = "<IP_ADDRESS>"
        access_public_ipv6               = "2604:1380:1000:cd00::3"
        always_pxe                       = false
        billing_cycle                    = "hourly"
        created                          = "2020-06-19T10:13:10Z"
        deployed_facility                = "sjc1"
        facilities                       = [
            "sjc1",
        ]
        force_detach_volumes             = false
        hostname                         = "my-cluster-pool-1-worker-0"
        id                               = "0abff247-04a3-4e25-ad96-ad0d0b7c28f7"
        locked                           = false
        network                          = [
            {
                address = "<IP_ADDRESS>"
                cidr    = 31
                family  = 4
                gateway = "<IP_ADDRESS>"
                public  = true
            },
            {
                address = "2604:1380:1000:cd00::3"
                cidr    = 127
                family  = 6
                gateway = "2604:1380:1000:cd00::2"
                public  = true
            },
            {
                address = "<IP_ADDRESS>"
                cidr    = 31
                family  = 4
                gateway = "<IP_ADDRESS>"
                public  = false
            },
        ]
        network_type                     = "layer3"
        operating_system                 = "flatcar_stable"
        plan                             = "c2.medium.x86"
        ports                            = [
            {
                bonded = true
                id     = "bc3a866b-c6d9-4477-987d-5d5c2ed20885"
                mac    = ""
                name   = "bond0"
                type   = "NetworkBondPort"
            },
            {
                bonded = true
                id     = "8e5e8c91-456d-4b5a-b08d-f43e321a3b23"
                mac    = "50:6b:4b:b7:16:b6"
                name   = "eth0"
                type   = "NetworkPort"
            },
            {
                bonded = true
                id     = "89d209db-6f1b-4501-bb87-de4a787dd864"
                mac    = "50:6b:4b:b7:16:b7"
                name   = "eth1"
                type   = "NetworkPort"
            },
        ]
        project_id                       = "436c24d4-770d-46c7-a610-8c32d7e8fe22"
        public_ipv4_subnet_size          = 31
        ssh_key_ids                      = [
            "[REDACTED]",
        ]
        state                            = "active"
      ~ tags                             = [
          - "lokoctl-version:v0.1.0-489-g461abbf9",
          + "lokoctl-version:v0.1.0-500-gd36430b7",
        ]
        updated                          = "2020-06-19T10:23:04Z"
      ~ user_data                        = (sensitive value)
        wait_for_reservation_deprovision = false
    }

  # module.worker-pool-1.random_string.bootstrap-token-id[0] will be created
  + resource "random_string" "bootstrap-token-id" {
      + id          = (known after apply)
      + length      = 6
      + lower       = true
      + min_lower   = 0
      + min_numeric = 0
      + min_special = 0
      + min_upper   = 0
      + number      = true
      + result      = (known after apply)
      + special     = false
      + upper       = false
    }

  # module.worker-pool-1.random_string.bootstrap-token-secret[0] will be created
  + resource "random_string" "bootstrap-token-secret" {
      + id          = (known after apply)
      + length      = 16
      + lower       = true
      + min_lower   = 0
      + min_numeric = 0
      + min_special = 0
      + min_upper   = 0
      + number      = true
      + result      = (known after apply)
      + special     = false
      + upper       = false
    }

  # module.packet-my-cluster.module.bootkube.local_file.bootstrap-secrets will be created
  + resource "local_file" "bootstrap-secrets" {
      + content              = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "../cluster-assets/charts/kube-system/bootstrap-secrets.yaml"
      + id                   = (known after apply)
    }

  # module.packet-my-cluster.module.bootkube.local_file.kubeconfig-kubelet will be destroyed
  - resource "local_file" "kubeconfig-kubelet" {
      - content              = <<~EOT
            apiVersion: v1
            kind: Config
            clusters:
            - name: local
              cluster:
                server: https://my-cluster-private.example.com:6443
                certificate-authority-data: [REDACTED]
            users:
            - name: kubelet
              user:
                client-certificate-data: [REDACTED]
                client-key-data: [REDACTED]
            contexts:
            - context:
                cluster: local
                user: kubelet
        EOT -> null
      - directory_permission = "0777" -> null
      - file_permission      = "0777" -> null
      - filename             = "../cluster-assets/auth/kubeconfig-kubelet" -> null
      - id                   = "87b108749e4613132f302090c2250614e582e0a1" -> null
    }

  # module.packet-my-cluster.module.bootkube.local_file.kubelet-crt will be destroyed
  - resource "local_file" "kubelet-crt" {
      - content              = <<~EOT
            -----BEGIN CERTIFICATE-----
            [REDACTED]
            -----END CERTIFICATE-----
        EOT -> null
      - directory_permission = "0777" -> null
      - file_permission      = "0777" -> null
      - filename             = "../cluster-assets/tls/kubelet.crt" -> null
      - id                   = "b3ca8228871443057e4795d62a671cb2325593bb" -> null
    }

  # module.packet-my-cluster.module.bootkube.local_file.kubelet-key will be destroyed
  - resource "local_file" "kubelet-key" {
      - content              = <<~EOT
            -----BEGIN RSA PRIVATE KEY-----
            [REDACTED]
            -----END RSA PRIVATE KEY-----
        EOT -> null
      - directory_permission = "0777" -> null
      - file_permission      = "0777" -> null
      - filename             = "../cluster-assets/tls/kubelet.key" -> null
      - id                   = "43c482d7068e1b5d1776874e540a3a5b209e3fac" -> null
    }

  # module.packet-my-cluster.module.bootkube.template_dir.bootstrap-manifests will be created
  + resource "template_dir" "bootstrap-manifests" {
      + destination_dir = "../cluster-assets/bootstrap-manifests"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/bootstrap-manifests"
      + vars            = {
          + "cloud_provider"                = ""
          + "etcd_servers"                  = "https://my-cluster-etcd0.dev.lokomotive-k8s.net:2379"
          + "kube_apiserver_image"          = "k8s.gcr.io/kube-apiserver:v1.18.3"
          + "kube_controller_manager_image" = "k8s.gcr.io/kube-controller-manager:v1.18.3"
          + "kube_scheduler_image"          = "k8s.gcr.io/kube-scheduler:v1.18.3"
          + "pod_cidr"                      = "<IP_ADDRESS>/16"
          + "service_cidr"                  = "<IP_ADDRESS>/16"
          + "trusted_certs_dir"             = "/usr/share/ca-certificates"
        }
    }

  # module.packet-my-cluster.module.bootkube.template_dir.bootstrap-secrets will be created
  + resource "template_dir" "bootstrap-secrets" {
      + destination_dir = "../cluster-assets/charts/kube-system/bootstrap-secrets"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/charts/bootstrap-secrets"
    }

  # module.packet-my-cluster.module.bootkube.template_dir.calico will be created
  + resource "template_dir" "calico" {
      + destination_dir = "../cluster-assets/charts/kube-system/calico"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/charts/calico"
    }

  # module.packet-my-cluster.module.bootkube.template_dir.kube-apiserver will be created
  + resource "template_dir" "kube-apiserver" {
      + destination_dir = "../cluster-assets/charts/kube-system/kube-apiserver"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/charts/kube-apiserver"
    }

  # module.packet-my-cluster.module.bootkube.template_dir.kubernetes will be created
  + resource "template_dir" "kubernetes" {
      + destination_dir = "../cluster-assets/charts/kube-system/kubernetes"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/charts/kubernetes"
    }

  # module.packet-my-cluster.module.bootkube.template_dir.pod-checkpointer will be created
  + resource "template_dir" "pod-checkpointer" {
      + destination_dir = "../cluster-assets/charts/kube-system/pod-checkpointer"
      + id              = (known after apply)
      + source_dir      = "../lokomotive-kubernetes/bootkube/resources/charts/pod-checkpointer"
    }

  # module.packet-my-cluster.module.bootkube.tls_cert_request.kubelet will be destroyed
  - resource "tls_cert_request" "kubelet" {
      - cert_request_pem = <<~EOT
            -----BEGIN CERTIFICATE REQUEST-----
            [REDACTED]
            -----END CERTIFICATE REQUEST-----
        EOT -> null
      - id               = "bc1e3d773d9faf14264da127ac8e723cad82e606" -> null
      - key_algorithm    = "RSA" -> null
      - private_key_pem  = (sensitive value)

      - subject {
          - common_name    = "kubelet" -> null
          - organization   = "system:nodes" -> null
          - street_address = [] -> null
        }
    }

  # module.packet-my-cluster.module.bootkube.tls_locally_signed_cert.kubelet will be destroyed
  - resource "tls_locally_signed_cert" "kubelet" {
      - allowed_uses          = [
          - "key_encipherment",
          - "digital_signature",
          - "server_auth",
          - "client_auth",
        ] -> null
      - ca_cert_pem           = "05bb582154ce7258551c8eba1bfc0a71d2fd10d1" -> null
      - ca_key_algorithm      = "RSA" -> null
      - ca_private_key_pem    = (sensitive value)
      - cert_pem              = <<~EOT
            -----BEGIN CERTIFICATE-----
            [REDACTED]
            -----END CERTIFICATE-----
        EOT -> null
      - cert_request_pem      = "b6b17a5743ed0549bd29178536a8ee853d43574d" -> null
      - early_renewal_hours   = 0 -> null
      - id                    = "189863159367432705978437838633353101998" -> null
      - ready_for_renewal     = false -> null
      - validity_end_time     = "2021-06-19T15:43:07.92944791+05:30" -> null
      - validity_period_hours = 8760 -> null
      - validity_start_time   = "2020-06-19T15:43:07.92944791+05:30" -> null
    }

  # module.packet-my-cluster.module.bootkube.tls_private_key.kubelet will be destroyed
  - resource "tls_private_key" "kubelet" {
      - algorithm                  = "RSA" -> null
      - ecdsa_curve                = "P224" -> null
      - id                         = "ce5fc96d008d61bc2c0db0c72bc9665e86b28ba9" -> null
      - private_key_pem            = (sensitive value)
      - public_key_fingerprint_md5 = "82:c6:8f:ec:b6:39:df:22:7d:dc:5a:02:52:be:e8:0d" -> null
      - public_key_openssh         = <<~EOT
            [REDACTED]
        EOT -> null
      - public_key_pem             = <<~EOT
            -----BEGIN PUBLIC KEY-----
            [REDACTED]
            -----END PUBLIC KEY-----
        EOT -> null
      - rsa_bits                   = 2048 -> null
    }

Plan: 12 to add, 2 to change, 6 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Do you want to proceed with cluster apply? [type "yes" to continue]: hellno
INFO[0085] Cluster apply cancelled                       args="[]" command="lokoctl cluster apply"

The PR is open @iaguis @ipochi @invidian

@surajssd what's the status of this PR?

@surajssd what's the status of this PR?

started working on it again.

Needs rebasing :/

Something is wrong with the AWS CI, this pipeline is failing consistently on the same test case. I wonder what changed that this test fails :thinking: :
    ...
    TestNoExtraSSHKeysOnNodes: util.go:138: daemonset: test-ssh-keys-rfcmx, replicas: 4/4
    TestNoExtraSSHKeysOnNodes: util.go:138: daemonset: test-ssh-keys-rfcmx, replicas: 4/4
    TestNoExtraSSHKeysOnNodes: util.go:272: test-ssh-keys-rfcmx-2qvbk/test-ssh-keys: sha512sum: /home/core/.ssh/authorized_keys: No such file or directory
    TestNoExtraSSHKeysOnNodes: util.go:272: test-ssh-keys-rfcmx-ckhdl/test-ssh-keys: sha512sum: /home/core/.ssh/authorized_keys: No such file or directory
    TestNoExtraSSHKeysOnNodes: util.go:149: error while waiting for the daemonset: timed out waiting for the condition

This is from the pod running on the worker node, so it is true that there are no ssh keys there.
$ kl test-ssh-keys-ttsht-qlkv6
uid=0(root) gid=0(root) groups=0(root)
total 16
drwx------. 2<PHONE_NUMBER> Aug 19 13:55 .
drwxr-xr-x. 3 root root 4096 Aug 25 07:03 ..
sha512sum: /home/core/.ssh/authorized_keys: No such file or directory

Also, rebase is needed again :/

I installed cluster with old version and tried to upgrade with this version after adding a variable enable_tls_bootstrap = false and it seems that it is trying to recreate controller nodes. I am investigating that now.

I installed cluster with old version and tried to upgrade with this version after adding a variable enable_tls_bootstrap = false and it seems that it is trying to recreate controller nodes. I am investigating that now.

@surajssd did you resolve this issue? If so, how? (GitHub does not show diff between the reviews :/)

@invidian yes resolved it by adding if else in helm chart config and in terraform config.

@knrt10 added docs.

Thanks for the continuous feedback @invidian


Changes Title to Site.Title in the head for the website title to show up

The site title was not showing up for my installation, upon troubleshooting I realised this is a problem with the base installation when you are not using posts to dictate the title.
I am not really sure if this change fits all use cases, cause am not really familiar with Hugo. Please feel free to leave a comment to educate me if the case is otherwise :P

That does make sense, I figured why my site title does not show up, its cause i have not created a post and have hacked around a bit. Will sort this on my end, thank you for your comments.


Replace OpenIdConnectTokenEndpointResponse with an OpenIdConnectMessage

#501 @tushargupta51 @PinpointTownes @brentschmaltz

Hi @Tratcher, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

Updated with latest packages. ping

@HaoK

:shipit:

:ship: :it: it looks fine :smile:

Yep looks good :shipit:


Fix typos in README.md

I was installing the package and installing via bower was not working. Apparently the package is available through bower as 'skeletonframework'; without the dash. I don't know if the package can be renamed, but in the meantime, editing the README will help users get started.

Typo fixed and bower package has been re-published. Everything should be working right now.


[Bug]: Replace prop not working with ValidatedForm

Which packages are impacted?

[X] remix-validated-form
[ ] @remix-validated-form/with-zod
[ ] @remix-validated-form/with-yup
[ ] zod-form-data

What version of these packages are you using?

remix-validated-form: 4.0.0

Please provide a link to a minimal reproduction of the issue.
https://codesandbox.io/s/remix-validated-form-replace-gp2tl?file=/app/routes/index.tsx
Steps to Reproduce
Visit the codesandbox,

Submit the first form, this form is <ValidatedForm>, so this should create a new history stack and it does
Submit the second form, this form is <ValidatedForm replace>, so this should NOT create a new history stack but it does <--- This part is not working
Submit the third form, this form is <Form>, so this should create a new history stack and it does
Submit the fourth form, this form is <Form replace>, so this should NOT create a new history stack and it doesn't

The history length is printed in the header-like section on the page.
Expected Behavior
Visit the codesandbox,

Submit the first form, this form is <ValidatedForm>, so this should create a new history stack and it does
Submit the second form, this form is <ValidatedForm replace>, so this should NOT create a new history stack and it doesn't <--- This is expected
Submit the third form, this form is <Form>, so this should create a new history stack and it does
Submit the fourth form, this form is <Form replace>, so this should NOT create a new history stack and it doesn't

Actual Behavior
Visit the codesandbox,

Submit the first form, this form is <ValidatedForm>, so this should create a new history stack and it does
Submit the second form, this form is <ValidatedForm replace>, so this should NOT create a new history stack but it does <--- This part is not working
Submit the third form, this form is <Form>, so this should create a new history stack and it does
Submit the fourth form, this form is <Form replace>, so this should NOT create a new history stack and it doesn't

The history length is printed in the header-like section on the page.

And after updating the remix-validated-form to 4.0.0 from 4.0.0.-Beta in the codesandbox (provided in the bug report), the submit button gets stuck on Submitting.... but the name entered in the textbox actually comes back so the request is done but the button is stuck in the loading state.

Thanks for the detailed reproduction! I know what the issue is and should have a fix later tonight or tomorrow.

Fixed now in v4.0.1. https://codesandbox.io/s/remix-validated-form-replace-forked-qdbnv


cc-wrapper: propagate man and info to propagated-build-inputs

Should fix #43547.

Thanks so much!!

You're welcome. Please also have a look on other stdenv changes in this batch: #44517 and #44518.

Does this actually work? I don't think either environment.systemPackages or nix-env -i will follow propagated build inputs.
I think you should be just able to do:
ln -s ${cc.man} $man

Does this actually work? I don't think either environment.systemPackages or nix-env -i will follow propagated build inputs.

I'm not sure as I can't reproduce the original issue.
https://github.com/NixOS/nixpkgs/issues/43547#issuecomment-410093707 says

nix-support/propagated-build-inputs, which is strictly stronger

and I made this assuming that's correct. But if it's not, then I feel like propagated-user-env-packages makes more sense there semantically (judging by the name, not by the actual semantics whatever it is).
Thinking some more about this, however, I think that a better way is to simply sidestep all of this and symlink .man and .info outputs to the originals like so
ln -s ${bintools.man} $man

instead of doing it like now
printWords ${bintools.man or ""} >> $man/nix-support/propagated-build-inputs

(or propagated-user-env-packages like it was before). I'm now rebuilding stdenv with that change to see what happens (found 1 bug in stdenv already).
Btw, if we are discussing this, there's also nativeTools option which does similar things in bintools-wrapper, that goes to propagated-user-env-packages (and I think that's correct, semantically speaking).

Thinking some more about this, however

... which is exactly your suggestion above too. I gotta get a coffee, it seems. :)

See #44558.

I'm sorry. I might has improperly tested that. (Worse, I have some dejavu as if I made the same mistake before.)
In a post-strictDeps world, it would actually make sense to make propagatedBuildInputsdo that, but there's nothing wrong with the symlink thing so let's just do that.

@Ericson2314 Nah, don't mind, breaking things is half the fun after all.
#44558 needs some testing love on Darwin, though.

But if it's not, then I feel like propagated-user-env-packages makes more sense there semantically

I agree, I also thought propagated-user-env-packages would work. But I guess it's only looked in the main output and not in man or the others.

In a post-strictDeps world, it would actually make sense to make propagatedBuildInputsdo that, but there's nothing wrong with the symlink thing so let's just do that.

Why? propagatedBuildInputs are only intended for building stuff that depends on the package. In multiple-outputs packages they aren't even visible at runtime, because the propagated-build-inputs file only exists in the dev output. Of course this strictDeps thing will never, ever be going to happen for native compilation so it's a moot point, but anyway...

You said it yourself; it isn't used on things people want to install anyways. propagatedBuildInputs, rightly used, is basically only for libraries that rely on other libraries. It wouldn't be used by things people install anyways, even if it weren't for multiple outputs.
OTOH, if you manually install a dev output, I don't see why you shouldn't get the propagated deps too. Otherwise, the headers are useless.

Manually installing .dev outputs isn't going to work anyway because setup hooks won't be run. It's just not supported (currently).


chore: add parameter for operators

What this PR does / why we need it:
Add optional parameter for operators and there is no need to use a temporary variables to receive the additional operators.
Which issue(s) this PR is related to (optional, link to 3rd issue(s)):
Fixes #
Reference to #

Special notes for your reviewer:
/cc @

Release note:

NONE

/lgtm


fix up this.settings attribution to avoid passing by reference

Also removing unnecessary semi-colon.

:metal:


UI: Dashboard instance row UPDATE

Description
In this PR will be implemented some functionality and style update to the Dashboard instance row:

Connect button update: now it's available SSH connection if the is no GUI
Now also in Dashboard are available some extended functionality from Active Page

/deploy-staging

/deploy-staging

/deploy-staging

/deploy-staging

/deploy-staging

/deploy-staging

/rebase

/merge