Typing for pipe and compose

pipe/compose are really the main building blocks of Ramda, and it seems that a lot of the time Typescript doesn't correctly figure out the types from what's in the chain and its necessary to explicitly put the type into the generic.  Sometimes even this doesn't work and you have to <any> the whole pipeline to get it to compile.  This isn't a specific issue as such, and I don't have any particular solutions but I just wanted to put it out there:
What could we do to improve the typing of pipe/compose?

Yes, compose/pipe are nasty functions to type using the TS capabilities. Can you share some examples you ran into that require explicity typing?
Did you try the latest (and current) commit of typescript-ramda? I've tried to improve the ability of compose to handle functions with a arity>1.

Yup, I'm on the latest release.  I hit against typing errors on pipe all the time (I actually rarely use compose), so I can definitely keep a log of example in this ticket.  Here is one from today:
export const capitalize = (str: string): string => {
    return R.pipe(
        R.split(''),
        R.adjust(R.toUpper, 0),
        R.join('')
    )(str); // Error TS2345: Argument of type 'string' is not assignable to parameter of type 'any[]'.
}

Hmm, I see that pipe is not yet on the same level as compose, so that explains probable that your example works with compose but no with pipe. I'll try to rewrite pipe tonight.

That would be awesome.  Thanks!

Done, let me know if that doesn't work for you.

Thanks for this.    Here is a strange one:
const letters = R.pipe(R.append("a"), R.uniq)(["a", "b", "c"]);
letters should be typed string[], but seems to be typed to {}[] instead.

It actually turns out that this can be fixed by applying generics to append: const letters = R.pipe(R.append<string, string>("a"), R.uniq)(["a", "b", "c"]); so I guess its not a problem with pipe

See #31

Here is another example of a pipeline which type-checks strangely:
R.pipe(
    R.split(''),
    R.map(letter => ([ letter ]))
)("dave");

Somehow the string gets lost along the pipeline, and the return type of this expression is {}[][] instead of string[][].

And another where the return type of b is {}
const b = R.pipe(
    R.prop<string>('name'),
    R.length
)({ name: 'dave' });

It seems like Typescript somehow loses the type of the previous link in the chain, when that was specified with a generic.

It seems that map can not determine the input type, so it chooses any ({}).
map(x => x[]) :: any[] => any[]

This is were Typescript looses its type. This is due to the following
definition of map
map<T, U>(fn: (x: T) => U): (list: T[]) => U[];

Because T and U in (x: T) => U are not defined in the function definition, both are set to any.
It doesn't use type info of its return type (list: string[]). I do not see any solution for this. I do wonder if Flow does a better job here. They advertise with a better type inference than Typescript.
The other example:
const b = R.pipe(
    R.prop<string>('name'),
    R.length
)({ name: 'dave' });

works well if you remove the , but only because length as a fixed return type of number.

FWIW, I ran into this issue as well - this is where I ran into problems
let mapPackages = R.partial(R.map, [test => test.package]);
let filterBuild = R.partial(R.filter, [test => test.build === build]);
let getPackages = R.compose(R.uniq, mapPackages, filterBuild);
this.packages = getPackages(this._tests);

TypeScript didn't like my mapPackages function. Granted, my _tests and test key aren't typed, but it's a bit unfortunate there's some trouble here.

@wesleycho If you leave out the R.partials and just use the standard partial application of R.map and R.filter, it works almost perfectly. I added a quick type interface for build/package.
interface Foo {
  build: string,
  package: string
}

const build = 'dev';
let mapPackages = R.map((test: Foo) => test.package);
let filterBuild = R.filter((test: Foo) => test.build === build);
let getPackages = R.compose(R.uniq, mapPackages, filterBuild);

let foos = [{
  build: 'dev',
  package: 'devPackage'
}, {
  build: 'prod',
  package: 'prodPackage'
}, {
  build: 'dev',
  package: 'devPackage'
}];

let foosFiltered = getPackages(foos);
console.log('foosFiltered: ' , foosFiltered);

The only catch is that it loses the return type with the R.uniq in there. Unfortunately, I don't know how to get a generic function reference in TS. (R.uniq<string> won't compile.) But worst case scenario, you can create a tiny function wrapper that maintains the type:
let getPackages = R.compose((packages: string[]) => R.uniq(packages), mapPackages, filterBuild);

See https://github.com/Microsoft/TypeScript/issues/5254

{} is the type that appears when there are no inference sources during generic type inference. We don't do any inference from call sites, ...

This appears to trigger whenever you are composing functions with generics; the <T>(T) => T or the like will be resolved by TS too soon and degenerate to ({}) => {} or the like before it gets to consider the types of its input, see #86, #92 and #101.


Cant access $npm_package_config_port

Don’t know if this is really a issue but I struggled to get going on a Windows 10 box, when doing npm start I got:

listen EACCES $npm_package_config_port

It seems that $npm_package_config_port is not found. I hard coded it with the 9000 port and it is working now: "server": "webpack-dev-server --port 9000 --inline --progress --profile --colors --watch --display-error-details --display-cached --content-base src/"
Tnx for the great scaffold!

yes, unfortunately npm config doesn't work on Win, this will change with upcoming annual win 10 release with Linux subsystem, till then windows users have to hardcode it :(

you can also update it to%npm_package_config_port% till win 10 annual release
https://frontend.irish/npm-config-variables


chore: update dependencies

Coverage remained the same at 96.667% when pulling 08aeff7aa852b8d79f0f05e2161a7132fcc8efd4 on DanielRuf:chore/update-dependencies into 6e39f89aac1597208543da9765841f3b615f7da7 on johncrisostomo:master.


PMM-12169 backlog tests

@yurkovychv PMM-T1700 is not executed in the FB checks, could you please attach a link to the successful test run.


Movies Classification using DL

Pull Request for DL-Simplified 💡
Issue Title : Movies Classification using DL #239

Info about the related issue (Aim of the project) : Predict the genre of the movies
Name: Dipayan Majumder
GitHub ID: github.com/dipayan22
Email ID<EMAIL_ADDRESS>Idenitfy yourself: (Mention in which program you are contributing in. Eg. For a JWOC 2022 participant it's, JWOC Participant) SWOC'24

Closes: #issue239
Describe the add-ons or changes you've made 📃
Give a clear description of what have you added or modifications made
Type of change ☑
What sort of change have you made:

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Code style update (formatting, local variables)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested? ⚙
Describe how it has been tested
Describe how have you verified the changes made
Checklist: ☑

[x] My code follows the guidelines of this project.
[x] I have performed a self-review of my own code.
[ ] I have commented my code, particularly wherever it was hard to understand.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] I have added things that prove my fix is effective or that my feature works.
[ ] Any dependent changes have been merged and published in downstream modules.

hey @abhisheks008 , all changes done .


[BUG] ReactiveCommand seems to block ToList, ToArray, etc

Describe the bug
ReactiveCommand seems to block any To* methods called on it, such as ToList and ToArray. I've tried different schedulers (MainThread, TaskPool, Immediate) and different platforms, to no avail. No idea what could be going on here.
Steps To Reproduce
Call ToArray, ToList, ToDictionary and probably others on ReactiveCommand. The resulting sequence never returns anything.
Expected behavior
The resulting sequence should contain a single result.
Environment

OS: Android, iOS, UWP, .NET Core
Version: ReactiveUI 9.12.1

Additional context
RxTest.zip

Just realized this is probably because the sequence never completes. D'oh.

You can use dynamicdata for this, since it just updates as you go along. I believe you're correct about the sequence thing.


"Ionești", "Gura Șușiței", "Iliești", "Picu" are listed in the drop-down menu

Description:
"Ionești", "Gura Șușiței", "Iliești", "Picu" are listed in the drop-down menu alongside their corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Write in the search bar "Ionești"

Expected results
The location appears in the drop-down menu as "Sat Ionești, GORJ (Ionești)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Gura Șușiței"

Expected results
The location appears in the drop-down menu as "Sat Gura Șușiței, GORJ (Ionești)".

Step 5
Write in the search bar "Iliești"

Expected results
The location appears in the drop-down menu as "Sat Iliești, GORJ (Ionești)".

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Write in the search bar "Picu"

Expected results
The location appears in the drop-down menu as "Sat Picu, GORJ (Ionești)".


[CalibreWeb] Background not being set on Index page

Thanks for all the hard work! Whenever you want me to stop, let me know :smile:
For Calibre-Web (using CaliBlur as a base), the background does not seem to be set on the index pages (i.e. Recently Added or any of the other tabs clicked on from the side menu). Also does not seem to work when searching, the about page, settings page, or admin page.
However, it does work when navigating to a specific book page

Also, this is probably an issue in CaliBlur itself, but just FYI, some of the newer pages have some UI quirks

Thanks! I'll check it out 👍🏻

Still an issue?

The background is no longer an issue. The rest of the UI quirks still are, but I think those should be fixed in CaliBlur, not here.


Adding SubHandlingData flags doesn't work?

Hello! I'm currently trying to make a vehicle that floats on water, but i am trying to add some flags into the handling editor so i can edit them live rather than have to guess at what does what, and also to stop myself from having to re-start my game every time i want to change something. There isn't very good documentation on what these values do, But i do know that they are used in vehicles like the APC, Technical Aqua, Zhaba, And a few others to make them float. I have also managed to get it to work on a vehicle that i am making by manually adding the flags into the handling.meta of said vehicle. I'm not very satisfied in the way that it floats though, so being able to edit it live with the handling editor would be very nice.
My problem is though, when i try adding these flags to the handling editor, it removes ALL options from the handling editor aside from personal presets, server presets, and the reset button. Am i doing something wrong? Or is it just a limitation of the menu? Thanks in advance!
    <Item type="CBoatHandlingData">
      <fBoxFrontMult
      <fBoxRearMult
      <fBoxSideMult
      <fSampleTop
      <fSampleBottom
      <fAquaplaneForce
      <fAquaplanePushWaterMult
      <fAquaplanePushWaterCap
      <fAquaplanePushWaterApply
      <fRudderForce
      <fRudderOffsetSubmerge
      <fRudderOffsetForce
      <fRudderOffsetForceZMult
      <fWaveAudioMult
      <vecMoveResistance
      <vecTurnResistance
      <fLook_L_R_CamHeight
      <fDragCoefficient
      <fKeelSphereSize
      <fPropRadius
      <fLowLodAngOffset
      <fLowLodDraughtOffset
      <fImpellerOffset
      <fImpellerForceMult
      <fDinghySphereBuoyConst
      <fProwRaiseMult
      <fTransmissionMultiplier
      <fTractionMultiplier

And just for an example of how i tried adding it into the handling editor, i have attached a screenshot.

SubHandlingData API aren't available yet in FiveM.

Damnit man! Thanks anyways! ^^


fix: conditionally show message

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

@romario-0 just noticed it. The package version will have to be upped( for this to be able to publish) when we merge develop -> main


docs: fix spelling issues

Hello
I found and fixed several minor spelling issues.
Br, Elias.

Thank you for your contribution, however we do not accept typo/spelling/grammar pull requests for security reasons.


Call to undefined method

Hello, I have installed the package today and wrote my first two lines as:
$cpanel=new cPanel();
$cpanel->getEmailAddresses();
But it returns the error: Call to undefined method Naif\CpanelMail\Facades\CpanelMail::getEmailAddresses()
I have used use cPanel; at the top as well. I don't know what I have missed.
Can you please help?

Okay it worked when I used as: $cpanel=new \Naif\cPanelMail\cPanel();


why i can't get glossy results when training using blender images?

hi @Kai-46 ,
thank you for your excellent job!! However I encountered a problem when trying to training using my images. Acturally, I rendered images using blender renderer, and keep the training set the same format as yours kitty. The training process seems okay except it didn't get glossy results throughout the training process. Do you have any ideas why would this happen? Something like there's difference between mitsuba/blender or rendered-images need post-processing?
Really hope to get your reply, thx in advance!

hi @Kai-46 , i am curious about the initial roughness. why you choose big init roughness rather than the small one?
thx!

Hi, can you post sample images here? Is your object glossy?

Hi,
yes the object is glossy.
you mentioned scene normalization in Nerf++ data processing, so do i need to do camera normalization in PhySG? when rendering using blender, i have put the object in unit sphere, but not doing camera normalization. Rendering results (shape, material) seems ok except the glossy part, it's totally diffuse. So wondering what's the problem, maybe render using blender need extra attention or initial roughness matters, or something like that...

Hi,
It's very hard for me to judge what could be problematic in your case without any visuals.
Can you try the following things to check if your camera poses are correct, and post the results?

inspect the camera epipolar geometry like the NeRF++ codebase did
visualize the camera and geometry like the NeRF++ codebase did. Note that this codebase requires slightly different normalization than NeRF++. Basically, NeRF++ puts all the cameras inside the unit sphere, while this one only puts the geometry inside the unit sphere (not necessarily the cameras)
use the run_colmap_posed.py script in NeRF++ to reconstruct the geometry using conventional COLMAP MVS

when rendering using mitsuba, do you do some post-preprocessing operations? or just use the rendered w2c matrix and written like the json format?

I meet the same problem, any ideas?

Hi,
It's very hard for me to judge what could be problematic in your case without any visuals.
Can you try the following things to check if your camera poses are correct, and post the results?

inspect the camera epipolar geometry like the NeRF++ codebase did
visualize the camera and geometry like the NeRF++ codebase did. Note that this codebase requires slightly different normalization than NeRF++. Basically, NeRF++ puts all the cameras inside the unit sphere, while this one only puts the geometry inside the unit sphere (not necessarily the cameras)
use the run_colmap_posed.py script in NeRF++ to reconstruct the geometry using conventional COLMAP MVS

Hi, @Kai-46
There is a parameter named "object_bounding_sphere" in .conf. Is it necessary to make sure object in unit sphere? Or just modify this parameter?
I tried some complex scene and it seems difficult to change the size of them. As a result, I change this parameter but the results look strange.
Train using IDR:

Train using PhySG:

Hi,
It's very hard for me to judge what could be problematic in your case without any visuals.
Can you try the following things to check if your camera poses are correct, and post the results?

inspect the camera epipolar geometry like the NeRF++ codebase did
visualize the camera and geometry like the NeRF++ codebase did. Note that this codebase requires slightly different normalization than NeRF++. Basically, NeRF++ puts all the cameras inside the unit sphere, while this one only puts the geometry inside the unit sphere (not necessarily the cameras)
use the run_colmap_posed.py script in NeRF++ to reconstruct the geometry using conventional COLMAP MVS

Hi, @Kai-46 There is a parameter named "object_bounding_sphere" in .conf. Is it necessary to make sure object in unit sphere? Or just modify this parameter? I tried some complex scene and it seems difficult to change the size of them. As a result, I change this parameter but the results look strange.
Train using IDR:
Train using PhySG:

Hi, @Woolseyyy
When trying complex scene, I got similar rendering results as yours. Have you solved this problem? Thanks a lot.


'whichTemplate' factory example is not compatible with strict dependency injection

Hi Obogo,
On your website and in your readme, you have an example of a custom addon named 'whichTemplate', defined below:
angular.module('ux').factory('whichTemplate', function () {
    return function (inst) {
        // now we override it with our method so we decide what template gets displayed for each row.
        inst.templateModel.getTemplate = function (item) {
            // item would be the item in your array of data provided to the datagrid.
            // let's make our default option be 'row'. Otherwise datagrid defaults this to 'default'.
            var name = item.type || 'row';
            // now we get the template from the name.
            return inst.templateModel.getTemplateByName(name);
        };
    };
});

Unfortunately this seems to throw an error in more recent versions of Angular with strict dependency injection enabled. I've fixed the error on my end by wrapping the return statement like so:
return ['inst', function (inst) {
  inst.templateModel.getTemplate = function (item) {
    var name = item.searchChildren ? 'group' : 'row';
    return inst.templateModel.getTemplateByName(name);
  };
}];

Not a big deal but you've followed this convention in all the addons you developed for ux-datagrid, so the examples should be consistent to avoid issues.
Thanks for ux-datagrid by the way! It's great.

Thanks for catching that and letting me know.
I updated the examples.
http://obogo.github.io/ux-angularjs-datagrid/


[Question] changing schema from double to decimal doesnt seem to work (v2.1.x)

OrientDB Version, operating system, or hardware.

v2.1.25

Operating System
Linux
Hi,
I was changing schema from some of the classes' attributes from double to decimal using an sql script through console (there are a bunch of attributes that needed conversion).
At my first attempt to run the script database got corrupted throwing some error regarding BigDecimal.  I've rearranged the commands in the SQL script a little bit and seem to be able to run it through. However, on my first attempt to update a record I've got an exception (see below). And as a result of the records of that class cannot be updated now.
Question: is that something known in Orient 2.1.x or might this be a bug? If initial schema is needed, I can send it by email only. Company policy, of course :)
I'm still trying out different ways to make it work. If I find more info, I'll send it
com.orientechnologies.orient.core.exception.ODatabaseException: Error on saving record #125:0
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2048)
        at com.orientechnologies.orient.core.tx.OTransactionNoTx.saveRecord(OTransactionNoTx.java:160)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2526)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:122)
        at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1759)
        at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1750)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLUpdate.result(OCommandExecutorSQLUpdate.java:342)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.pushResult(OCommandExecutorSQLResultsetAbstract.java:267)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.addResult(OCommandExecutorSQLSelect.java:703)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.handleResult(OCommandExecutorSQLSelect.java:610)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.executeSearchRecord(OCommandExecutorSQLSelect.java:559)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.fetchFromTarget(OCommandExecutorSQLSelect.java:1480)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.executeSearch(OCommandExecutorSQLSelect.java:488)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.execute(OCommandExecutorSQLSelect.java:446)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1433)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1406)
        at com.orientechnologies.orient.core.sql.query.OSQLQuery.run(OSQLQuery.java:72)
        at com.orientechnologies.orient.core.query.OQueryAbstract.execute(OQueryAbstract.java:33)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.query(ODatabaseDocumentTx.java:743)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLUpdate.execute(OCommandExecutorSQLUpdate.java:264)
        at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1433)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1406)
        at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
        at com.orientechnologies.orient.server.network.protocol.http.command.post.OServerCommandPostCommand.execute(OServerCommandPostCommand.java:81)
        at com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpAbstract.service(ONetworkProtocolHttpAbstract.java:180)
        at com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpAbstract.execute(ONetworkProtocolHttpAbstract.java:627)
        at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)
Caused by: java.lang.ClassCastException: java.lang.Float cannot be cast to java.math.BigDecimal
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.writeSingleValue(ORecordSerializerBinaryV0.java:576)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.serialize(ORecordSerializerBinaryV0.java:258)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.writeSingleValue(ORecordSerializerBinaryV0.java:565)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.writeEmbeddedCollection(ORecordSerializerBinaryV0.java:761)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.writeSingleValue(ORecordSerializerBinaryV0.java:573)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinaryV0.serialize(ORecordSerializerBinaryV0.java:258)
        at com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinary.toStream(ORecordSerializerBinary.java:105)
        at com.orientechnologies.orient.core.record.impl.ODocument.toStream(ODocument.java:2287)
        at com.orientechnologies.orient.core.record.impl.ODocument.toStream(ODocument.java:662)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:1938)
        ... 28 more

Seems like the problem happens when embedded attributes' schema is changed from double to decimal. Basically, our class has an embeddedlist or a class that contained a few double attributes. Also the main class had double attributes.
I ran SQL script separately first for the main class. There was no problem. But then I ran a second portion of script changing schema for embedded class. After that the problem came back.

UPDATE 2: I've tried a higher version of Orient. This error does not happen on 2.2.15.
However, we cannot move our DB to 2.2 yet, as I found that some indices are not updated properly. If I will be able to identify how index gets corrupted, I'll make another issue.

hi @andreyvk,
The 2.1 is out of support, do you have any chance to update to 2.2.x ?
Regards

@tglman hi,
I've tried to migrate to 2.2, but like i mentioned above we have some problem with indexing. So far it doesnt look like there's a problem with Orient but rather a problem with the PHP driver or the database file itself. Im still debugging. Gonna close this issue meanwhile. If I find something I'll let you guys know.


[material-ui][Select] Apply missing root class

Docs says .MuiSelect-root is applied to root component but it's not applied to any element (check useEffect code in before sandbox to verify this) . This PR adds root class to root component
Before: https://stackblitz.com/edit/react-mxoqrt?file=Demo.tsx
After: https://codesandbox.io/s/quirky-wind-zpyc6c?file=/src/Demo.tsx

[x] I have followed (at least) the PR section of the contributing guide.

@sai6855, may I ask you to review when that code in line 87 was added and if it ever worked?

Line 87 was added by me 😑 in this PR #38424, and PR didn't have any test that tests presence of root class on root element.
If remember correctly, my reasoning for not adding test was, i thought following test would be good enough. But test is testing presence of root class if root is present in classes object not if element has root class.  Hence this test didn't caught presence of root class on root element
https://github.com/mui/material-ui/blob/6bb06b9ada2fe0e7d8d6ee0f05ceae3ddb2c3464/packages-internal/test-utils/src/describeConformance.tsx#L214-L225

@sai6855 @DiegoAndai is this PR still relevant?

This is still relevant, and reviewing again I think this is the correct solution. Sorry for blocking it before. @sai6855 may I ask you to update the PR?


Minimize property names?

Is there an option for minimizing property names? (If not, can it be added?)
Something like converting:
let elements = document.querySelectorAll("something");

to:
let p = ["querySelectorAll"];
let elements = document[p[0]]("something");

Sorry, didn't realize this wasn't the uglify repository.


Is it possible to change the theme on a panel live?

I have a custom panel component and was wondering if it were possible to set the theme in the schema() to a method that would return specific themes.
Thanks

We're currently addressing a backlog of GitHub issues, and as part of this effort, some inactive issues may be marked as closed. This isn't a dismissal, but a step toward more efficient tracking.
If you feel the issue is still relevant, please re-open and we'll ensure it gets the attention it deserves. Your understanding is appreciated as we work to enhance our open-source responsiveness.


fullscreen & fast_forward buttons missing

Hey! Tried customizing the UI, but fullscreen & fast_forward buttons went missing.
I'm on Ubuntu 18, tried in chrome and firefox. No luck!

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Page Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Condensed">

  <script src="/dist/shaka-player.ui.debug.js"></script>
  <link rel="stylesheet" href="/dist/controls.css">
  <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
</head>

<body>
  <div id="videoContainer" style="max-width:40em">
    <video autoplay id="video" style="width:100%;height:100%"></video>
  </div>
  <script>
    var manifestUri = 'http://<IP_ADDRESS>:8080/2/manifest.mpd';

    async function init() {
      const video = document.getElementById('video');
      const videoContainer = document.getElementById('videoContainer');
      const player = new shaka.Player(video);
      const uiConfig = {};
      uiConfig['controlPanelElements'] = ['mute', 'volume', 'time_and_duration', 'fullscreen', 'rewind', 'ast_forward', 'overflow_menu', ];
      const ui = new shaka.ui.Overlay(player, videoContainer, video, uiConfig);
      const controls = ui.getControls();

      player.addEventListener('error', onPlayerErrorEvent);
      controls.addEventListener('error', onUIErrorEvent);
      controls.addEventListener('caststatuschanged', onCastStatusChanged);

      try {
        await player.load(manifestUri);
        console.log('The video has now been loaded!');
      } catch (error) {
        onError(error);
      }
    }

    function onPlayerErrorEvent(errorEvent) {
      onPlayerError(event.detail);
    }

    function onPlayerError(error) {}

    function onUIErrorEvent(errorEvent) {}

    function onCastStatusChanged(event) {}

    document.addEventListener('DOMContentLoaded', init);
  </script>
</body>

</html>

Hi @rameshnavi
Glad to see people try the UI!
One thing I spotted right away - you're missing letter 'f' in "fast_forward" :)
Not sure what happened with fullscreen yet. Will investigate!

Hey @ismena
Shaka is a great project, with UI configuration, fits my project's need.
Sorry about the typo :-( No luck with "fast_forward" as well.

@vaage Thanks for investigating! I'll look into it.

Found the culprit. The fix is coming!

Fix checked into the latest master.


Injecting elastic apm

ACHTUNG!!! For educational purpose only, do not merge!
Requires npm install elastic-apm-node --save, see https://www.elastic.co/guide/en/apm/agent/nodejs/current/express.html

The discussion page would be the better place to suggest for the new features.
This is a nice to have feature, but not on the priority list yet. I will close it for now, we can re-open this PR when we actually is going to work on this.


⚠ Spryr has degraded performance

In 95cbc58, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 3292 ms

Resolved: Spryr performance has improved in 35fa880 after 7 minutes.


[BUG] sending a one-time payment reports success even when there is no money on the account

Steps to reproduce

Go to https://ericahargreave.com/
Click on extension button
Set 1.00 for the amount
Click send

Expected result
The failure should be reported
Actual result
The success is reported
Screenshots or videos
https://github.com/user-attachments/assets/69d11cdb-e61b-4a5f-96ae-2030b5817498
Additional context
No response
Operating system
macOS
Operating system version
No response
Browsers
Firefox
Browser version
No response
Extension version
0.1.1

Duplicate of #592
Duplicate of #567
It's on our radar. Closing this to keep tracking better.

I'll keep this open so we can close 3 issues at once lol.


Expose _vendor.super_state_machine.extras/errors publicly

Super state machine lacks support, and as such we've decided to vendor it within bluesky, keeping it private for convenience.
In ophyd-async, we except TransitionError in tests requiring the RunEngine, but this can be imported from `RunEngine directly.
Blueapi uses ProxyMachine in typing, which isn't available through bluesky.RunEngine:
https://github.com/DiamondLightSource/blueapi/blob/97b43cec747b22c94de266e05db286ba98f81aba/src/blueapi/worker/event.py#L10-L11
I would suggest:
Change bluesky._vendor.super_state_machine to bluesky.vendor.super_state_machine, with an __init__.py exposing the relevant public members.

Here's the relevant blueapi issue https://github.com/DiamondLightSource/blueapi/issues/553

My knee-jerk reaction is to make just the errors public as they can be raised out the the RE (or catch them and re-raise errors of a different type) and to have blueapi import the private modules if the only usage is for typing.
I'm not sure what right way to type things using the descriptor protocol (that is Python's descriptors not the event models) as the type of the attribute on the class object is what ever the descriptor class is but the type on an instance of the class is going to be a different type as a core feature of their functionality.  Maybe we need to add another Protocol class?  I do not think we want the detail that we are using a version of super_state_machine to be public so we should pare that back as far as we can.


desktop entry file. Part of a future repoless rpm package builder.

In regards to #17

Currently we have no application icon for Nocturn but merging for your packaging. Thanks!


Changes for OpenSubArea navigation in Unified Interface

This includes tweaks to change the area (e.g. Sales, Service, Marketing, Project Service, …), and then subsequent changes to retrieve sub-areas (entities) via the SiteMap Launcher.

Related to #252


VeChain support

@kolya182 please attach docs to this issue

to get transactions for the gas coin VHTO, I would be passing this property: ?token=energy for vechain specifically.


Stopped working after upgrading Elastic to 2.2

Do you have any error message?

This issue was moved to urielha/log4stash#6


feature: avatars and progress bars

What does this PR do?

Resolves #30
Allows for Avatar in toast (with multiple avatars also possible up to 5)
Allows for countdown progress bar in toast (default behavior)
Updates README.md with relevant info on changes

Description of Task to be completed?

[x] #30

How should this be manually tested?
After cloning the repo, cd into it and do the following:
# install dependencies
$ pnpm install

# start development server to view UI
$ pnpm run dev

After starting the server, the new changes can be viewed by opening localhost:5173, click new buttons to see changes in demo
Any background context you want to provide?
I just wanted a cool stackable toast bro, this is the closest I could find so, might as well do what I can to make it how I'd like it to be.
What are the relevant Notion/JIRA stories/tickets?

#30

Screenshots (if appropriate)

https://github.com/wobsoriano/vuetify-sonner/assets/23138415/9fcaeabf-597a-4281-90b4-5f61a91e2ac6

Please approve this, it also fix the Options typing issue in TS
https://github.com/wobsoriano/vuetify-sonner/issues/29

I merged this but I set the default progress bar option value to false. I want to keep it as close to the snackbar and vue-sonner behavior.


Fix PHPStan API usages for 2.0

This change caused it to find 62 issues that had previously gone missed at my work palace :)

Yeah of course, doing things properly actually leads to bugs being fixed :)

Yeah, still just wanted to give some appreciation :)


Move WorkloadGroup/WorkloadEntry to core API group

In "Mesh Expansion: VM security" proposal, we propose to use WorkloadGroup to decide the namespace part of VM identity (“spiffe://{trustdomain}/ns/{namespace}/sa/{serviceaccount}”).
Currently WorkloadGroup/WorkloadEntry is added to "networking.istio.io" API group, which is not accurate because it is also a critical resource that is used by security admin to decide VM's identity. Because api group is often used in k8s RBAC to decide which resources an admin controls (e.g, a security admin control all resources under "security.istio.io"), it is important to put the resource in the right API group.
WorkloadGroup/WorkloadEntry is analogous to k8s Deployment/Pod resources, which are in the "core" api group (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#pod-v1-core). We can introduce a "core" or "core.istio.io" api group, and add WorkloadGroup/WorkloadEntry there.
Bug description
[ ] Docs
[ ] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[x] Security
[ ] Test and Release
[x] User Experience
[ ] Developer Infrastructure

/cc @smawson

I do not think we should push complexity/backwards incompatible changes onto our users and our developers for this.
ServiceEntry is also has ServiceAccount, should it also be core? DR and GW have SAN, are they "core"?
I don't see how the comparison of core in Kubernetes maps to Istio. I think core there mostly just means "it happened before we came up with group names".

ServiceEntry or DestinationRule is not used for IdentityFederation, i.e. it does not "decide" workloads' identities. But WorkloadGroup does.
WorkloadGroup/WorkloadEntry are relatively new resources we added to support mesh expansion. It is better to update it early to prevent backwards incompatibility issues in the future.

IMO core is overused and less understood. A lot of networking aPIs are core APIs, without which you cant derive any value in Istio.
I also think this statement is an over generalization

Because api group is often used in k8s RBAC to decide which resources an admin controls (e.g, a security admin control all resources under "security.istio.io"), it is important to put the resource in the right API group.

because this is implying that people do not use finer grained acls to decide what resources are allowed to who. We can always provide documented examples on how to do this as part of our operations manual. Nor do I buy the argument that a security admin gets involved in bootstrapping each and every VM. Its is also done by application developers depending on the company. Practices vary with organizations.
K8S has given people all the knobs to enforce finer grained authz. If people dont use it, its their choice.

Yes, k8s provides fine grained authorization. What I am concerned of is the confusion it brings when it comes to which admin is responsible for which API. I assume "apiGroup" is introduced to serve this purpose. We can certainly provide documentation that "Workload group is also used for identity federation, make sure your security admin is aware of it", but not all users read detailed documentation very carefully (we see a lot of security vulnerability issues caused by people not reading fine print documentation carefully).
I am talking about namespace-level security admin. If the common use case is that there is only one admin responsible for everything in a namespace, I think it is not a big deal in terms of api group.
Anyway, I just want to bring up my thought so that we can make a wise decision before mesh expansion APIs are widely adopted.


Release 8.0.0

Summary of the Pull Request
Release 8.0.0
BREAKING CHANGES
This release removes the parameters --client_id, --override_authority, and override_tenant_domain from the config command.
For those accessing the CLI with a service principal, the parameters can be supplied on the command line for each of the CLI commands.
For example, if deploying a job:
onefuzz --client_id [CLIENT_ID] --client_secret [CLIENT_SECRET] template libfuzzer basic --setup_dir .....

Added

Agent: Added validate command to the agent to help validate a fuzzer #2948
CLI: Added option to libfuzzer template to specify a known crash container #2950
CLI: Added option to libfuzzer template to specify the duration of the tasks independently from the job duration #2997
Deployment: Added global.json file to specify .NET version #3007

Changed

Agent: Install v17 Visual Studio redistributables #2943
Agent/Service: Use minimized stack for crash site if no ASAN logs are available #2962
Agent/Service: Unified several Rust crate dependency versions across the platform #3010
Service: Loosen scriban template validation #2963
Service: Updated integration test pool size #2935
Service: Pass the task tags to the agent when scheduling jobs #2881

Fixed

Agent: Ensure custom target_options are always passed last to the fuzzer #2952
Agent: Removed xml-rs dependency #2936
Agent: Better logging of failures in the task_logger #2940
Agent/Service: Updates to address CVE's #2931, #2957, #2967
Deployment/Service: Renamed EventGrid subscription to conform with EventGrid's naming scheme #2960
Deployment/Service: Added required KeyVault access policy allowing OneFuzz Function App to use an SSL cert for custom domain endpoints #3004, #3006
Documentation: Updated 'Azure Devops Work Item creation' doc to remove an outdated template reference #2956
Service: Updated feature configuration package to fix an issue where 2 feature flags were using the same ID #2980
Service: Make GetNotification nullable to fix errors looking up non-existent notification IDs #2981
Service: UniqueReports should be UniqueInputs in LibFuzzer merge task #2982
Service: Fix Notification delete action #2987
Service: Added handle for missing unique field key in AdoFields #2986
Service: Implemented ITruncatable for JobConfig & EventJobStopped to avoid exceptions for messages being too large for Azure Queue #2993

PR Checklist

[ ] Tests passed

Codecov Report

Merging #3013 (a9b5b7f) into main (ace0ccc) will decrease coverage by 0.09%.
The diff coverage is n/a.

:exclamation: Current head a9b5b7f differs from pull request most recent head 3e807d5. Consider uploading reports for the commit 3e807d5 to get more accurate results

@@            Coverage Diff             @@
##             main    #3013      +/-   ##
==========================================
- Coverage   29.02%   28.94%   -0.09%
==========================================
  Files         304      125     -179
  Lines       36326    13668   -22658
==========================================
- Hits        10545     3956    -6589
+ Misses      25781     9712   -16069

see 179 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


[v1.15] Use bash syntax to consume env variable

Also change the GitHub secret names

Backport of https://github.com/cilium/cilium/pull/36544

/test-backport-1.15


version 4.0.4 issue with IE

Vue.js version and component version
"vue-awesome-swiper": 4.0.4
"vue": "2.6.11",
"swiper": "5.3.6"
Steps to reproduce
Hi, newest version of vue-awesome-swiper is not working on IE. I am using webpack with vue-loader and babel-loader.
Also in my app.js importing these two lines for correct transpiling JS
import "core-js/stable";
import "regenerator-runtime/runtime";

and importing plugin globally:
import VueAwesomeSwiper from 'vue-awesome-swiper'
Vue.use(VueAwesomeSwiper)

IE shows Syntax error. I am not sure, if it is issue of webpack compiling or plugin issue. Previous version works fine. I noticed, that vue components are written in TS. Do I need to change my webpack conf.?
Webpack file:
'use strict';

const path = require("path");
const {VueLoaderPlugin} = require("vue-loader");
const TerserPlugin = require('terser-webpack-plugin');
const sortCSSmq = require('sort-css-media-queries');
const CompileTimePlugin = require('webpack-compile-time-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');

const resourcesPath = "xxx/xxx/xxx/xxx/xxx";

module.exports = {
    name: 'default',
    mode: 'development',
    entry: {
        app: `./${resourcesPath}/xxx/Vue/app.js`,
        critical: `./${resourcesPath}/xxx/Js/critical.js`,
    },
    output: {
        chunkFilename: 'chunks/dev/[id].[contenthash].js',
        filename: '[name].js',
        path: path.resolve(__dirname, `${resourcesPath}/Public/Js`),
        publicPath: `/xxx/xxx/xxx/xxx/Public/Js/`
    },
    optimization: {
        minimize: true,
        minimizer: [
            new TerserPlugin({
                extractComments: false,
                parallel: true,
            })
        ]
    },
    resolve: {
        alias: {
            'vue$': 'vue/dist/vue.esm.js'
        },
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                use: 'vue-loader'
            },
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
            },
        ]
    },
    plugins: [
        new CleanWebpackPlugin({
            cleanOnceBeforeBuildPatterns: [
                'chunks/dev/*'
            ]
        }),
        new VueLoaderPlugin(),
        new CompileTimePlugin()
    ],
    watch: true,
    watchOptions: {
        ignored: /node_modules/
    }
};

Can you help me pls?

@pfasang I suggest showing the specific syntax error with IE.

@pfasang
In addition, the author of Swiper has stated that Swiper5 does not support IE.
If you need to support IE operation, you can fall back to Swiper to 4.x version.
vue-awesome-swiper 4.x is compatible with Swiper4/5.

Thanks for advice. I will downgrade vue-awesome-swiper to previous version, because is better optimized for now.
Also Swiper v4 doesn't support IE, see: https://github.com/nolimits4web/swiper/issues/3285

@pfasang  when you can babel, you can add swiper and dom 7 , it work in ie11
transpileDependencies: [/vue-baidu-map/,/vue-awesome-swiper/,/swiper/,/dom7/]

https://github.com/surmon-china/vue-awesome-swiper/issues/499#issuecomment-620484133


Using scrollToIndex with a grouped list will scroll the list to the group instead of the item

Describe the bug
When using Sticky example and trying to add scroll to index behavior, I noticed a problem - it scrolls to the group at the specified index, not to the element.
To Reproduce
Here is the component that reproduces the problem:
const StickyList: React.FC<{ initialItemIndex?: number }> = ({ initialItemIndex }) => {
  const listRef = useRef<VListHandle | null>(null);
  const [scrollToIndexEnabled, setScrollToIndexEnabled] = useState(true);

  useEffect(() => {
    if (scrollToIndexEnabled && initialItemIndex !== undefined) {
      listRef.current.scrollToIndex(initialItemIndex);
      setScrollToIndexEnabled(false);
    }
  }, [scrollToIndexEnabled, initialItemIndex]);

  return (
    <VList ref={listRef} style={{ height: "100vh" }} overscan={1}>
      {Array.from({ length: 100 }).map((_, i) => {
        return (
          <div
            key={i}
            style={{
              borderBottom: "solid 1px #ccc",
            }}
          >
            {Array.from({ length: 10 }).map((_, j) => {
              const isGroupTop = j === 0;
              return (
                <div
                  key={j}
                  style={{
                    height: 60,
                    background: "#fff",
                    ...(isGroupTop && {
                      top: 0,
                      height: 30,
                      position: "sticky",
                      borderBottom: "solid 1px #ccc",
                    }),
                  }}
                >
                  {isGroupTop ? i : `${i} - ${j}`}
                </div>
              );
            })}
          </div>
        );
      })}
    </VList>
  );
}

When using the component above like this:
<StickyList initialItemIndex={10} />

I expect the list to scroll to the element at index 10, but the current behavior is that it will scroll to group 10.
Expected behavior
scrollToIndex must go to the element at the specified index and not to the group.
Platform:

OS: MacOS
Browser: Chrome
Version of react: 18.2.0
Version of this package: 0.16.0

Additional context
I was able to get around this problem by calculating the required offset and using the scrollTo function

Hi, it's intended behavior and not a bug.
You passed 10 items to VList so you can choose one of them by scrollToIndex.
However I also think there is room for improvement for sticky usage or grouped list.
I'll try to add API for it.

Yes, that's fair, it's not a bug, but the way things are implemented. Based on experience with creating virtualized grouped sticky lists, scrollToIndex always scrolls to the element's index, and the layout (elements nested in groups nested in a list component) is more of an implementation detail.
I don't mind leaving it as is because once you know the index you can calculate the offset, but maybe we need to explain the behavior of scrollToIndex better then

Yes, that's fair, it's not a bug, but the way things are implemented. Based on experience with creating virtualized grouped sticky lists, scrollToIndex always scrolls to the element's index, and the layout (elements nested in groups nested in a list component) is more of an implementation detail.
I don't mind leaving it as is because once you know the index you can calculate the offset, but maybe we need to explain the behavior of scrollToIndex better then

@inokawa, would it be possible to enable discussions for this repository? I have some generic feedback and I think the discussions would be a great place to share it. If you have other options in mind, please let me know

@kirillkurko
I enabled discussions!

Thanks, I'll share the feedback later this week!

Duplicate of #278


Problems with compilation crossbundle

When I'm trying to compile crossbundle, I'm catching error.
error: cannot find derive macro `Parser` in this scope
--> crossbundle/cli/src/commands/build/android.rs:15:10
|
15 | #[derive(Parser, Clone, Debug)]
|          ^^^^^^
|
note: `Parser` is imported here, but it is only a trait, without a derive macro
--> crossbundle/cli/src/commands/build/android.rs:4:5
|
4  | use clap::Parser;
|     ^^^^^^^^^^^^

I fixed it by editing crossbandle/cli/Cargo.toml. I changed clap = "3.0.0-beta.5" to clap = {version = "3.0.0-beta.5", features = [ "derive" ] }

Closing as clap minor version released, and we moved to it.


Brew installation of Pushpin not able to run in MacOS Big Sur

I setup pushpin using brew on my Mac, but whenever I try to run it, I get the following in my terminal:
INFO] 2020-11-21 11:59:10.314 starting...
[INFO] 2020-11-21 11:59:10.315 using config: /usr/local/etc/pushpin/pushpin.conf
[INFO] 2020-11-21 11:59:10.315 starting condure
[INFO] 2020-11-21 11:59:10.316 starting zurl
[INFO] 2020-11-21 11:59:10.317 starting proxy
[INFO] 2020-11-21 11:59:10.318 starting handler
[INFO] 2020-11-21 11:59:10.321 started
[ERR] 2020-11-21 11:59:10.354 handler: Exited unexpectedly
[INFO] 2020-11-21 11:59:10.355 stopping condure
[INFO] 2020-11-21 11:59:10.355 stopping zurl
[INFO] 2020-11-21 11:59:10.355 stopping proxy
[INFO] 2020-11-21 11:59:10.381 stopped

Sometimes there is a flash of a modal asking to Allow something (I assume incoming port connections), but it disappears before I can click Allow. Any ideas why this is happening and how I might fix it?
I'm running Big Sur, but since this is my first time trying to run pushpin I'm not sure if that's a contributing factor.

I don't think we've tested on Big Sur yet.
A couple of ideas:

Try running pushpin-handler directly and see if it runs or crashes (passing no arguments should be fine). If it crashes, there may be more output this way.
In case there's some issue with bottles, try --build-from-source when installing.

I did a reinstall with brew using --build-from-source, but there was no difference.
I was able to get it to it to work with Docker, so I'll stick with that for no.
I'm interested in figuring out why it didn't work the normal way, so how do I run the handler directly?

After installing pushpin, the pushpin-handler program should be in your PATH and you can just run it.

I got the following:
➜  server pushpin-handler
[INFO] 2020-11-22 17:06:58.533 starting...
[INFO] 2020-11-22 17:06:58.538 zhttp in stream: ipc:///usr/local/var/run/pushpin/pushpin-condure-out-stream
[INFO] 2020-11-22 17:06:58.538 zhttp out: ipc:///usr/local/var/run/pushpin/pushpin-condure-in
[INFO] 2020-11-22 17:06:58.538 inspect server: ipc:///usr/local/var/run/pushpin/pushpin-inspect
[INFO] 2020-11-22 17:06:58.538 accept server: ipc:///usr/local/var/run/pushpin/pushpin-accept
[ERR] 2020-11-22 17:06:58.538 unable to bind to tcp://<IP_ADDRESS>:5563

Are there any arguments that it needs?

It looks like binding to port 5563 is failing. You must have something else running on that port.
You can change the port to something else in /usr/local/etc/pushpin/pushpin.conf

I was never able to discover what was running on 5563. I changed the port to 5564 and ran pushpin-handler, and it seems to be running. The only problem now is that when I try to connect using the node example, I get:
➜  server wscat --connect ws://localhost:7999/api/websocket
error: connect ECONNREFUSED <IP_ADDRESS>:7999

Any idea why that is the case and how to get past it?

Probably because the rest of pushpin isn't running. Now that you've managed to get pushpin-handler to work on its own, you can terminate it and run pushpin normally.

Thanks. Now pushpin works, but I'm getting:
➜  server wscat --connect ws://localhost:7999/api/websocket
error: Unexpected server response: 404

Thoughts?

What does your routes file look like?

I run lots of react apps so I moved it to 3001. Is there
* localhost:3001
The other ip addresses/ports in the .conf file are:
# plain HTTP port to listen on for client connections
http_port=7999

# bind PULL for receiving publish commands
push_in_spec=tcp://<IP_ADDRESS>:5560

# list of bind SUB for receiving published messages
push_in_sub_specs=tcp://<IP_ADDRESS>:5562

# addr/port to listen on for receiving publish commands via HTTP
push_in_http_addr=<IP_ADDRESS>
push_in_http_port=5561

# bind REP for responding to commands
command_spec=tcp://<IP_ADDRESS>:5564

If you're getting a 404, then it means the server on port 3001 is returning 404.
Side note: to have WebSocket events converted to HTTP, you'll want the route to be:
* localhost:3001,over_http

Okay, one step closer!
Now I'm getting:
error: Unexpected server response: 502
When I run post on using:
curl -X POST localhost:7999/api/websocket
I get [not a websocket request], which is what it's supposed to do, and the logging works.
This is the ws-express example, so it is expecting a websocket.
Also, thanks for your help on this!

If the backend is a websocket server, then in that case don't use over_http.
If you are still getting 502, look at zurl.log to see what is being sent to the backend and what is coming back.

Maybe I'm missing something. In the express sample code, all of the endpoints are app.post, but are expecting a websocket. Is that how it's supposed to work? Or should they be app.ws endpoints?
Here's what zurl has to say:
[DEBUG] 2020-11-23 17:35:50.907 recv-init: { "ignore-policies": true, "seq": 0, "ext": { "multi": true }, "connect-host": "localhost", "from": "pushpin-proxy_42633", "headers": [ [ "Sec-WebSocket-Version", "13" ], [ "Sec-WebSocket-Key", "xX/nvHMBMK9cIVKznHReMg==" ], [ "Upgrade", "websocket" ], [ "Host", "localhost:7999" ], [ "Grip-Sig", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDYxODUzNTAsImlzcyI6InB1c2hwaW4ifQ.62OyJ8YPrs_MlNNCleTAoZVCBDA4m7TlfLMZNSVua2A" ], [ "Grip-Feature", "status, session, link:next, filter:skip-self, filter:skip-users, filter:require-sub, filter:build-id, filter:var-subst" ], [ "Sec-WebSocket-Extensions", "grip" ] ], "connect-port": 3001, "uri": "ws://localhost:7999/api/websocket", "credits": 200000, "id": "57238b5b-4031-41e4-a04b-f816e83544f9" }
[INFO] 2020-11-23 17:35:50.907 IN id=57238b5b-4031-41e4-a04b-f816e83544f9, ws://localhost:7999/api/websocket
[DEBUG] 2020-11-23 17:35:50.907 resolving: [localhost]
[DEBUG] 2020-11-23 17:35:50.908 ws: trying <IP_ADDRESS>
[DEBUG] 2020-11-23 17:35:50.908 ws: connecting to <IP_ADDRESS>:3001
[DEBUG] 2020-11-23 17:35:50.909 ws: sock_error: 0
[INFO] 2020-11-23 17:35:50.909 OUT ERR id=57238b5b-4031-41e4-a04b-f816e83544f9 condition=remote-connection-failed
[DEBUG] 2020-11-23 17:35:50.909 send: { "seq": 0, "condition": "remote-connection-failed", "from": "{3ab44e28-b65d-458a-9505-0f3071bf45a1}", "type": "error", "id": "57238b5b-4031-41e4-a04b-f816e83544f9" }

Which example are you using? The ones we've made are usually set up to use WebSocket-over-HTTP, where the backend receives POSTs instead of actual websocket connections. So, the use of app.post on the backend would be correct, and you'd set over_http on the Pushpin route.

I'm using the express-ws one in the examples folder. It has app.post endpoints.
If that is not how it's supposed to work, can you send me to a working example?

It turned out there were some issues with that example which are now fixed. Let me know if it still doesn't work for you.

I updated the packages, but I'm still getting the exact same behavior when I run wscat --connect ws://localhost:7999/api/websocket
Here's the zurl.log:
[DEBUG] 2020-11-24 20:37:43.725 recv-init: { "seq": 0, "ext": { "multi": true }, "connect-host": "localhost", "connect-port": 3001, "from": "pushpin-proxy_93209", "uri": "ws://localhost:7999/api/websocket", "credits": 200000, "headers": [ [ "Sec-WebSocket-Version", "13" ], [ "Sec-WebSocket-Key", "bqdIEwPAaS5+DNpN6rfEMQ==" ], [ "Upgrade", "websocket" ], [ "Host", "localhost:7999" ], [ "Grip-Sig", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDYyODI2NjMsImlzcyI6InB1c2hwaW4ifQ.I27bFW0jJOKJPa6uF3ypAnquS3jPEll_a72FPpxx6bM" ], [ "Grip-Feature", "status, session, link:next, filter:skip-self, filter:skip-users, filter:require-sub, filter:build-id, filter:var-subst" ], [ "Sec-WebSocket-Extensions", "grip" ] ], "ignore-policies": true, "id": "3f5619b1-d79f-4bb0-b172-9ea75bd24523" }
[INFO] 2020-11-24 20:37:43.725 IN id=3f5619b1-d79f-4bb0-b172-9ea75bd24523, ws://localhost:7999/api/websocket
[DEBUG] 2020-11-24 20:37:43.726 resolving: [localhost]
[DEBUG] 2020-11-24 20:37:43.726 ws: trying <IP_ADDRESS>
[DEBUG] 2020-11-24 20:37:43.726 ws: connecting to <IP_ADDRESS>:3001
[DEBUG] 2020-11-24 20:37:43.726 ws: sock_error: 0
[INFO] 2020-11-24 20:37:43.726 OUT ERR id=3f5619b1-d79f-4bb0-b172-9ea75bd24523 condition=remote-connection-failed
[DEBUG] 2020-11-24 20:37:43.726 send: { "seq": 0, "type": "error", "from": "{dd875790-271e-4d46-8bf9-cb7e58b41099}", "id": "3f5619b1-d79f-4bb0-b172-9ea75bd24523", "condition": "remote-connection-failed" }

Be sure to use over_http in the pushpin route. The example expects to receive regular HTTP requests.
Also make sure the example is actually listening on port 3001.

That was it. I forgot that I had removed the over_http;
Thanks for your help!

Glad it's finally working!

I am finding the express server times out/disconnects after a while. Is there a better way to set this up so it reconnects or doesn't disconnect?
level: 'error',
  service: 'spark-analytics',
  timestamp: '2020-11-24 21:46:33',
  message: 'Client disconnected unexpectedly.',
  stack: 'Error: Client disconnected unexpectedly.\n' +
    '    at WebSocketContext.recvRaw (/Users/erick/Documents/spark-analytics/server/node_modules/@fanoutio/grip/src/data/websocket/WebSocketContext.ts:106:19)\n' +
    '    at WebSocketContext.recv (/Users/erick/Documents/spark-analytics/server/node_modules/@fanoutio/grip/src/data/websocket/WebSocketContext.ts:111:29)\n' +
    '    at /Users/erick/Documents/spark-analytics/server/server/p_server.ts:49:33\n' +
    '    at Generator.next (<anonymous>)\n' +
    '    at /Users/erick/Documents/spark-analytics/server/server/p_server.ts:8:71\n' +
    '    at new Promise (<anonymous>)\n' +
    '    at __awaiter (/Users/erick/Documents/spark-analytics/server/server/p_server.ts:4:12)\n' +
    '    at /Users/erick/Documents/spark-analytics/server/server/p_server.ts:21:47\n' +
    '    at Layer.handle [as handle_request] (/Users/erick/Documents/spark-analytics/server/node_modules/express/lib/router/layer.js:95:5)\n' +
    '    at next (/Users/erick/Documents/spark-analytics/server/node_modules/express/lib/router/route.js:137:13)'
}

The library generates this exception if a client disconnects uncleanly. If you don't care about the difference between a clean close and an abrupt disconnect (most apps don't), you can just wrap in a try/catch and ignore.

Cool. Thanks again for all your help!


Draft README for all radius repo

This will be much more in depth than the template for use in the sub-repos but should include all the items in the sub-repo checklist.
AB#6666

This has been completed


Cursor options doesn't work

Describe the issue
Cursor options doesn't work. The touch input mode will always be drag cursor mode, even I choose touch mode (always show cursor) or touch mode (try hiding cursor).
Configuration (required)

UTM Version: 4.0.4~4.0.5
OS Version: 15.3.1
Device Model: iPhone SE(2nd)
Is it jailbroken (name jailbreak used)? no
How did you install UTM? sideload

Upload VM
config.plist

To be clear: this issues may not start from 4.0.4, but must start from 4.0.

@Halo-Michael Make sure that QEMU -> Force PS/2 Controller is not checked. I think during the migration to v4 settings, it toggled the setting.

@Halo-Michael Make sure that QEMU -> Force PS/2 Controller is not checked. I think during the migration to v4 settings, it toggled the setting.

It is not checked, I have already uploaded my config file, you can also check it.

@Halo-Michael Make sure that QEMU -> Force PS/2 Controller is not checked. I think during the migration to v4 settings, it toggled the setting.

But it is un-ckecked; I have already uploaded my config file, you can check it.

You have USB bus disabled though.

That’s actually intended if USB bus is disabled. It used to be called “legacy input”


VS Code Create Project documentation no longer up to date, launch.json and tasks.json files are not being created

Type of issue
Outdated article
Description
When following the documentation to create a new app, add the end the user should be left with a VS Code configuration to run and debug the app. However this is no longer the case, the extension no longer creates the necessary files. Additionally, the steps to create those files no longer work (https://github.com/dotnet/docs/blob/main/docs/core/tutorials/with-visual-studio-code.md?plain=1#L63) since the .NET targets are no longer present when using the C# Dev Kit extension.
Page URL
https://learn.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code
Content source URL
https://github.com/dotnet/docs/blob/main/docs/core/tutorials/with-visual-studio-code.md
Document Version Independent Id
25a4c9b9-2808-e296-df03-5837000dcbad
Article author
@tdykstra
Metadata

ID: 8cc2e9c2-f333-f6a1-064e-790d950b684c
Product: dotnet-fundamentals

The first tutorial of the series states in the Prerequisites section that C# Dev Kit should not be installed.  Try the tutorial with just the C# extension installed.

This tutorial is on the list to be upgraded to use C# Dev Kit. See #37494


stream output's type

When i use the provided steam output's example code(https://github.com/replicate/replicate-python#run-a-model-and-stream-its-output), it output nothing but output blank lines.
Is this related to the type of event?
May be the code should be
import replicate

# https://replicate.com/meta/llama-2-70b-chat
model_version = "meta/llama-2-70b-chat:02e509c789964a7ea8736978a43525956ef40397be9033abf9fd2badfe68c9e3"

tokens = []
for event in replicate.stream(
    model_version,
    input={
        "prompt": "Please write a haiku about llamas.",
    },
):
    print(event.data)
    tokens.append(str(event.data))

print(" ".join(tokens))

But when I use the above code, it always output a {} at the end.
Could you provide a correct code example?

Hi @callanwu. Thanks for reporting, and sorry for any convenience. I found some bugs in the stream method that I fixed in #214. Those are now available in 0.21.1. Please let me know if you have any more issues with this.


Remove DNN proxies once the demo app redesign is merged

Hi,
We will need to remove DNN proxies once https://github.com/dividiti/crowdsource-video-experiments-on-desktop/pull/24 is merged. The proxies are actually a hack for old demo app to work, and we should strive for not having dead code in repos.

Done! Moved to ck-old-packages repo (the DLL usage can still be useful one day) ...

Typically, Git tags are used to mark outdated content - this way, you can always bring it back. But, I guess, moving into a separate repo works as well.

Well, it's not exactly the same - packages is a high level CK functionality and want to still have them in a working state somewhere, rather then do something with Git. I.e. I can just pull that repo and immediately use these packages ...


Worm ID can be a number, but this raises ambiguities

Worm IDs are allowed to be either numbers or strings.  But what if the two are mixed?
Is "id":0 the same as "id":"0"?  What about "id":0.0?
We should either carefully specify exactly what the equivalence is, or we should allow only string IDs (where there should be no ambiguity).

I'd be in favour of allowing only string IDs.  If someone has the convention that all their worms use integer IDs, they are just as unambiguous if converted for WCON purposes into strings, so no problem there.
Using a float to identify your worms is the worst data tool I've ever heard, so let's not support that :)

Specification is updated in #146 but software is not updated yet.

Tests were updated by @Ichoran with d27f2bec3ce2809c00adb2d8a67e5d1199d8dc42.

It's also a rule in the schema, which is optionally used because the current schema validator used (jsonschema) is very slow on large files.
Nothing else needed here; I will close this.


DBZ-8262 Align relational_table clauses to handle logminer rules

https://issues.redhat.com/browse/DBZ-8262

@ani-sha Applied, thanks!


Add Middleware from Class: 'Tuppola\Middleware\JwtAuthentication'

My intention is to define a class and then add middleware in this way:
$app->add(\Api\Src\Middleware\MyClass::class . ':MyMethod');
MyMethod is a function like that:
public function MyMethod(){
     return  new Tuupola\Middleware\JwtAuthentication([
          "secret" => "supersecretkeyyoushouldnotcommittogithub"
     ]);
}

But if I do this the I get a response that says something like "you have to return something of the class ResponseInterface"
How could I fix this problem?

Middlewares have to return PSR-7 Psr\Http\Message\ResponseInterface. In the above example your MyClass::MyMethod returns Tuupola\Middleware\JwtAuthentication.


dispatch as middleware

I'm not sure if this was already considered. I'm currently playing around with a react-router integration and want my actions to return a transition statement:
export function loginSuccess(user) {
  return {
    user: user,
    type: LOGIN_SUCCESS,
    transitionTo: '/dashboard'
  };
}

In my case it's necessary to run the transition after the dispatch is finished. My idea was to compose the middleware stack like this:
const dispatcher = createDispatcher(
    composeStores(reducers),
    (getState, dispatch) => [ thunk(getState), logger, dispatch, transition ]
);

The transition middleware should read the transitionTo key and invoke the routers transition method.
Any idea how this could be done?

This is essentially a side effect. Is there any reason this could not be implemented by subscribing to the store's change event?

Wouldn't that be a side effect either? How would I get the transitionTo key from the action?
What would you recommend in order to invoke transitions from actions? Is it a good idea at all?
Many questions :)

Make a route reducer that saves the current route state. Then, transition from inside a store subscriber whenever the route state changes.

makes sense :) thx!

Make a route reducer that saves the current route state. Then, transition from inside a store subscriber whenever the route state changes.

I think this is contrary how React Router works. When using RR with Flux, I think it's right to listen to the router's change event and fire app's Actions, which will in turn update the store with the new current path. The root component listens to that store and re-renders.
So the normal flow is [browser event or transitionTo call] --> [router change event] --> [CHANGE_ROUTE app action] --> [reducer] --> [component re-renders]. What you're suggesting seems to be reverse flow: [DO_SOMETHING action] -> [reducer] --> [some root component calls transitionTo]. I don't think these approaches can be combined in a sensible way.
I think that any router transitions should be in action creators—because, effectively, router.transitionTo call turns into an action caused by the route change handler. I'm not sure it makes a lot of sense to abstract this away in the middleware, but without it, I'd write something like this:
export function loginSuccess(user, router) {
  return dispatch => {
    dispatch({ user, type: LOGIN_SUCCESS });
    router.transitionTo('/dashboard'); // will fire CHANGE_ROUTE in its change handler
  };
}

It's up to the calling component to pass the router.

Yeah, that's essentially how I've always done it, but I've never really liked how such a crucial piece of state was out of your control. In an ideal world, we'd keep route state inside our store, right?
It was my understanding that with React Router 1.0, the browser history listening part, the route matching part, and the rendering part are all separated. So it seems like it should be possible to fire an action inside the history listener, and match/render inside the the store listener.
// Fire action creator
// Store keeps track of current location
BrowserHistory.listen(location => updateRouteLocation(location));

store.subscribe(state => {
  // Obviously you would want to memoize this
  Router.match(state.location, (error, props) => {
    // blah blah React.render() goes here
  }
})

Huge disclaimer: I haven't actually implemented this yet, nor have I played with the RR beta, but it seems like it should be possible.

This is precisely what I'm advocating :-)
My point was that you don't want the custom action (e.g. LOGIN_SUCCESS reducer) to change router store; you want to call router's side effect in the loginSuccess action creator, so that this updates URL bar and causes history to emit change event, which in turn will translate to your CHANGE_ROUTE action and then go as you described.

What about the router reducer to handle the LOGIN_SUCCESS action like:
export default function router(state = {}, action) {
    switch (action.type) {
        case 'loginSuccess':
            return {
                location: { pathname: '/' }
            };
        case 'logout':
            return {
                pathname: { pathname: '/login' }
            };
        default:
            return state;
    }
}

Shouldn't the stores/reducers be responsible for changing the state?

@gaearon Re-reading your comment I see we're mostly on the same page. My original comment should have said:

Make a route reducer that saves the current route state. Then, re-render from inside a store subscriber whenever the route state changes.

rather than transition.
I disagree that the action creator is the right place to put router.transitionTo(). That should be in a store subscriber. Yes, that means there are two dispatches, but your example has two dispatches also. The difference is that one approach is reactive and the other is imperative.

@malte-wessel A core part of the Redux architecture is that we assume reducers are pure, with no side-effects. It's what enables stuff cool stuff time travel.

I have now something like this
function handleHistoryChange() {
    redux.dispatch(historyChange({ history.location }));
}

history.addChangeListener(handleHistoryChange);

function handleRouteStateChange() {
    const location = redux.getState().router.location;
    // Logic to distinguish between changes that come from history
    // (like pressing the back button) and those from actions...
    // If the change comes from history return here (history is already in this state)

    const { pathname, query, state } = location;
    // You need to implement your own transitionTo method
    history.pushState(state, makePath(pathname, query));
}

redux.subscribe(handleRouteStateChange);

The history is shared with the router, so you don't have to implement your own router rendering
In the route reducer you would do:
export default function router(state = {}, action) {
    switch (action.type) {
        case HISTORY_CHANGE:
            return {
                location: action.location
            };
        case LOGIN_SUCCESS:
            return {
                location: { pathname: '/' }
            };
        case LOGOUT:
            return {
                location: { pathname: '/login' }
            };
        default:
            return state;
    }
}

@acdlite Isn't the route reducer pure? I think you could actually do time travel with this.

@acdlite
I still think this goes against how RR works. RR can cancel the transition, for example. (Route onEnter hook could redirect.)
In your example, the app would first think it's on the success page (and re-render), but then the router's transition method would be called, and router might redirect the user from a route that's not ready yet.
For routing state, I think the router change event payload should be the source of truth. Otherwise the router is not in control. Our wish to transition is our wish, but ultimately the router should decide when and whether it happens.

Here's another example. RR supports async routes. This means that you might want to transition to /something, but this route is not even loaded yet!
If the router is in control, you tell it to transitionTo and whenever it's ready for this to be the active route, it will tell us that via a change handler. But if the router is not in control, we'll have nothing to render. There's just no handler for /something yet.

@gaearon How is RR not in control? All I did was change the location of router.transition() from the action creator to the store subscriber. state.location is always up to date because of the BrowserHistory listener. Clearly I'm missing something...

@acdlite
With this approach:
export default function router(state = {}, action) {
    switch (action.type) {
        case HISTORY_CHANGE:
            return {
                location: action.location
            };
        case LOGIN_SUCCESS:
            return {
                location: { pathname: '/' }
            };

Location is updated in response to user action (LOGIN_SUCCESS) even if the corresponding route configuration might not have loaded yet.
All I'm saying is, the only thing that can change state.location is the route reducer which reacts only to the router change action. It does not react to any user action.
With your code sample:
store.subscribe(state => {
  if (state.loggedIn && state.location == something) {
    router.transitionTo(successLocation);
  }
});

I assume that state.location was somehow changed in response to the user action. Is something meant to refer to the previous position? Then I misunderstood you.

I also don't think reactive approach makes sense here.
This:
store.subscribe(state => {
  if (state.loggedIn && state.location == something) {
    router.transitionTo(successLocation);
  }
});

will also trigger if I press “Back”. The state.location resets to the location where I was, and loggedIn is true, which will redirect me forward again.
My point is, it's clearly a side effect, and it's a side effect relevant to a particular action creator. It's not a global side effect that happens every time you're on a specific page and a specific field is true.
Therefore I think it belongs in the action creator.

In RR 1.0 you don't have access to the router instance until it's rendered anywhere. This makes things even more complicated. I guess that if you do a history.pushState() the router will try to make the transition. If the transition is aborted the router will update the history again (I guess) and the router store/reducer will be in the correct state.

From the components, you always have access to the router instance. (It's passed by context.)

yes, but not from the action creators. except when you store a reference to the router when it's rendered. but I think thats not the way to go.

yes, but not from the action creators.

You can pass the router instance to the action creators. You can also transition from the components themselves.

I assume that state.location was somehow changed in response to the user action

Nah, that is only changed by updateRouteLocation() in my comment above, so it's always in sync:
BrowserHistory.listen(location => updateRouteLocation(location));

It's not a global side effect that happens every time you're on a specific page and a specific field is true.

What does a "global" side effect mean in the context of Redux, where the entire state atom is emitted every single time? Yes, my example above is clearly naive. In reality you would only be responding to a subset of the state changes, either using Connector's select, using observables, etc.
It's just like using componentWillReceiveProps() to trigger a side effect.

In reality you would only be responding to a subset of the state changes, either using Connector's select, using observables, etc.

I just don't understand how you can tell between situation where you need to redirect (just authenticated) and where you don't need to redirect (authenticated long ago but state looks similar).
It sounds much more complicated than just doing it imperatively wherever you're dispatching LOGIN_SUCCESS.

(In fact I tried both approaches when developing Stampsy. I had too much pain with “observable” approach when some new conditions caused some filter I wrote long ago to fire and cause unwanted redirects. In the end I went with the imperative approach and haven't had a problem ever since.)

@gaearon Example:
const stateStream = storeToStateStream(store);

stateStream
  .distinct(state => !state.loggedIn && state.location === '/login')
  .subscribe(state => {
    if (state.loggedIn && state.location === '/login') {
      // Only fires when you're on the login page and you just logged in
      router.transitionTo('/success');
    }
  });

I like this reactive approach better because now it doesn't matter how the user logs in as long as the state field has changed. You can use a login form, a web socket event, whatever... no need for separate transitionTo() calls.
Clearly not all transitions should be done this way (not even most), but I think it's best for transitions that are side effects of Flux actions.

Oh, I actually like it. I missed the distinct and “changed” bit.

Also moving router.transitionTo from action creators to store subscriber makes code more independent of router realization, no need to pass router instance to action creators. (i can use middleware to remove this dep)
But even for simple changeRoute action I need something like this
const stateStream = storeToStateStream(store);

stateStream
  .distinctUntilChanged(state => state.requestedRoutePath)
  .filter(state => !!state.requestedRoutePath)
  .filter(state => state.requestedRoutePath !== state.location)
  .subscribe({
     router.transitionTo(state.requestedRoutePath);
   });

(It will not work if location changed elsewhere but requestedRoutePath still the same so need reset it in reducer on location change.)
Moving 'router.transitionTo' to action, makes code simple and life more easier.

@istarkov I wouldn't use a generic changeRoute action except for in the BrowserHistory listener. Just use router.transitionTo() directly.
My point about doing transitions inside state subscribers regards only those route transitions that are a side effect of an action — like when a user logs in, or when a form is successfully submitted, etc.
Good catch on using distinctUntilChanged() instead of distinct(), though. I updated my example above.

Is there a library or code sample used for the storeToStateStream function?? I'd love to see a more fleshed out version of the BrowserHistory Listener.

@timothyjlaurent the storeToStateStream function returns a RxJs Observable:
function storeToStateStream(store) {
  return Rx.Observable.fromEventPattern(
    (handler) => store.subscribe(handler),
    (handler, unsubscribe) => unsubscribe(),
    () => store.getState()
  );
}

@tappleby thanks for kindly clarifying

Still having trouble figuring out using redux with RR...
Specifically, RR 1.0 allows you to pass in an onEnter function when defining your routes like so:
function requireAuth(nextState, transition) {
  // My user state is in redux — how do I get it out!
}

export default (
  <Route path="/" component={App}>
    <Route path="login" component={LoginRoute}/>
    <Route path="account" component={AccountRoute} onEnter={requireAuth}/>
    <Route path="*" component={NotFound}/>
  </Route>
);

I've tried (and failed) at having a redux singleton contained within a module.
The problem is I need the same instance of redux both inside my route definition (for the auth handler) and inside the client entry point (where I hydrate the redux instance and pass it into the Provider). I'm doing server-side rendering for added fun!
Any ideas?

@iest you can wrap your routes definition:
// routes.js
export const createRoutes = (requireAccess) => {
  return (
    <Route name="app" component={App}>
      <Route name="home" path="/" components={HomePage} onEnter={requireAccess(accessLevels.user)}/>
      ...
    </Route>
  );
};

And then bind requireAuth to redux and pass it to createRoutes.
I'm working on auth example, so you can check it out https://gist.github.com/iNikNik/1eabfc6bcc132384368c (It's VERY basic version, but I improve it)

@gaearon Is there a gist somewhere with the current "best" practice (I know it's moving fast at the moment) to integrate RR1.0 with redux?

Looks perfect @iNikNik! Thanks very much.

While it's far from perfect API right now, something good (and official) is going to eventually come out of https://github.com/acdlite/redux-react-router so you might wanna watch it.
Leaving this open so I'll come back to this in new docs.

maybe react-router not suit for redux?

+1

Superseded by #637 which contains more up-to-date info.

@gaearon  I am following approach for routing in action.. I am new to react and redux and got following issue:

router is not defined in router.transitionTo("/url")
I have set up url correctly and its working to.. Lets say I have homepage with tow tabs one and two which redirects to /one and /two .. when I click from homepage on that tabs it properly redirects but when I do something like localhost:3333/one from browser it gives me error.. url is not defined

Any suggestion ?

Please ask this on StackOverflow as this is a usage question. We have real-world example in the repo that implements routing.

I have asked it but no one answered :) ... http://stackoverflow.com/questions/35057443/redux-transition-to-after-action-execution


Issues with Icons

Hi,
There were some issues with the icons specifically the percent sign. Tried different styles and variations but didnt seem to work. But this made it work:
<style>
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/materialicons/v129/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}

.material-icons {
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;

}
</style>

Thanks fixed with # 0.3.15, let me know if you still see problem


Added Post Device update API

Ready for Review

@omab ready for review when you have a moment

Requested Changes are Completed. Ready for Review


8 setup ci

This PR closes #8.
#17 should be merged to main before this PR is approved.
Added:

automatic ruff formatting on commit (run manually with pre-commit run --all-files)
GitHub action to run ruff formatting again on PR

We can add further tests and checks as required.
There are multiple files with diffs here as this PR is based off @TomMelt addition of ruff as formatter. The changes from that branch haven't been merged into main yet and so they appear in the diffs here.
The important files to check are just those associated with the CI process:

ruff-format.yml
.pre-comit-config.yaml

I intend to squash all commits and rebase before merging into main.

Thanks @j-emberton , to make the diff easier for reviewers I would recommend rebasing the PR (not the branch) off of ruff-format-code rather than comparing against main. We can then, either merge this into ruff-format-code before merging ruff-format-code into main, or we can just rebase (the PR) onto main, when #17 is merged.

@j-emberton thanks for adding the pre-commit hook. Could you please add some info to the README.md to explain how users can set this up.
We should also make a note in the README.md that we now follow version x.x.x of ruff for formatting code and that users should use the develop install as described in the README.md to install that version of ruff.

@j-emberton thanks for adding the pre-commit hook. Could you please add some info to the README.md to explain how users can set this up.
We should also make a note in the README.md that we now follow version x.x.x of ruff for formatting code and that users should use the develop install as described in the README.md to install that version of ruff.

There shouldn't be any setup. All dependencies are installed through the poetry developer dependency list, then the hook runs automatically on commit.
We could add a note to the reader to explain how to manually run the hook (as I've added to the PR). Is that what you mean?

@j-emberton thanks for adding the pre-commit hook. Could you please add some info to the README.md to explain how users can set this up.
We should also make a note in the README.md that we now follow version x.x.x of ruff for formatting code and that users should use the develop install as described in the README.md to install that version of ruff.

There shouldn't be any setup. All dependencies are installed through the poetry developer dependency list, then the hook runs automatically on commit.
We could add a note to the reader to explain how to manually run the hook (as I've added to the PR). Is that what you mean?

No, I mean how to setup the pre-commit hooks. AFAIK there's two stages:

The user has to install the scripts using the develop build e.g., poetry install --no-root --with develop; and
The commit hook has to be installed i.e., pre-commit install. Without that, the commit hook will not run at all.

@j-emberton thanks for adding the pre-commit hook. Could you please add some info to the README.md to explain how users can set this up.
We should also make a note in the README.md that we now follow version x.x.x of ruff for formatting code and that users should use the develop install as described in the README.md to install that version of ruff.

There shouldn't be any setup. All dependencies are installed through the poetry developer dependency list, then the hook runs automatically on commit.
We could add a note to the reader to explain how to manually run the hook (as I've added to the PR). Is that what you mean?

No, I mean how to setup the pre-commit hooks. AFAIK there's two stages:

The user has to install the scripts using the develop build e.g., poetry install --no-root --with develop; and
The commit hook has to be installed i.e., pre-commit install. Without that, the commit hook will not run at all.

ah, forgot about that step!

@TomMelt have committed the remove push request.
I think we're good to go so I'll refresh the review request and we're good to go


Exec check

Jesse wrote the initial exec check - need to elaborate on it a bit more:

Should have a max runtime
Expected return code
Expected output

All done in #56


Zoom does not work with orthogonal projection

Version: raylib 4.2.0 (11 August 2022)
IDE/Compiler: Visual Studio 2022 Community edition
Code example: core_3d_camera_free from examples
The program works fine, when camera.projection = CAMERA_PERSPECTIVE; Zoom/pan/rotation are all fine.
If camera.projection is changed to CAMERA_ORTHOGRAPHIC, zoom does not works anymore.
In raylib.h/struct Camera3D there is a comment: float fovy;             // Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic. But no code changes the this variable.
I made a quick and dirty solution: I just added the following code to the right branch of the switch in the UpdateCamera function, and it worked!
if (camera->projection == CAMERA_ORTHOGRAPHIC && mouseWheelMove < 0)
{
    camera->fovy -= 5.0f;
}
else if (camera->projection == CAMERA_ORTHOGRAPHIC && mouseWheelMove > 0)
    {
camera->fovy += 5.0f;
}

Is there any plan to implement this in the near future?

@k-novak Camera system is being completely redesigned but feel free to send a PR with this addition for current implementation.

No PR, no addition.


error creating Kafka ACLs: 400 Bad Request: pattern_type cannot be MATCH

Provider Version: 1.51
Cluster Type: Dedicated Cluster
Connection Type: Azure-Private-Link

Hello,
we are currently trying to create some ACLs and were trying to get an ACL working for a pattern using a wildcard asterisk inside the resource name - example: "company.location.private.*.dev"
Using LITERAL pattern type is not working using an asterisk and using PREFIX would include all topics not containing .dev as suffix.
As mentioned in the Provider Docs allowed pattern types are UNKNOWN, MATCH, LITERAL, and PREFIXED
Same is documented for the underlying API.
During terraform plan MATCH is accepted as valid pattern type but when running apply it fails with the following error message:
Error: error creating Kafka ACLs: 400 Bad Request: pattern_type cannot be MATCH
I tried to figure out what MATCH is doing excactly but was not able to find any hint of this pattern type in the Documentation. For my taste, the documentation generally lacks some information about which ACLs are possible.
Maybe you could also tell us if its possible to achieve an ACL working for a resource name containing wildcard asterisk and why MATCH is not working.

So i found the PatternType-Enum Java Doc.
If i get this right ANY and MATCH can only be used in filters an not for ACL creation?
ANY In a filter, matches any resource pattern type.  MATCH In a filter, will perform pattern matching.

👋 thanks for creating this issue @S1M0NM!

we are currently trying to create some ACLs and were trying to get an ACL working for a pattern using a wildcard asterisk inside the resource name - example: "company.location.private.*.dev"

Your question definitely makes sense to me but unfortunately it seems to be too advanced for me, I asked our backend team who works on this but it might take a while for them to reply so I'd probably recommend asking ⬆ on StackOverflow or something.
That said, your initial results look reasonable to me.

OK so the backend team confirmed that both ANY and MATCH are for filters (not for create operations). In fact, only supported options should be PREFIX and LITERAL. We'll work on updating the docs accordingly.


Auto-Silence-Cut.py missing from the repo

Hey there,
This project looks awesome. I am just in the process of installing the dependancies, but Auto-Silence-Cut.py seems to be missing from the repo.
Thanks in advance!

Hey randy!
Thanks for checking out my project and im glad you like it. Good catch its actually just a naming issue, its currently named 'auto-editor.py' in the repo but i will change it to 'auto-silence-cut.py' in the next commit to better match the readme.md
let me know if there's anything else you catch or something cool you'd like me to add! Oh, actually on that note. i think in the most recent DR 19.1 update they revoted graphical user interfaces from 3rd party scripts UNLESS you paid for studio... havnt been able to check it out myself but just a heads up if your on the most recent update the GUI may not work.

are you on mac? the 'AttributeError: module 'subprocess' has no attribute 'CREATE_NO_WINDOW'' suggests your on mac. i havnt been able to test it on mac but thought it would have no issues.

Ahhh yes I am on a Mac. Sorry, I'm new to this stuff haha. I'll see if I can find a nice workaround. Thanks for the quick replies!

had a feeling no problem. ive been meaning to test it on mac anyways, ill give it a look tonight and see what i can do. till then closing this issue and making a new one

Thanks so much! I really appreciate it


Error west flash

Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
/Users/pankajjadhav/zephyrproject/zephyr/boards/arm/stm32_min_dev/support/openocd.cfg:1: Error: Can't find interface/stlink.cfg
in procedure 'script'
at file "embedded:startup.tcl", line 60
at file "/Users/pankajjadhav/zephyrproject/zephyr/boards/arm/stm32_min_dev/support/openocd.cfg", line 1
ERROR: command exited with status 1: /usr/local/bin/openocd -f /Users/pankajjadhav/zephyrproject/zephyr/boards/arm/stm32_min_dev/support/openocd.cfg -c init -c targets -c 'reset halt' -c 'flash write_image erase /Users/pankajjadhav/zephyrproject/zephyr/build/zephyr/zephyr.hex' -c 'reset halt' -c 'verify_image /Users/pankajjadhav/zephyrproject/zephyr/build/zephyr/zephyr.hex' -c 'reset run' -c shutdown

cc @mbolivar

Was an stlink programmer properly connected?
I believe there is no on-board programmer, but this is not clearly documented in the board documentation of zephyr.

I believe there is no on-board programmer, but this is not clearly documented in the board documentation of zephyr.

Looks like you're right: https://embedjournal.com/iot-rtos-zephyr-stm32-minimum-system-development-board/#hardware-setup
@pankaj18 can you please answer @chrta 's question?

Was an stlink programmer properly connected?

Please also read the embedjournal link above if you need more information.

I am having the same issue. It seems openocd fails to find the stlink.cfg. I am not sure how to fix it.


Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment.

message error :
"message": "Authentication failed due to invalid authentication credentials or a missing Authorization header.",
what is the problem ?!

updated
solved

How you solved this problem?


TRACK method (v2) response validation bug

Detailed description
While trying to get a response in "trackPackage" method in "Client" class, an error is returned, even though there is a valid data returned. It is caused by statusCode set to 500.
Context
Fixes the bug. Allows users to retrieve relevant data.
Possible implementation
There is supposed to be $shouldHaveStatus variable in validateResponseStatus method set to false as there is not this index set in the response.
Just set shouldHaveStatus parameter in the trackPackage method to false - this solves the problem.
Your environment
Not necessary

Fixed with adding $shouldHaveStatus = false in trackPackage method.
Resolved in v1.1.2


GraphRBAC API: Invalid domain name in the request url

Relevant stack trace:
  File "/Users/kmai/.virtualenvs/tenant-automation/lib/python3.7/site-packages/msrest/paging.py", line 143, in __next__
    self.advance_page()
  File "/Users/kmai/.virtualenvs/tenant-automation/lib/python3.7/site-packages/msrest/paging.py", line 129, in advance_page
    self._response = self._get_next(self.next_link)
  File "/Users/kmai/.virtualenvs/tenant-automation/lib/python3.7/site-packages/azure/graphrbac/operations/groups_operations.py", line 339, in internal_paging
    raise models.GraphErrorException(self._deserialize, response)
azure.graphrbac.models.graph_error_py3.GraphErrorException: Invalid domain name in the request url.

Request:
https://graph.windows.net/<correct-tenant-id>/groups?$filter=startswith%28displayName%2C%20%27<correct-group-name>%27%29&api-version=1.6
Response (400 Bad Request):
'{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."},"requestId":"764cb351-a492-45f8-af57-ac83c2e18bc6","date":"2018-12-19T13:25:39"}}'
This worked until yesterday at this time. What's going on?

is the <correct-tenant-id> still existing? Can you check out with https://login.windows.net/<correct-tenant-id>/.well-known/openid-configuration. If yes, please send me the payload on the wire to yugangw at microsoft dot com

It could happen because of tenant_id in token and tenant_id in request url mismatch