Exif rotation not supported?

Some devices rotate images in a way that a landscape picture can be shown in portrait mode and the opposite.
In another part of my app I´m handling / fixing this with android ExifInterface, but ImageViewAsync seams like not taking care of this (correct me if I´m wrong).
This piece of code ilustrates the fix: https://gist.github.com/xleon/7c6e2eff4d9ca3c6db0b
Is there any actual workaround for this?
Am I doing something wrong?
Are you planning to handle exif rotation in the future?
I would make a PR but I´m not sure where´s the best place to write this code

Hi @xleon you are right Exif rotation is not yet handled. It's a good improvement for a future release.
I will investigate where would be the best place for it.

Cool.
For now I need a quick fix and I´m trying to figure out how to apply this code to the bitmap that will be shown in a ImageViewAsync. Any clue on how to do that? Even if it´s a temporal dirty hack

I ended up adding a rotate button that uses the rotate transformation to get around this in my app
Sent from my iPhone

On Jan 22, 2016, at 4:59 PM, Diego Ponce de León<EMAIL_ADDRESS>wrote:
Cool.
For now I need a quick fix and I´m trying to figure out how to apply this code to the bitmap that will be shown in a ImageViewAsync. Any clue on how to do that? Even if it´s a temporal dirty hack
—
Reply to this email directly or view it on GitHub.

That´s not an option in apps that don´t allow the user to edit the image

Even if it's a temporary hack I would suggest having it in ImageLoaderTask.
You could insert your method call in  GetImageAsync just before:
bool transformPlaceholdersEnabled = Parameters.TransformPlaceholdersEnabled.HasValue ?
					Parameters.TransformPlaceholdersEnabled.Value : ImageService.Config.TransformPlaceholders;

				if (Parameters.Transformations != null && Parameters.Transformations.Count > 0
					&& (!isPlaceholder || (isPlaceholder && transformPlaceholdersEnabled)))
				{

This has also high priority for us.
Would be awesome to get this build in FFImageLoading (we also have users who report their pictures uploaded with the wrong rotation).

I guess Exif rotation isn't working on any platform: Android, iOS, WP (SL, UWP, RT).
Isn't it?

I'm not sure. On iOS we had rotation problems (doing a landscape photo ended up on the server in portrait). These problems occured on iOS when fetching the image from disk and resizing it then using core graphics.
Since we use CachedImage on iOS with combination of image.GetImageAsync() the photos are rotated correctly. So my guess is the iOS ImageView automatically correctly rotates the taken photos?

@coonmoo Yes, on iOS, UIImageView will read EXIFF orientation from image file and handle it (imageView.ImageOrientation will give you current UIImageOrientation).

iOS:

https://forums.xamarin.com/discussion/comment/63159/#Comment_63159
http://stackoverflow.com/questions/1315251/how-to-rotate-a-uiimage-90-degrees

Windows:

http://timheuer.com/blog/archive/2010/09/23/working-with-pictures-in-camera-tasks-in-windows-phone-7-orientation-rotation.aspx
http://www.softwareisinthedetails.com/2012/11/windows-phone-8-photo-orientation-exif-bug.html
https://github.com/MvvmCross/MvvmCross-Plugins/issues/35
http://stackoverflow.com/questions/20259229/wrong-orientation-whe-capturing-photos-with-photocapturedevice

I changed the issue title as we´re talking about other platforms

Since reading the image orientation on android requires using ExifInterface with a "filepath" (which the CachedImage does not know), my proposal would be the following:
Add an optional overload to: GetImageAsJpgAsync
e.g. "rotation=0"
So I can use this method http://stackoverflow.com/a/11081918 in my app to determine the rotation.
and call cachedImage.GetImageAsJpgAsync(rotation: 90) which should internally use a matrix:
Matrix m = new Matrix();
m.PreRotate(rotation);
The currently implemented method should be switched from Bitmap.CreateScaledBitmap,
to CreateBitmap with a matrix (where you can apply scaling and rotation): e.g.
http://android-er.blogspot.de/2012/10/create-scaled-bitmap-using-matrix.html

In a exif-orientation-support branch I added some initial Android EXIF orientation support for file path image sources. What about web images? Should we handle it too? What do you think?

Sorry yeah, your approach (rotating the image also in the view) is the right way to do it.
But, I had huge memory problems on low-end devices that's why in my head was the rotation overload for GetImageAsJpgAsync.
@daniel-luberda
I did the rotation previously like you in your exif-orientation-support branch, but on devices with < 1GB ram I run into frequent out of memory issues when
loading the image and rotating it (thus holding two large images in memory).
For the web image support: I don't need it, because when users can upload their images correctly rotated, they are also fetched from the server correctly.

As to memory problems, the key is to do this: https://github.com/molinch/FFImageLoading/blob/exif-orientation-support/source/FFImageLoading.Droid/Extensions/ExifExtensions.cs#L57-L61
BTW: Notice the rotation takes place after downsampling, so if you have it correctly configured (for low-end devices capabilities) - it would be less costly operation do do the rotation.

@molinch Do you think we could optimize this method to try to reuse bitmap from pool? That would be even less memory costly operation.

@daniel-luberda I don't think we can do better than that... Unfortunately it does not seem to be possible to use the pool in this case.

Btw, I don't know if it changes anything but there is an overload of Bitmap.CreateBitmap that accepts the matrix as a parameter.
https://github.com/molinch/FFImageLoading/blob/exif-orientation-support/source/FFImageLoading.Droid/Extensions/ExifExtensions.cs#L43

@molinch From what I've read, using canvas (as we do it) should be more efficient, but I didn't test the differences. If anyone has an explanation about which one is better, just let me know.

BTW: shouldn't we rotate bitmap before resizing?

To lower memory usage it's better to downsample and then rotate.
But we should enforce correct width/height... Because of EXIF tags width can be height when we downsample.

We need to use this: http://stackoverflow.com/a/11128526/5064986 and this: https://github.com/molinch/FFImageLoading/blob/exif-orientation-support/source/FFImageLoading.Droid/Extensions/ExifExtensions.cs#L15-L41

Another changes. What do you think? https://github.com/molinch/FFImageLoading/commit/7114cbcc0d7777b21bb489fd8dd3f5a1b6061f60

I'll test it. Is there any chance you could provide a -pre release nuget package?
If it'll take you longer than 10minutes, I'd rather check out the source myself and build it.

I uploaded dlls here: https://mega.nz/#!pU4CHLyS!HdQxoZd_blRb5q76m0AQUJLCy7zOMa-9zB_ZgToSKjc

Another idea:
To avoid memory problems when loading image eg. from gallery. We could make a new ImageSource type which will always get an image thumbnail. It could use platform APIs to retrieve thumbnail, so it will be efficient.

Btw I agree with what @coonmoo said. If it comes from the web it's the responsability of the server to deliver correct images with correct orientation. It doesn't make sense to do it on device: it's slow and takes memory/cpu.
IMO we should make it clear on Wiki that:

Exif works for local files only.
It will remain so for performance reasons.

Which platform API are you thinking about?

@molinch I agree, exif orientation for local files should be enough.

It doesn't make sense to do it on device: it's slow and takes memory/cpu.

Currently, rotation is done only for images which have exif orientation specified. There's no performance penalty for files which don't have it.

Which platform API are you thinking about?

Android: http://stackoverflow.com/a/12294235/5064986
Windows StorageFile.GetThumbnailAsync
iOS - don't know?

Ah definitely not this API on Android :)
It's way more inefficient than the downsampling stuff we have.
I'd rather not change anything people can just use DownSample.

Did you test it? Is it really that bad in newer Android versions?:P

@coonmoo Did you test it?

Hey Daniel, thans for your effort!
I tested the dlls on various phones and discovered no issues.
But sadly I currently don't have access to the phone where the wrong orientation problems occured. So I cannot tell you if the orientation problem is fixed.
At least the change is stable on the phones I tested.

I rolled out the test dll changes to some testers.
Some people report that their uploaded pictures are now completly black.
So what I do is load the camera picture in the CachedImage view (preview is totally fine), then I call (after loading finished) image.GetImageAsJpgAsync(500.500. 95) and upload the resulting Byte Array to the Server. The Server stores this raw Byte Array then (without any further Image processing applied).
So for some users the uploaded Picture (despite displaying correctly in preview) turns totally black.
Any ideas on this?

@coonmoo I suppose it may be related to this: https://github.com/molinch/FFImageLoading/issues/135

I'm not sure.
I just tested it on a low end device, and sometimes even the images loaded from the server in CachedImage display completly black.

@coonmoo do you have anything special in the logs when it happens?

Here is the log from a low end device.

I opened the camera from my app and took a Picture
The result of the camera is loaded into CachedImage (first line of log)
The log line "Image was loaded" is when FFImageLoading finished loading
The displayed Image in CachedImage is completly black
The Image on the sdcard is fine, though

V/DroidLogger(31544): 2016/02/03 14:22:36:918 Going to load image /storage/sdcard0/Android/data/com.myapp/files/Pictures/myapp/IMG_20160203_142225.jpg
D/KeyguardViewMediator( 2035): setHidden false
D/VoIPInterfaceManager( 2035): getState()...
D/VoIPInterfaceManager( 2035):     Not exist call session
D/VoIPInterfaceManager( 2035): getState()...
D/VoIPInterfaceManager( 2035):     Not exist call session
D/ReuseBitmapDrawableCache(31544): Reuse pool is not full, refusing reuse request
I/libblt_hw( 1688): Library opened (handle = 0, fd = 30)
D/WindowManager( 2035): PhoneWindowManager: focusChangedLw
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
D/STATUSBAR-StatusBarManagerService( 2035): setSystemUiVisibility(0x0)
D/STATUSBAR-StatusBarManagerService( 2035): manageDisableList what=0x0 pkg=WindowManager.LayoutParams
D/STATUSBAR-QuickSettingPanel( 2203): mDisplayButtonCnt : 9 mCurButtonNum : 5
W/STATUSBAR-QuickSettingPanel( 2203): prepareTranslationXfalse  237
D/STATUSBAR-PhoneStatusBar( 2203): onConfigurationChanged
D/STATUSBAR-NetworkController( 2203): onReceive() - ACTION_CONFIGURATION_CHANGED
D/STATUSBAR-Clock( 2203): onReceive() - ACTION_CONFIGURATION_CHANGED
D/STATUSBAR-Clock( 2203): onReceive() - ACTION_CONFIGURATION_CHANGED
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
V/WindowManager( 2035): rotationForOrientationLw(orient=1, last=0); user=0 USER_ROTATION_LOCKED mLidState=-1 mCoverState=-1 mDockMode=0 mHdmiPlugged=false mAccelerometerDefault=false sensorRotation=-1
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
W/IInputConnectionWrapper(14599): showStatusIcon on inactive InputConnection
V/Camera  (14264): onDestroy
D/KeyguardViewMediator( 2035): setHidden false
D/KeyguardViewMediator( 2035): setHidden false
I/power   ( 2035): *** release_dvfs_lock : lockType : 1
D/PowerManagerService( 2035): releaseDVFSLockLocked : all DVFS_MIN_LIMIT are released
W/ActivityManager( 2035): mDVFSLock.release()
V/MenuResourceDepot(14264): onDestroy
V/MenuResourceDepot(14264): clearAllMenus
V/MenuResourceDepot(14264): clearing...
V/MenuResourceDepot(14264): clearing...
V/SoundPoolThread(14264): Got message m=1, mData=0
V/SoundPoolThread(14264): goodbye
V/SoundPoolThread(14264): return from quit
V/AudioPolicyManagerBase( 1706): releaseOutput() 2
V/SoundPoolThread(14264): return from quit
I/AudioService( 2035):  AudioFocus  abandonAudioFocus() from 14264
V/SoundPoolThread(14264): Got message m=1, mData=0
V/SoundPoolThread(14264): goodbye
V/SoundPoolThread(14264): return from quit
V/SoundPoolThread(14264): return from quit
V/AbstractCameraActivity(14264): onDestroy
D/KeyguardViewMediator( 2035): setHidden false
D/ReuseBitmapDrawableCache(31544): OnEntryAdded(key = /storage/sdcard0/Android/data/com.myapp/files/Pictures/myapp/IMG_20160203_142225.jpg;0x300)
D/KeyguardViewMediator( 2035): setHidden false
D/dalvikvm(31544): GC_FOR_ALLOC freed 530K, 15% free 29373K/34439K, paused 42ms, total 44ms
D/KeyguardViewMediator( 2035): setHidden false
I/dalvikvm-heap(31544): Grow heap (frag case) to 32.158MB for 2457616-byte allocation
D/KeyguardViewMediator( 2035): setHidden false
W/PowerManagerService( 2035): Timer 0x3->0x3|0x0
V/CropImage(14599): onDestroy
D/KeyguardViewMediator( 2035): setHidden false
D/dalvikvm(31544): GC_CONCURRENT freed 21K, 14% free 31751K/36871K, paused 14ms+5ms, total 66ms
D/dalvikvm(31544): WAIT_FOR_CONCURRENT_GC blocked 53ms
V/DroidLogger(31544): 2016/02/03 14:22:37:908 Image was loaded - Image size: 19827, Path: /storage/sdcard0/Android/data/com.myapp/files/Pictures/myapp/IMG_20160203_142225.jpg
D/dalvikvm( 2035): WAIT_FOR_CONCURRENT_GC blocked 0ms
D/dalvikvm( 2035): GC_EXPLICIT freed 479K, 51% free 23418K/46983K, paused 6ms+14ms, total 181ms

@coonmoo I don't see anything useful information in logs. My guess: Do you have TransparencyEnabled set to true?

I'm using the FFImageLoading defaults.
CachedImage is configured like this:
DownsampleToViewSize=true;
DownsampleUseDipUnits=true;
CacheDuration = TimeSpan.FromDays(10);
DownsampleWidth = 200;
Aspect=Aspect.AspectFill;

Try with TransparencyEnabled set to true. Could send me source file so I could analyze its exif data? (/storage/sdcard0/Android/data/com.myapp/files/Pictures/myapp/IMG_20160203_142225.jpg)

I sent you the image.
Btw it happens on the specific device to every image captured from the camera.
TransparencyEnabled=true makes not difference.

The issue with black Images is definitely caused by the exif rotation change.
I reverted to FFImageLoading 2.0.7 alpha and have no issues when capturing images.
Then I tried again your dlls and the captured image was black again.
Can I assist you any further with this issue?

I spent a few hours debugging this issue on my low end devices.
I finally have a solution which works very well across all devices:
http://pastebin.com/5FVrJ68Y
I modified: ExifExtensions.ToRotatedBitmap with the provided function.

@coonmoo Thanks, sorry for answering so late, I had a very busy week. I'll test your changes and merge it into master. Great! Nice work :)


Provide direct download link

Per feedback from a user, BitDefender on Windows blocks our powershell install script. We should provide instructions and a direct download link for manual installation.

I'm that user :)
FWIW: I think in general windows antivirus SW will frown upon running PowerShell scripts downloaded from the internet.

On the install page, you can select the "manual install" value from the drop down box which will provide you with direct download links for all our platforms.
In addition, https://pulumi.io/reference/changelog.html provides download links for every released version.
I suspect we could have made this more discoverable.  @pjoe Just wondering, did you even know about the install page above?  If not, would you have thought to use the "manual install" to find these direct links?
Any feedback on how we could make this more discoverable?

The "Manual Install" value definitely isn't obvious to me. I think it should be "extracted" to each of OS-specific sections.

doh 🤦♂
I never noticed there was a separate manual install section, was totally focused on the Windows specific part. Guess as a developer I jumped right into debugging the script.

This was addressed in https://github.com/pulumi/docs/commit/58ce6e507aa091684eadeb5cdd00b17a493d7155


CSI XTSMGRAPHICS Pi=2, Pa=1 should return dimensions that fit in text area

Fixes #7

Thanks @kumattau, I was wondering, if you would take the development of this project.
I don't know rustt and you can do it easily. Also I don't use alacritty anymore.

I only issued the pull request because I found the "help wanted" tag.
My work is just for my current interest, so I'm not suitable at take over the development.
I have only a few weeks experience with rust.
Anyway, should I not emit any more pull requests or issues?

You can send pull requests if you want and I will be happy to merge them.
But this is the maximum that I will do.


Fix Contribute box not being flush with the footer on Index

This one is a weird one. It might not work out but it's worth a shot.

Was surprisingly easy. Had to remove padding + margin from footer though, so make sure in future to add your own in your pages.


Pandas FutureWarning: Setting an item of incompatible dtype is deprecated

Resolves #532.
It is, however, by removing a piece of code that replaced nan by '' so I don't know if we want to find another solution.

It is, however, by removing a piece of code that replaced nan by '' so I don't know if we want to find another solution.

Thanks @jonbrenas, yes I think we will need to find another solution. Otherwise I think the tooltips in the genes plot will contain lots of "nan" labels which is a bit ugly.

Hi @jonbrenas . I wonder if we can use the Float64 type, which is supports nulls, instead of float64, and still convert the nulls to empty strings for presentation?

https://pandas.pydata.org/docs/reference/api/pandas.Float64Dtype.html#pandas.Float64Dtype

Hi @jonbrenas . I wonder if we can use the Float64 type, which is supports nulls, instead of float64, and still convert the nulls to empty strings for presentation?

https://pandas.pydata.org/docs/reference/api/pandas.Float64Dtype.html#pandas.Float64Dtype

I think the warning is due to attempting to replace nulls with the empty string (""). So probably using Float64 instead of float64 won't help I'm guessing. Perhaps the column should be cast to a string dtype, then fill nulls with empty string?

Looking a little bit more closely at the warming, I realised that the problem comes from phase and score, two columns that are actually not used by plot_genes (and luckily are the named the same in both ag3 and af1). I just drop them in the function and that makes the warning disappear (at least in my tests).

Looking a little bit more closely at the warming, I realised that the problem comes from phase and score, two columns that are actually not used by plot_genes (and luckily are the named the same in both ag3 and af1). I just drop them in the function and that makes the warning disappear (at least in my tests).

Ah cool, that sounds good.

Re: #554


feat(protocol-designer): refactor and performance audit of labware components

overview
This PR should add some marked performance improvements across the app. In terms of different functionality, there should be no visible user changes, aside from the lag of sluggishness in WellSelectionModal and while hovering steps/substeps in the sidebar.
changelog
In the 4 main places we are using, or will use, the SelectablePlate component, there are shared
aspects of the abstraction that weigh down the application in places where the extra information is
not needed or used. This branch begins to separate our implementations by first creating a
SelectableLabware component which is used in the WellSelectionModal and maintains local state. The
LabwareOnDeck is also not rendering with select and hover handlers. The IngredientSelectionModal,
will use SelectableLabware or a similar component once the ingredient form sustains upcoming
changes.
Closes #2285
review requests
Please inspect the labware components in there current positions and make sure that all intended behavior is maintained:

Ingredient Selection Modal
Well Selection Modal
Labware on the Deck Map

@IanLondon Good catch!  I just made #2463 and put it into the current sprint.


Fix Layout animations on react-web

On react-web, onLayout runs before componentDidMount().
Whether or not that behavior is correct, or whether react-web specifically should be supported - this seems like a generic enough change to me.

Did you intentionally send this PR to your own repo?


Tab view always has the height equal to height of the highest tab

How can I make it adopt active tab's height?

I don't understand. Please provide more information. Pictures are very useful

@skv-headless Let's say the first tab has a height of 200px and the second one has a height of 1000px. As a result every tab will have the height of 1000px.

@skv-headless yes, @vscholz is right. sorry for the delay(

Has anybody found any fixes for this?

Anyone?

Ok here's how I did it. It's a hot fix, but I'll revisit this topic on a later stage and make a PR as I'm in a hurry right now. So let's dive into it:
I made use of the onChangeTab callback, that is already provided out of the box.
The callback function takes an object which has the current slide's ref, which is equal to the tabLabel prop and will fire whenever a tab is changed. Yaay!
1st
Set your Tab Components ref names respectively to your tabLabels like so:

<View ref='someTabName' tabLabel="someTabName" />

2nd
We want to apply the calculated height to our SrollableTabView. As the style prop is already  passed to the relevant component, we can simply keep a style object in our parent component's state and pass it to our TabView:
//constructor
constructor(props){
    super(props)
    this.state ={
      tabViewStyle:{
       // Some style you don't care for just to init something
        backgroundColor:'transparent'
      },
     // I'll explain that in a bit
      firstTabSwitch: true
    }
  }
// Component:

<ScrollableTabView
           onChangeTab={(obj) => this._handleTabHeight(obj)}
           style={this.state.tabViewStyle}
           prerenderingSiblingsNumber={0}
          {{...other}}  />

A few things to note here:
On init, we don't pass any height to our style in order to let the TabView expand to the it's initial view's height rather than manually setting the height on mount. On the other hand, this means we have to stop our other - maybe larger views - from rendering. We achieve this by setting prerenderingSiblingsNumber={0}. Result: Our ScrollableTabView renders with the height of the initial view. As we haven't set any height yet, it won't depend whether your second tab is shorter or taller - it will adapt to the height of the current view.
HOWEVER: We have set the prop prerenderingSiblingsNumber={0} meaning, that on first tab change, the new view will have a height of 0, causing the TabView to collapse. That's what the firstTabSwitchis for. We'll use this to prevent our callback function to set the height to 0 on first render.
Lastly
Ok let's write our callback function. As we already defined our refs, we can now access the height like so:

_handleTabHeight(obj){
    this.refs[obj.ref.props.tabLabel].measure(this._setTabHeight.bind(this))
  }

  _setTabHeight(ox, oy, width, height, px, py) {
    if(!this.state.firstTabSwitch){
      this.setState({tabViewStyle: {height: height}})
    } else{
      this.setState({firstTabSwitch:false})
    }
  }

Oddly, you can't simply call measure on obj.ref but then who cares - 10 minute fix 💯
Hope that helps :)

@denizs your fix works well (thanks) except that if I keep switching between the tabs the height get's smaller and smaller up the point where everything is gone. :(

Up this issue.
I tried the proposed solution but it seems the onLayout measurements in those sub views still return the height of the highest tab.

My solution is using ScrollViews.
<ScrollableTabView style={{ height: Dimensions.get('window').height }}>
  <ScrollView>
    <View style={{ height: 300, backgroundColor: 'cadetblue' }} />
  </ScrollView>

  <SrcollView>
    <View style={{ height: 5000, backgroundColor: 'lightgreen' }} />
  </ScrollView>
</ScrollableTabView>

Hello @sospedra,
Thanks for your answer. I tried with ScrollView instead of View but it didn't changed much since the content of those tabs is dynamic. Therefore I can't set a fixed height as in your example. And like I said above, even when adding onLayout measurement of those inner views, the ScrollableTableView will keep the highest height of its siblings.

Hey @Kowaio ,
The fixed height is fot the container, aka the ScrollableTabView. Not the tabs, aka the ScrollView. I don't know how's your code but it'll be -- probably -- more than just replace View by the scrollable version.
Mayebe if you post a rnplay.org example I could help you better ;)

Thanks again @sospedra.
Yeah sorry, I was talking about your height in your Views content.
About setting a fixed height for the ScrollableTabView, it's unfortunately impossible since this ScrollableTabView is itself inside a ScrollView.
Here's a draft of my current code: http://www.heypasteit.com/clip/3ASU

Ok so I dug into this issue a little bit:
My approach was to use the onLayout and onChangeTab event of every scene component to calculate the height of the displayed scene and change the contentContainerStyle respectively on every swipe. However, it seems that the StaticContainer Component used in SceneComponent.js is causing the container to take the full height of the parent container resulting in a missing onLayout event, as long as one tab does not exceed the current tab view's height (hence the height of the tallest component). @skv-headless is there any good reason to stick to StaticContainer? Otherwise I would start working on a fix for that. I found that replacing the StaticContainer with a View component works fine regarding the onLayoutevent.
Best,
D

Solved by use @denizs method.
But use setTimeout(fn, 1) to ensure get correct height.

Awesome @Lxxyx!

There will be any fix on the package or the only fix is with the @denizs 's hotfix ?

If you have problems with StaticContainer you can try prerenderingSiblingsNumber={Infinity}.

Anyone? Is there an official method of doing this? Can this be implemented as a feature?

main.js
  _handleTabHeight(obj){
    console.log(this.refs[obj.ref.props.tabLabel].state.name)
    this.refs[obj.ref.props.tabLabel].gogogo((x,y,w,h,l,t) => {
      if(h!==0){
        this.setState({tabViewStyle: {height: h}})
      }
    })
  }

        <ScrollableTabView
           onChangeTab={(obj) => this._handleTabHeight(obj)}
           style={this.state.tabViewStyle}
        >
            <ReactPage ref='high1' tabLabel="high1" />
            <ReactPage2 ref='high2' tabLabel="high2" />
            <ReactPage3 ref='high3' tabLabel="high3" />
        </ScrollableTabView>

ReactPage.js/ReactPage2.js/ReactPage3.js
  gogogo(cb) {
      this.refs.test.measure(cb)
  }
  render() {
    return (
      <View
        ref='test'
        style={{
          height: 300,
          backgroundColor: 'blue'
        }}
      >
      </View>
    );
  }
}

worked~!

Why didn't this issue come up with a new solution

+5

Still waiting

@laclys Thanks, your method really works. In addition,  when you apply tabViewStyle's height to ScrollableTabView' style, you should plus tabBar's height. And in my practice, you can apply it to contentProps directly. like the following code:
<ScrollableTabView
  contentProps={{style:{...tabViewStyle}}}
>
</ScrollableTabView>

+1

+1

set tabView height not works fine when subview contain flatlist, even though I creat a timeout for 2 sec，still can not get the flatlist's layout H. weird，and I don't know how to solve this problem, and now my situation is one of the subview height far beyond the short one. ugly page.

I found a solution that is not a good solution, but the effect can be achieved.
Referring to this method @denizs @laclys  ，  improvements were made by
me,The code is as follows:
this.state={ LTabSwitch:true,          RTabSwitch:true,          Lheight:null,         Rheight:null,」
_handleTabHeight(obj){          this.refs.totop.scrollTo({x:0,y: 0,animated:true});         this.refs[obj.ref.props.tabLabel].measure(this._setTabHeight.bind(this));         this.LrState= obj.ref.props.tabLabel;     }
 _setTabHeight(ox, oy, width, height, px, py) {         if(height!=0){             if(this.state.firstTabSwitch) {                 if(this.LrState == 'Left' && this.state.LTabSwitch){                     this.setState((prevState, props) => ({Lheight: height,                         LTabSwitch:false}));                 }else if(this.LrState == 'Right' && this.state.RTabSwitch){                     this.setState((prevState, props) => ({ Rheight: height,                         RTabSwitch:false}));                 }                 if(this.LrState == 'Left')                     this.setState((prevState, props) => ({tabViewStyle:{height: this.state.Lheight}}));                 else                     this.setState((prevState, props) => ({tabViewStyle:{height: this.state.Rheight}}));             }         }     }

I found a solution that is not a good solution, but the effect can be achieved.
Referring to this method @denizs @laclys ， improvements were made by
me,The code is as follows:
this.state={ LTabSwitch:true,
 RTabSwitch:true,
Lheight:null,
Rheight:null,}
_handleTabHeight(obj){
this.refs.totop.scrollTo({x:0,y: 0,animated:true}); this.refs[obj.ref.props.tabLabel].measure(this._setTabHeight.bind(this));
this.LrState= obj.ref.props.tabLabel;
 }
_setTabHeight(ox, oy, width, height, px, py) {
 if(height!=0){
if(this.state.firstTabSwitch) {
 if(this.LrState == 'Left' && this.state.LTabSwitch){
 this.setState((prevState, props) => ({Lheight: height, LTabSwitch:false})); }
else if(this.LrState == 'Right' && this.state.RTabSwitch){
this.setState((prevState, props) => ({ Rheight: height, RTabSwitch:false})); }
 if(this.LrState == 'Left')
this.setState((prevState, props) => ({tabViewStyle:{height: this.state.Lheight}}));
else
this.setState((prevState, props) => ({tabViewStyle:{height: this.state.Rheight}}));
}
}
}

@zcmgyu there is no repo provided with the issue

I'm just adding a comment to this... I'm not 100% sure if I'm correct but I believe this might solve your problem?
<ScrollableTabView style={{ flex: 1 }}>
  <FlatList tabLabel="First" contentContainerStyle={{ flexGrow: 1 }} /> // Could be inside a named component...
  <FlatList tabLabel="Second" contentContainerStyle={{ flexGrow: 1 }} /> // Could be inside a named component...
</ScrollableTabView>

Today marks 3 years of this issue in React Native.
You'd think it would be solvable without needing to add event listeners and calculate heights based on screen sizes.
Is there any solutions available to us today that wasn't possible in 2016?

+1

2 years and +1

Feel free to send a fix @basilaiman

This was a solution that worked for me, it was important to have prerenderingSiblingsNumber if you display large amounts of content. Creating a state for each tabLabel allows you to define the height when needed.
  handleChangeTab(x) {
    this[x.ref.props.tabLabel].measure((ox, oy, width, height, px, py, label) => {
      if (this.state.tabHeight > height) {
        this.setState({ tabHeight: height })
      } else if (this.state.tabHeight < height) {
        if (this.state[x.ref.props.tabLabel]) {
          this.setState({ tabHeight: height });
        } else {
          this.setState({ tabHeight: undefined })
        }
      } else if (height !== 0) {
        this.setState({ tabHeight: height })
      }
      if (this.state[x.ref.props.tabLabel] === undefined) {
        this.setState({ [x.ref.props.tabLabel]: true });
      }
    })
  }

  render() {
    const { tabContent = data } = this.props;
    return (
        <ScrollableTabView
          onChangeTab={(x) => setTimeout(() => this.handleChangeTab(x), 100)}
          contentProps={{ style: { height: this.state.tabHeight }}}
          style={[this.props.tabViewStyle, {}]}
          initialPage={1}
          prerenderingSiblingsNumber={Infinity}
          renderTabBar={() => <ScrollableTabBar />}
        >
          {this.tabViewContent(tabContent)}
        </ScrollableTabView>
    );
  }

Try something like this,
Fix the height of the parent widget to the maximum screen height you want that Tab Navigator to have.
<ListView or ScrollView>
 <View style={{height:  (width)/(0.8)}} >
    <Tab.Navigator tabBar={(props) => <TabBar {...props} />}>
      <Tab.Screen name="T1" component={T1} />
      <Tab.Screen name="T2" component={T2} />
      <Tab.Screen name="T3" component={T3} />
    </Tab.Navigator>
   </View>
</ ListView or ScrollView>

And for tabs do Something like this
T1 ->
<View style={styles.container}>
  <ScrollView nestedScrollEnabled={true}>
    <FlatList
      numColumns={3}
      data={allMedia}
      keyExtractor={(item) => item.id}
      listKey={(post) => `${post.id}D`}
      renderItem={({ item }) => (Anything)}
      scrollEnabled ={false}
    />
  </ScrollView>
</View>

Remember to disable the scroll view Inside the FlatList of tabs and wrap with a ScrollView with nestedScrollEnabled={true}


sudo ghost doesn't open ghost

root@kali:~# sudo ghost
Traceback (most recent call last):
File "./ghost", line 27, in
import readline
ModuleNotFoundError: No module named 'readline'

root@kali:~# sudo ghost
Traceback (most recent call last):
File "./ghost", line 27, in
import readline
ModuleNotFoundError: No module named 'readline'

fix with
pip install readline

sudo ghost
Traceback (most recent call last):
File "./ghost", line 27, in
import readline
ModuleNotFoundError: No module named 'readline'
root@blackhat:~# pip install readline
bash: pip: command not found

🤦♂ RTFM

root@kali:~# sudo ghost
Traceback (most recent call last):
File "./ghost", line 27, in
import readline
ModuleNotFoundError: No module named 'readline'
root@kali:~/ghost# pip install readline
Requirement already satisfied: readline in /usr/local/lib/python3.9/dist-packages (<IP_ADDRESS>)
After that its showing same error......
pls reply pls pls fix this

i dunno why the line is there so pls ignore that line and give me the solution.


fix: always set commit status when pr is in merge queue

:pencil: Description
:link: Related Issues

:tada: This PR is included in version 1.7.4 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


TECH-137-FIX: Create test configuration for "/.well-known/openid-configuration" endpoint

Added changes to "/.well-known/openid-configuration" endpoint based on the gherkin file template: https://govstack-global.atlassian.net/wiki/spaces/GH/pages/157712385/Gherkin+file+template
Description:
Create test configuration for /.well-known/openid-configuration endpoint from https://github.com/GovStackWorkingGroup/bb-identity/pull/6. This should include all the steps that are pointed out in the parent ticket.
Ticket: https://govstack-global.atlassian.net/browse/TECH-137

Updated ticket based on this api https://govstack.gitbook.io/bb-identity/8-apis-and-services#.well-known-openid-configuration


Feature

Custom alias feature please

try this:
https://github.com/crazypeace/url-Shorten-Worker/
Demo: https://1way.eu.org/bodongshouqulveweifengci


Add option to filter gem-dependencies from output of 'bundle outdated'

Resolves #5366 by adding a new option '--filter-dependencies' to bundle outdated. When present, outdated will only check the gemfile_specs and skip the dependency_specs.

Thanks for this!
@bundlerbot r+


Expose linting

My team is working on introducing linting of our protobufs. I noticed that protoc-gen-lint is being installed in the container:
https://github.com/namely/docker-protoc/blob/32cda135bca79697425b25f67f4aa69ceadfc85a/all/Dockerfile#L39
But it's not being exposed via the entrypoint. This PR adds a flag to enable linting. I've tested this on my project and it's working as I'd expect.
This is available under my dockerhub if you want to test it out:
blimmer/protoc-all:1.11-lint

@mdkess this is ready to go :-)

Awesome, thanks! I'll build and push now.

Should be pushed as namely/protoc-all:1.11 - thanks again for the contribution 💯


why LLaVA need load CLIP model first, and how to load openai/clip-vit-large-patch14-336

When did you clone our code?
I cloned the code base after 5/1/23
Describe the issue
when I running

llava.serve.model_worker with liuhaotian/llava-v1-0719-336px-lora-merge-vicuna-13b-v1.3 model
I meet a problem that I need download CLIP model from internet, but I offline (have to)
Do you have any method I can load this CLIP model offline, better to load it into cache(/public/home/usr/.cache/huggingface/hub/), which convenient for program reload it.

detailed model is openai/clip-vit-large-patch14-336
the error feed back is
`
2023-08-04 21:17:15 | INFO | model_worker | args: Namespace(host='<IP_ADDRESS>', port=40000, worker_address='http://localhost:40000', controller_address='http://localhost:10000', model_path='./checkpoints/LLaVA-vicuna-13B-v1.3', model_base=None, model_name=None, multi_modal=False, limit_model_concurrency=5, stream_interval=1, no_register=False, load_8bit=False, load_4bit=False)
2023-08-04 21:17:15 | INFO | model_worker | Loading the model LLaVA-vicuna-13B-v1.3 on worker e61d07 ...
You are using the legacy behaviour of the <class 'transformers.models.llama.tokenization_llama.LlamaTokenizer'>. This means that tokens that come after special tokens will not be properly handled. We recommend you to read the related pull request available at https://github.com/huggingface/transformers/pull/24565
2023-08-04 21:17:15 | ERROR | stderr | Traceback (most recent call last):
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/utils/hub.py", line 417, in cached_file
2023-08-04 21:17:15 | ERROR | stderr |     resolved_file = hf_hub_download(
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 118, in _inner_fn
2023-08-04 21:17:15 | ERROR | stderr |     return fn(*args, **kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1291, in hf_hub_download
2023-08-04 21:17:15 | ERROR | stderr |     raise LocalEntryNotFoundError(
2023-08-04 21:17:15 | ERROR | stderr | huggingface_hub.utils._errors.LocalEntryNotFoundError: Connection error, and we cannot find the requested files in the disk cache. Please try again or make sure your Internet connection is on.
2023-08-04 21:17:15 | ERROR | stderr |
2023-08-04 21:17:15 | ERROR | stderr | During handling of the above exception, another exception occurred:
2023-08-04 21:17:15 | ERROR | stderr |
2023-08-04 21:17:15 | ERROR | stderr | Traceback (most recent call last):
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/runpy.py", line 196, in _run_module_as_main
2023-08-04 21:17:15 | ERROR | stderr |     return _run_code(code, main_globals, None,
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/runpy.py", line 86, in _run_code
2023-08-04 21:17:15 | ERROR | stderr |     exec(code, run_globals)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/serve/model_worker.py", line 273, in
2023-08-04 21:17:15 | ERROR | stderr |     worker = ModelWorker(args.controller_address,
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/serve/model_worker.py", line 64, in init
2023-08-04 21:17:15 | ERROR | stderr |     self.tokenizer, self.model, self.image_processor, self.context_len = load_pretrained_model(
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/builder.py", line 100, in load_pretrained_model
2023-08-04 21:17:15 | ERROR | stderr |     model = LlavaLlamaForCausalLM.from_pretrained(model_path, low_cpu_mem_usage=True, **kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2700, in from_pretrained
2023-08-04 21:17:15 | ERROR | stderr |     model = cls(config, *model_args, **model_kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/language_model/llava_llama.py", line 46, in init
2023-08-04 21:17:15 | ERROR | stderr |     self.model = LlavaLlamaModel(config)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/language_model/llava_llama.py", line 38, in init
2023-08-04 21:17:15 | ERROR | stderr |     super(LlavaLlamaModel, self).init(config)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/llava_arch.py", line 32, in init
2023-08-04 21:17:15 | ERROR | stderr |     self.vision_tower = build_vision_tower(config, delay_load=True)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/multimodal_encoder/builder.py", line 7, in build_vision_tower
2023-08-04 21:17:15 | ERROR | stderr |     return CLIPVisionTower(vision_tower, args=vision_tower_cfg, **kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/Pycharm_Project/LLaVA/llava/model/multimodal_encoder/clip_encoder.py", line 20, in init
2023-08-04 21:17:15 | ERROR | stderr |     self.cfg_only = CLIPVisionConfig.from_pretrained(self.vision_tower_name)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/models/clip/configuration_clip.py", line 239, in from_pretrained
2023-08-04 21:17:15 | ERROR | stderr |     config_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/configuration_utils.py", line 617, in get_config_dict
2023-08-04 21:17:15 | ERROR | stderr |     config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/configuration_utils.py", line 672, in _get_config_dict
2023-08-04 21:17:15 | ERROR | stderr |     resolved_config_file = cached_file(
2023-08-04 21:17:15 | ERROR | stderr |   File "/public/home/v-yumy/anaconda3/envs/llava/lib/python3.10/site-packages/transformers/utils/hub.py", line 452, in cached_file
2023-08-04 21:17:15 | ERROR | stderr |     raise EnvironmentError(
2023-08-04 21:17:15 | ERROR | stderr | OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like openai/clip-vit-large-patch14-336 is not the path to a directory containing a file named config.json.
2023-08-04 21:17:15 | ERROR | stderr | Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'.
`

Discussion here is highly overlapped with #348, let's condensing the discussion there.


Bug 2089789: windows drivers checkbox for all templates

📝 Description

windows drivers checkbox will be showed in the customize form in any template

/lgtm


placeholderData called twice

Open in CodeSandbox
add this code to the example, you will see it's called twice
 { placeholderData: () => { console.log(Date.now()); } }

The doc says "This function will be executed only once"

Confirmed. We'll look into this.

Confirmed. We'll look into this.

What if the placeholder function contains external dependencies? Do we want the placeholder data to reflect them?

Fixed in the documentation


The marker doesn't move when adding a line of code

Suppose I create a stack for foo.cc, then I add a function to foo.cc, the stack is no longer valid.

That's strange. Is the stack activated? Could you post an image for that?

You mean the marker's position is changed after added the function above it? That's right, it's current logic.


Add missing fields in keyed_element

In struct instantiations, such as:
MyStruct {
    foo: 2,
    bar: 3,
}

the keyed elements are currently parsed as seq($.literal_element, ':', $.literal_element), meaning that as a consumer it is difficult to to distinguish the key from the value (given that they have the same type).
This PR proposes to add field names to this part of the grammar, so that they can be told apart.

LGTM

Thanks for the lightning-fast review! I have fixed the linting error.


c2patool does not validate certificate chains

"c2patool -d" checks if the certificate validates the signature, but not if the certificate chain is trusted.
There is no option to validate the certificate chain or to specify one or more PEM files containing known or trusted certificates.

If you add trust support it should work.  Try this:
c2patool --detailed ~/Downloads/myimage.jpg trust --trust_anchors mytrustlist.pem


fix: TLS works with iot01a board

Update to new version of drogue-tls
Ensure reading sufficent bytes from before interpreting NAKs
Bugfixes to HTTP client

Will update the drogue-tls version once released


User defined search order list

Hi, I noticed two problems that could be solved relatively simply with one feature:

For some reason one of albums I'd like to listen to returns no results on Apple Music, and conversely another one returns no results on Spotify. That indicates to me there should be a way to search not only one, but both. However, I think it might be useful to also have the option to search on other sites, for example Google, in case neither of the two can find anything (if that's possible, I think it should be, but to be honest it doesn't matter that much at this stage).
Secondly, it seems the query for Apple Music only searches for music, but I think it might be desirable to search first for music and then in general if no results are found. However that might not be desirable for all users, so I propose the order and the exact wording of the queries be user selectable in config.js, something along these lines:

rpc: {
    // Change where to fetch the album artwork
    whereToFetchOnline:
    [
        {handler: "apple", query: "https://itunes.apple.com/search?media=music&term=%TITLE%+%ARTIST%"},
        {handler: "spotify", query: /*the equivalent of the query above for spotify*/},
        {handler: "apple", query: "https://itunes.apple.com/search?term=%TITLE%+%ARTIST%"},
        {handler: "google", query: "https://images.google.com/q=%TITLE%+%ARTIST%"},
    ]
},

Hey this one, still figuring the api out for the massive album art site.

Hey this one, still figuring the api out for the massive album art site.

This issue doesn't seem relevant anymore, so I'll close it. Feel free to look into that API, though, that would still be cool 😄


infra: Dump logs from porch-server after tests

This gives us more insight into failures.
Signed-off-by: justinsb<EMAIL_ADDRESS>

/hold
Actually, it looks like we already capture this log as an artifact!

/close
(as porch moved to nephio)


add MaxResults parameter to SQS ListQueuesInput

Q
A

🐛 Bug fix?
yes

🚀 New feature?
no

⚠ Deprecations?
no

❌ BC Break
no

🔗 Related issues
#...

❓ Documentation
no

Description
If more than 1000 sqs are there in an account, the ListQueuesPages returns only 1000 results if we don't specify the MaxResults parameter. This PR will list only 100 queues per pages and go till the lastPage.
Reference: https://docs.aws.amazon.com/sdk-for-go/api/service/sqs/#ListQueuesInput

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Can we get an update on this? We're still facing this issue. Driftctl reports all of the SQS queues as missing resources.

Any update on this?


Incorrect font size when used with new vector skin

Go to https://en.wikipedia.org/w/index.php?title=Special:Preferences#mw-prefsection-rendering
Select "Vector" skin
Uncheck "Use Legacy Vector"
Save
Go to any wiki page.
Open the "Page" drop-down menu
The "Move" item is in a smaller font size than all the others.  Originally filed as https://phabricator.wikimedia.org/T291780, which was closed as being a MoreMenu bug, apparently due to not using mw.util.addPortletLink.

(I forgot to add that old Vector will now be added the span as well so there is a risk this problem might surface on old Vector with this weeks train)

Fixed. I'm still not using addPortletLink, but will look into that in the future.


error：brew services start v2raya

brew services start v2raya
Error: undefined method plist_startup' for #<Formula v2raya (stable) /usr/local/Homebrew/Library/Taps/v2raya/homebrew-v2raya/Formula/v2raya.rb> Did you mean? plist_name /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/service.rb:43:inplist_startup?’
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/services_cli.rb:229:in launchctl_load' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/services_cli.rb:359:inblock in start’
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/services_cli.rb:290:in each' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/services_cli.rb:290:instart’
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/lib/services_cli.rb:94:in run!' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/cmd/services.rb:48:inservices’
/usr/local/Homebrew/Library/Homebrew/brew.rb:94:in public_send' /usr/local/Homebrew/Library/Homebrew/brew.rb:94:in
‘
If reporting this issue please do so at (not Homebrew/brew or Homebrew/homebrew-core):
https://github.com/homebrew/homebrew-services/issues/new

This is an issue in https://github.com/v2raya/homebrew-v2raya


Remove version: RoyQu.RedPanda-C++ version 2.19

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: Duplicate;


[test-triage] chip_sw_pattgen_ios Timeout

Hierarchy of regression failure
Chip Level
Failure Description
0.chip_sw_pattgen_ios.137904608
Line 1098, in log /container/opentitan-public/scratch/os_regression/chip_earlgrey_asic-sim-vcs/0.chip_sw_pattgen_ios/latest/run.log

  UVM_ERROR @ 8243.607436 us: (chip_sw_base_vseq.sv:254) uvm_test_top.env.virtual_sequencer [uvm_test_top.env.virtual_sequencer.chip_sw_patt_ios_vseq] SW TEST TIMED OUT. STATE: SwTestStatusInTest, TIMEOUT = 5000000 ns

  UVM_INFO @ 8243.607436 us: (uvm_report_catcher.svh:705) [UVM/REPORT/CATCHER]
  --- UVM Report catcher Summary ---

Steps to Reproduce

GitHub Revision: bc163b70f
dvsim invocation command to reproduce the failure, inclusive of build and run seeds:
./util/dvsim/dvsim.py hw/top_earlgrey/dv/chip_sim_cfg.hjson -i chip_sw_pattgen_ios --build-seed 488598207 --fixed-seed 137904608 --waves fsdb
Kokoro build number if applicable

Tests with similar or related failures

[ ] chip_sw_pattgen_ios

Note previous timeout issue
https://github.com//lowRISC/opentitan/issues/16477

failure reproduced. run.log: https://gist.github.com/luismarques/dafd36eb34b10226d2224749b8604f0a

Thanks @luismarques
@GregAC
It looks like in the error reports that Ibex alerts may be implicated
"../src/lowrisc_tlul_common_0.1/rtl/tlul_assert.sv", 296: tb.dut.top_earlgrey.u_xbar_main.tlul_assert_host_rv_core_ibex__corei.gen_assert_final[0].noOutstandingReqsAtEndOfSim_A: started at<PHONE_NUMBER>ps failed at<PHONE_NUMBER>ps
	Offending '((pend_req[0].pend == 1'b0) || $test$plusargs("disable_assert_final_checks"))'
UVM_ERROR @ 8243.607436 us: (tlul_assert.sv:296) [ASSERT FAILED] noOutstandingReqsAtEndOfSim_A
UVM_INFO @ 8243.607436 us: (uvm_report_catcher.svh:705) [UVM/REPORT/CATCHER]
--- UVM Report catcher Summary ---

Not seen this test error for some time.
Closing and tagging @luismarques / @engdoreis in case they want to re-run and see if this is still an issue, but will assume it is not and close this out.


Dev ak

Hi,
I have fixed a bug in test method that was accidentally introduced in dfc2882 in line 161, were $result is evaluated.
Also this closes #11, i have refactored parameter generation into helper method and use it in Test-TargetResource, so now Invoke-RobocopyTest is executed with the same parameters.
Also closes #12, i have updated example to use common parameter for credentials

This change is

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

This is re-implementation using parameter arrays.
Now closes #6, #10, #11, #12 and #17

Thank you for the update.
The code changes look good, but changing the type of AdditionalArgs would be a breaking change (wouldn't it?). Maybe keep it as string and -split it?
PS> $x = '/A /B     /C' -split '\s+'
PS> $x
/A
/B
/C
PS> $x.gettype().fullname
System.String[]
PS>

Yes it would be breaking change.
But I think it is worth it.
Splitting by space wouldn't be reliable, there are multiple options that take file name as value, if file name or any path part would have a space in it, splitter would work incorrectly.
For example if you would want to exclude several files, you would use /xf "first file" "second file"
If we would implement with string splitter this configuration would not be possible, but with parameter arrays would be.
$x = '/A /B /C /XF "First file" "Second file"' -split '\s+'
$x
/A
/B
/C
/XF
"First
file"
"Second
file"

Affected options would be /XF /XD /unilog: /unilog+: /job: /save:
If we break compatibility I would suggest increasing major version in this instance which would comply with semver when you make incompatible api change.
Other option I can think of would be to add additional parameter AditionalArgsArray as an array. Mark old parameter AditionalArgs as deprecated in documentation and description.
This way we would maintain compatibility and allow full usage of robocopy options via new parameter array.
Let me know what you think: do we break compatibility and increase major version or add array parameter as additional one, while deprecating old one?

Yup, you are absolutely right about spaces in the arguments.
I think we will need to do the breaking change and bump the version as you suggest.
We wouldn't be able to keep the current argument, since we are getting rid of Invoke-Expression and AdditionalArgs as a string wouldn't work if there are multiple arguments.

I would agree with this.
And if anyone who is affected by this change can always get specific version from Gallery, and update their configuration in time.

What we have been doing so far for breaking changes is marking it in bold that it is a breaking change, **Breaking Change** and the release team/person should make the version change

Review status: 0 of 5 files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable

Added Breaking Change to item in unreleased section.

Review status: 0 of 5 files reviewed at latest revision, 1 unresolved discussion.

DSCResources/MSFT_xRobocopy/MSFT_xRobocopy.psm1, line 177 [r1] (raw file):
Done.

Comments from Reviewable


Update Pages “PestControlPage”

Automatically generated by Netlify CMS

👷 Deploy Preview for chic-shortbread-66a66b processing.

Name
Link

🔨 Latest commit
b0c4e61f732dba5315492d379cf14e001e8eabfd

🔍 Latest deploy log
https://app.netlify.com/sites/chic-shortbread-66a66b/deploys/655205f134909600082242ba


English improvement

I tried to make it more coherent and generally easier to understand.

I totally understand your point here. I don't believe the developer is natively English, so the strings that are provided to translate aren't 100% proper English. Though, I don't think this is a good approach, since the rest of the translations would be technically different as they're still going off of what the variables say. If that makes sense.
Would love to approve but just not sure how I feel on it. roothide could maybe give a little insight, this is just my take. Thanks for the contribution regardless!
(updating every translation is hard because we'd have to scrap everything we already had)

Uh, alright. This makes English the only language with actual differences, though, and not aligned with the rest of the languages.


Add Stakeway for Flare

Adding the Stakeway operator to FTSO.
The changes in #351 are failing checksum validity tests, I've manually run the tests on my additions after removing the mentioned commit changes, and it is passing tests.

@RareData could you have a look? Thx!

@RareData ping

@RareData rebased the PR. Could you have a look?

@RareData rebased the PR. Could you have a look?

Could you please center the image, looks good otherwise.


Local-path not working air-gap, missing busybox

Version:
v1.17.5+k3s1 (58ebdb2a)
Describe the bug
Local-path  can't create PV (can't create the provisionner containers) because busybox image (default image) is missing from air-gap images tarball.
Workaround : in /var/lib/rancher/k3s/server/manifests/local-storage.yaml, force an available image
using --helper-image option :

apiVersion: apps/v1
kind: Deployment
metadata:
name: local-path-provisioner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: local-path-provisioner
template:
metadata:
labels:
app: local-path-provisioner
spec:
serviceAccountName: local-path-provisioner-service-account
containers:
- name: local-path-provisioner
image: rancher/local-path-provisioner:v0.0.11
imagePullPolicy: IfNotPresent
command:
- local-path-provisioner
- start
- --config
- /etc/config/config.json
- --helper-image
- <an available image>

However, this file is overridden at each cluster restarts (no idea why, I'm going to create another ticket for this)

We had a similar issue and added busy box to the set of pods that we were tarring up for offline installation. This actually helped up to leverage busybox for a few init container images rather than using larger containers.

We really should be mirroring the busybox image, in addition to preloading it in the airgap image list. I've opened an issue upstream to track: https://github.com/rancher/local-path-provisioner/issues/120

Validated in v1.19.1-rc2+k3s1

rancher/library-busybox:1.31.1 is present in both arm and amd setups, and uses the correct architecture.
RIght now this is actually present in local-storage.yaml as a helper image:

spec:
      serviceAccountName: local-path-provisioner-service-account
      tolerations:
          - key: "CriticalAddonsOnly"
            operator: "Exists"
          - key: "node-role.kubernetes.io/master"
            operator: "Exists"
            effect: "NoSchedule"
      containers:
      - name: local-path-provisioner
        image: rancher/local-path-provisioner:v0.0.14
        imagePullPolicy: IfNotPresent
        command:
        - local-path-provisioner
        - start
        - --config
        - /etc/config/config.json
        volumeMounts:
        - name: config-volume
          mountPath: /etc/config/
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HELPER_IMAGE
          value: rancher/library-busybox:1.31.1
      volumes:
        - name: config-volume
          configMap:
            name: local-path-config
...

Following the main instructions from using local-path-provisioner, validated it could be used successfully:  -- note that there are a few more steps involved, either image mirroring or supplying a compressed image tar to k3s, to get the nginx:stable-alpine that is used by the pod.yaml there

Correct @rancher-max - the example uses nginx which isn't in the airgap. If you want to test with only airgap images, you can use the test manifest that CI is using: https://github.com/rancher/k3s/blob/master/scripts/airgap/volume-test.yaml


use-true-false: Add framework for supporting known boolean expressions.

Partial Fix: #79
I didn't hunt down a complete list of boolean expressions, but I have provided a framework that makes it easy to edit the list.
It uses call-signature (which is part of what power-assert uses to do some of it's magic).

Awesome.  Would there be any value to that?

should I put it in a module? Would there be any value to that?

Maybe - who knows. Probably more so if it had the full method signature:
Array.isArray(obj)
Object.is(value1, value2)
obj.fn(arg1, arg2, [optional_arg])

Also, call-signature is not smart enough to parse String.prototype.includes. It only allows member expressions one deep. It was a simplification of escallmatch that uses regexp to parse the signature to avoid depending on a full JS parser (escallmatch relies on esprima). We could just use espree to parse the matcher templates, that would give more robust parsing without adding another dependency.
Still, I am not sure how to handle stuff on the prototype. Were you hoping to try to implement static analysis and figure out if x.some() was being called on an Array?

We could just use espree to parse the matcher templates, that would give more robust parsing without adding another dependency.

:+1: on @jamestalmage

updated to use espree. I didn't realize we already had espurify and deep-strict-equal as dependencies. Those make the matcher really easy.
I haven't added the full list of methods yet. Still waiting on an answer to this:

Were you hoping to try to implement static analysis and figure out if x.some() was being called on an Array?

Question was directed at @sindresorhus - but feel free to chime in.

This looks good! Nice work @jamestalmage!

I went with just the non prototype methods, as doing the rest well would require an enormous amount of static type analysis/inferencing.
It would be cool if someone built a linter with a type analysis engine, but I think that's a bit too ambitious to achieve this one feature.

I went with just the non prototype methods, as doing the rest well would require an enormous amount of static type analysis/inferencing.

:+1:

It would be cool if someone built a linter with a type analysis engine, but I think that's a bit too ambitious to achieve this one feature.

That is my dream. So many of my rule suggestions on ESLint has been turned down for requiring type analysis... Linting could be so much better with best effort type inference. Flow compiled down to asm.js anyone??

Can you add an example of Array.isArray() to its docs?

Looks good to me. @twada @jfmengels Can you give it a final review?

LGTM :)

Flow compiled down to asm.js anyone

Even without Flow, Webstorm does an impressive job of type inference from pure JS code. I am sure that was no small undertaking on IntelliJ's part, but I think there are a number of portential uses for an open source alternative. (Atom would surely benefit)

@jamestalmage Flow does that too. Its type notation is optional and only there to improve the inference.
There's also https://github.com/ternjs/tern

LGTM :+1:

Awesome! This makes the rule really solid.

Flow does that too. Its type notation is optional and only there to improve the inference

I guess I knew that. I haven't played with Flow much. Does it automatically analyze exports of imported files? It looks line tern does, though it appears to require launching a server.


Update benchmark schedule job time

Description
Update the benchmark scheduled job to run daily (At 00:00). I feel we should run daily for a week then we can start running it on a weekly basis
What is the current behavior?

What is the new behavior?

Does this introduce a breaking change?
Checklist

[ ] Created tests which fail without the change (if possible)
[ ] Extended the README / documentation, if necessary

Merging it since currently, it is running too frequently


[BUG] - Node 18 - ng serve - something has changed in Node v18

Which @angular/* package(s) are the source of the bug?
Don't known / other
Is this a regression?
No
Description
Not sure if this is an issue with Angular or webpack-dev-server... but here goes:
I use a docker apache proxy locally so my dev env is more like production: www.myapp.local instead of localhost:4200
But when I try to bump node up to v18...  the angular proxy falls apart and does not work. The node api proxy works fine, its just the angular connection that breaks.
I start node like this
$ npx ng serve --hmr --disable-host-check --port 4200 --public-host=www.myapp.local --project=myapp

host file (pretty typical)
<IP_ADDRESS> www.myapp.local // <-- my app
...
# Added by Docker Desktop
<IP_ADDRESS> host.docker.internal
<IP_ADDRESS> gateway.docker.internal
# To allow the same kube context to work on the host and the container:
<IP_ADDRESS> kubernetes.docker.internal
# End of section

my docker apache (nothing crazy here): FROM php:5.6-apache
Define local_node "http://host.docker.internal:3333"
Define local_app "http://host.docker.internal:4200"

<VirtualHost *:80>
  DocumentRoot "/var/www/html"
  DirectoryIndex index.php index.html

  <Location /api>
      Order allow,deny
      Allow from all
      ProxyPass ${local_node}
      ProxyPassReverse ${local_node}
  </Location>

  <Location /app>
      Order allow,deny
      Allow from all
      ProxyPass ${local_app}/app
      ProxyPassReverse ${local_app}/app
  </Location>
</VirtualHost>

If on v18 the proxy does not work... apache error:
php-apache   | [Thu Dec 15 18:53:58.110169 2022] [proxy:error] [pid 17] (111)Connection refused: AH00957: HTTP: attempt to connect to <IP_ADDRESS>:4200 (host.docker.internal) failed

php-apache   | [Thu Dec 15 18:53:58.110198 2022] [proxy_http:error] [pid 17] [client <IP_ADDRESS>:41480] AH01114: HTTP: failed to make connection to backend: host.docker.internal, referer: http://www.myapp.local/

Again... the node/api proxy still works fine.
I was able to get it to "kinda" work in v18 by setting --host=<IP_ADDRESS> as well... but the hrm websockets were throwing errors in the client... so... after several hours of trying... I could not get this setup to work in v18.
Please provide a link to a minimal reproduction of the bug
No response
Please provide the exception or error you saw
php-apache   | [Thu Dec 15 18:53:58.110169 2022] [proxy:error] [pid 17] (111)Connection refused: AH00957: HTTP: attempt to connect to <IP_ADDRESS>:4200 (host.docker.internal) failed

php-apache   | [Thu Dec 15 18:53:58.110198 2022] [proxy_http:error] [pid 17] [client <IP_ADDRESS>:41480] AH01114: HTTP: failed to make connection to backend: host.docker.internal, referer: http://www.myapp.local/

Please provide the environment you discovered this bug in (run ng version)
windows 10
node 18.12.1
npm 8.10.0
php:5.6-apache
"@angular/animations": "15.0.0",
"@angular/cdk": "15.0.0",
"@angular/common": "15.0.0",
"@angular/compiler": "15.0.0",
"@angular/core": "15.0.0",
"@angular/forms": "15.0.0",
"@angular/material": "15.0.0",
"@angular/platform-browser": "15.0.0",
"@angular/platform-browser-dynamic": "15.0.0",
"@angular/router": "15.0.0",

Anything else?
Might be webpack-dev-server issue and unrelated to angular in general?

Had a similar issue, and had to use --host <IP_ADDRESS> to fix it

did you have any issues with hmr (hot module reloading) after setting to <IP_ADDRESS>?

Sorry I don't use hmr, so I didn't see any issue for that
My understanding is that using <IP_ADDRESS> makes the port open for any of your IPs (ie: if you have 2 network cards, or have virtual networks) instead of just a specific one, so not sure it should have an impact?

@alan-agius4  I see you transferred this issue.. not sure how to see where it was transferred to...
breaks in 18
"start": "npx ng serve --hmr --disable-host-check --port 4200 --public-host=www.myapp.local --project=myapp"

this does work
"start": "npx ng serve --hmr --disable-host-check --port 4200 --public-host=<IP_ADDRESS> --host=<IP_ADDRESS> --project=myapp"

So... I guess this issue can be closed... tho it would be nice to know what changed to break it.

@alan-agius4 I see you transferred this issue.. not sure how to see where it was transferred to...
It was transferred from angular/angular to this repo angular/angular-cli

So... I guess this issue can be closed... tho it would be nice to know what changed to break it.

From our end nothing changed as we use webpack-dev-server under the hood. Probably what is happening here is that the hostname was not being resolved correctly. See: https://github.com/webpack/webpack-dev-server/issues/416#issuecomment-287797086

Interesting this gets closed. I mean, it may be fact that you did not change anything, but another fact is that anyone generating a new project via CLI cannot hit breakpoints when using Node 18 with the default configuration. In other words: ng new is borked by default with Node 18.
I don't know how serious you rate this, but I think it is bad for anyone starting out with the CLI and trying to get the debugger running.

@Franiac, from what you are describing you are experiencing a different problem.

@alan-agius4 true, created and referenced the new issue 😄

After looking into another issue, Node.js 18 no longer prefers IPv4 over IPV6 Instead, it will now respect the order that is returned based on the dns entries. This means that it's not guaranteed that localhost is resolved to <IP_ADDRESS>. See: https://github.com/nodejs/node/pull/39987

@alan-agius4 What does that mean for the default projects of Angular/CLI?
--host=127.0.01 is a valid workaround then. But how do you plan to adjust for the Node 18 changes?

Technically, Node.js is doing the right thing here as it is respecting the OS settings.
For the vscode issue (https://github.com/angular/angular-cli/issues/24601) which incorrectly assumes that localhost is resolved to <IP_ADDRESS> there are two workarounds until the issue is fixes on their end.

Use --host=<IP_ADDRESS> (This will cause breakages if you are using proxies that rely on the localhost as hostname).
Even better update the host file to remove duplicate localhost entries

For this issue the correct resolution is:

Change the www.myapp.local binding from <IP_ADDRESS> to ::1 If in the host file localhost is configured to be resolved to ::1.
Or an even better approach is to use --host=www.myapp.local this ensures that the correct IP address is resolved. This is because the CLI will spawn the devserver with localhost when host is not provided. Correctly so, this is is not guaranteed to resolve to <IP_ADDRESS> if IPv6 capable hosts are added in the host file.

Thx for the info!


Exception thrown at runtime is not shown by flutter run output or by IDE, unless you're step-by-step debugging

No exception is shown in the IDE or flutter run output, my app just shows the CircularProgressIndicator forever.
The only way to reveal the exception, is to do step-by-step debugging and reaching the line where the error happens (the call to _getLocation inside ranky\lib\event_selection.dart) and then the IDE will show it.
Steps to Reproduce

Run my application at https://github.com/wil93/ranky
Click on the only green button available
A loading screen will be shown indefinitely

Logs

[  +65 ms] Connected to _flutterView/0x7eeb1a8298.
[  +15 ms] �  To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
[  +59 ms] An Observatory debugger and profiler on FRD L09 is available at: http://<IP_ADDRESS>:8100/
[   +1 ms] For a more detailed help message, press "h". To quit, press "q".
[+4694 ms] I/hwaps   ( 7532): JNI_OnLoad
[+1438 ms] I/flutter ( 7532): eventi: 3

Analyzing ranky...

   info - Unused import: 'package:haversine/haversine.dart' - lib\event_selection.dart:6:8
   info - Unused import: 'package:intl/intl.dart' - lib\event_view.dart:4:8
   info - The value of the field '_event' isn't used - lib\event_view.dart:19:25
   info - Unused import: 'package:flutter/foundation.dart' - lib\model\Participant.dart:1:8
   info - Unused import: 'dart:developer' - lib\model\data.dart:3:8
   info - The value of the local variable 'response' isn't used - lib\model\data.dart:37:7
   info - Unused import: 'package:flutter/material.dart' - lib\supplemental\asymmetric_view.dart:15:8
   info - Unused import: 'package:flutter/material.dart' - lib\supplemental\product_card.dart:15:8
   info - Unused import: 'package:intl/intl.dart' - lib\supplemental\product_card.dart:16:8
   info - Unused import: 'package:flutter/material.dart' - lib\supplemental\product_columns.dart:15:8
warning - The asset assets/ does not exist - pubspec.yaml:36:7

11 issues found. (ran in 15.9s)

[√] Flutter (Channel dev, v0.5.6, on Microsoft Windows [Versione 10.0.17692.1004], locale en-GB)
    • Flutter version 0.5.6 at C:\flutter
    • Framework revision 472bbccf75 (3 weeks ago), 2018-06-26 17:01:46 -0700
    • Engine revision 6fe748490d
    • Dart version 2.0.0-dev.63.0.flutter-4c9689c1d2

[√] Android toolchain - develop for Android devices (Android SDK 28.0.0)
    • Android SDK at C:\Users\willi\AppData\Local\Android\Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.0
    • ANDROID_HOME = C:\Users\willi\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    • All Android licenses accepted.

[√] Android Studio (version 3.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 26.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)

[√] VS Code, 64-bit edition (version 1.25.0)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 2.15.0

[√] Connected devices (1 available)
    • FRD L09 • 73QDU16B15017567 • android-arm64 • Android 7.0 (API 24)

• No issues found!

Just to clarify, I get this error even just by running flutter run without using any tool (VScode or others), so I'm not sure what is meant by the "tools" tag in this specific case

Hard to tell what part of Flutter is responsible.

I thought this would be good place to start looking for causes.
What exception do you get when you debug step-by-step?

I get the exception "Missing location permission in AndroidManifest.xml. You need to add one of ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION. See readme for details." which I reported also here: loup-v/geolocation#36
For some reason, now that I'm trying to reproduce the issue, the exception is not shown even in debug mode. The cursor "stops" at the throw line (inside the library I'm using) but the exception message is always "loading..."

Is the exception output shown with flutter logs?

I just noticed that I was using dev branch (probably because I was desperately trying to make it work last time I tried).
Now I checked out the beta branch again, and did a git pull (unnecessary since the last commit there was in May) and tried it again, and I can confirm that I can see the exception only when step-by-step debugging:

To answer your question: no, flutter logs does not show the exception (the last line printed by that command is "eventi: 3" which is my print() line in ranky\lib\event_selection.dart:58 just before the call to the failing library.
When I run with flutter run without debugging, the app loads indefinitely, and again the print() line is the last thing that is seen in the logs.

I think you might be hitting expression evaluation issues when we're trying to evaluate the toString() on the Exception. Could you try on master? There have been many expression evaluation fixes so hopefully it's no longer happening.
If it is, could you paste all the red text that's visible in the Debug Console at the bottom of your screenshot (that starts with compiler message) and/or capture a log in VS Code while reproducing the issue and attach it?

I don't know what the issue was, but I can't reproduce it anymore with the latest beta as of today.

It's happening for me as well. Is very annoying since I do not know what is the actual error and can't fix it.

@GyuriMajercsik are you able to provide a complete sample I can run, or a log (see my last comment above yours)? Thanks!

@DanTup Thanks for the fast reply. It's happening randomly but I will try to get a short sample for you.
How I can run the Capture Logs command from Android Studio or from command line ?

@GyuriMajercsik Oops sorry, I was in VS Code-mode :) I'm not sure how best to get lots from Android Studio. The command in VS Code collects logs from many sources into a single file which makes it convenient to track down things like this (we see what's happening over the VM service protocol, as well as the Flutter daemon output).
If you can make a sample so I can reproduce it here, that would definitely be the easiest way to track it down (since the logs might not show anything if something is swallowing the error). You could also try enabling breaking on "all exceptions" (this includes handled errors too) and step with the debugger to see if something is catching (and discarding) the error without logging.

@GyuriMajercsik this issue appears inactive, so I'm going to close it. If you're still able to reproduce it and can provide the information that @DanTup requested, please feel free to re-open.


Doc adjustments batch 2

Fixes a list of issues regarding documentation about usage and Docker/Docker compose.
Add a list (non-exhaustive) of usable public infrastructure and documentation about running Monero wallet RPC with Docker.

Codecov Report

Merging #224 (88dde00) into main (0a75d83) will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##            main    #224   +/-   ##
=====================================
  Coverage   15.2%   15.2%
=====================================
  Files         27      27
  Lines       6185    6185
=====================================
  Hits         942     942
  Misses      5243    5243

Continue to review full report at Codecov.

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


Added Latin language

mostly Classical Latin where possible, though a few generally accepted neologisms were necessary such as computātrum for computer

by the way, this isn't a joke language per se - probably best put in the same category as conlangs like toki pona, though of course it's not a conlang either

oh and by the way, I just saw the notice on the readme about posting the language's alphabet - so, the necessary letters for a typical modern transcription of classical Latin such as this are most of the standard Roman alphabet (except J, K and W) plus the vowels with macrons - Ā, Ē, Ī, Ō, Ū, plus Ȳ though that's much rarer - all in both uppercase and lowercase


controlling how deep to crawl

I might have missed it, but in the crawler options i didnt see a way to control how deep the crawler goes.  Is that possible via a parameter, or would i have to implement that logic in the htmllinkParser handler via urlFilter?

I think this would have to be implemented in a your own content handler, because it would at least require you to store the links and calculate the depth on this. I think it's too complex to be part of the supercrawler itself.


Array access using dynamic ints

Some of the examples in the Xilinx manual allow for this:
void inp(int a[10], int readline) {
  int c = a[readline/2];
}

It seems we can conservatively allow for these by making dynamic accesses consume all banks of the array.

It occurs to me that allowing dynamic access requires all-way muxing, i.e., if the array is banked, we need a view that is unbanked (unibanked). Which is the same hardware implementation and typing effect as for our flex view proposal (c.f. #57) in the special case where the result has only a single bank.
So the policy should likely be that unbanked arrays can be accessed with dynamic integers. (And you can use flex to get an unbanked array view if you need to.)

This sounds reasonable. Concretely, the consumeBanks function in typeCheck needs to change to allow for TSizedInt and fully consume the dimension. The case statement should also make sure that the dimension is unbanked and reject the access if it's not.
This can be done in parallel with the flex proposal.


Link fix

In this PR I fixed:

the Discord link in the documentation
the link to the contributing guide in the README
the get_freer_gpu function to let it works also on Windows (this version requires WSL but it can be sobstituted with a call to the powershell)

Checks to be done before submitting your PR

[ ] python3 -m pytest tests/ runs successfully.
[ ] black . runs successfully.
[ ] make html runs successfully (in the docs/ directory).
[ ] Updated docstrings related to the changes (as applicable).
[ ] Added an entry to the CHANGELOG.rst.

hey @sedaboni, thanks a lot for the PR! Can you please update the CHANGELOG.rst file with your contrib? I'll merge after that!


[ENGDOCS-994] Update samples

Proposed changes
Updated samples page based on feedback.
Related issues (optional)
ENGDOCS-994

@craig-osterhout Thanks for updating the Samples page. While we are at this, wondering if we can review the list of samples in the "Develop with Docker" section on the homepage and update the links there? Some links point to outdated samples.

Thanks @craig-osterhout. LGTM. Just a minor suggestion - can we open the external links in a new tab? Not a blocker though.


Will we ever support SPM?

There are no actively developed swift projects using cocopods only. The swift community has completely switched to SPM, its obviously better in every way. Its best to do this earlier to future proof projects that depend on the library.
This library is the single and only reason we still depend on cocopods.

@vikmeup I would love to be that is not my expertise. Perhaps we can get a issue started with all the necessary steps and I can implement portions I am able to.

we will publish binary dynamic frameworks for SPM soon and we can add Package.swift later

May I know your app name? here is my test Package.swift https://github.com/hewigovens/wallet-core-spm, will add it to wallet core once #1720 merged, we also bundle SwiftProtobuf as a binary framework, so you may need to change your project Package.swift accordingly.


[bazel] make tests runnable with bazel run

Currently if you try to run tests with bazel run, you'll end up in a state where the execution doesn't stop and you can't use Ctrl-C to kill it.
It turns out it's due to we use console command in OT-tool which, when stdin is TTY, switch it to raw mode and forward stdin to FPGA uart. This is useful for debugging but not what we want for the tests.
So instead, pipe /dev/null to stdin and make bazel run consistent with bazel test for OT tests.

What about have a --noninteractive flag for console and use this by default in tests ?

I could see it being useful to be able to run a test and manually send it console input, but agree that CTRL-C behaviour is too annoying to have this the default.

What about have a --noninteractive flag for console and use this by default in tests ?

Done

The failing test (sram_ctrl_execution_test_fpga_cw310_test_rom) seems to be timing out for many runs recently, so it's likely that this is unrelated to this PR. I couldn't replicate the error locally.


UVI Request

--- UVI JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from  to before v5.10.75",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=dec944bb7079b37968cf69c8a438f91f15c4cc61"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "dec944bb7079b37968cf69c8a438f91f15c4cc61",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "xhci: Fix command ring pointer corruption while aborting a command\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.10.75 by commit dec944bb7079b37968cf69c8a438f91f15c4cc61. For more details please see the references link."
}
--- UVI JSON ---

This issue has been assigned UVI-2021-1002030


refactor: move home url to config

This is an attempt to close: https://github.com/24pullrequests/24pullrequests/issues/2105
And sure, it's one of my 24 pull requests this year. Have a happy inception dreams tonight.
Please note: this is a rather safe refactoring, moving all hardcoded URLs into one config. The alternative is to rely on root_url and provide some configuration so that it would be available in mailers. If you prefer that way, let me know.

Host should not be hard-coded anywhere. All links on views should be relative. If you need an absolute URL (dunno why) you'd use something_or_other_url instead of something_or_other_path
The only exception is the Mailer. For that there's already a setting: http://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-in-action-mailer-views
config.action_mailer.default_url_options = { host: '24pullrequests.com', protocol: 'https' }

Keeping this alive because I believe it's an improvement compared to current implementation and a better solution (https://github.com/24pullrequests/24pullrequests/pull/2135) has a problem with one test and I'm not sure of the outcome.

Closing this as I merged https://github.com/24pullrequests/24pullrequests/pull/2135


Add Project Team User Profile Details

You can now include user profile information in your reports for each team member on the project.
{#data.testing_summary.project_team_details}
First Name: {first_name}
Last Name: {last_name}
Project Role: {role}
Job Title: {job_title}
Business Group: {business_group}
Organization: {organization}
Location: {office_location}
{/}

Very nice, just what I needed. Is it possible for me adding an e-mail address and phone number to that data?
Can I do it manually somehow?
Best regards :)

Very nice, just what I needed. Is it possible for me adding an e-mail address and phone number to that data? Can I do it manually somehow? Best regards :)

User email address and phone number (PII) is not available directly in the project JSON export data for privacy reasons.
However, you could achieve this in a few different ways:
Option 1) Create a Table custom field on the Project, and fill in the details when setting up the project. You can then refer to that data in the reports.
Option 2) Include that information within the existing profile fields which are already supported
Option 3) Create logic in the template to show the email address and phone number based on the user. See example below.
For Option 3 - you could do something like the following:
{#data.testing_summary.project_team_details}
{first_name} {last_name}
{#first_name === “Joe” && last_name === “Citizen”}
Email<EMAIL_ADDRESS>Phone: 1800 555 5555
{/}{/}

Awesome, thank you very much :)

Awesome, thank you very much :)

Just an update, you can now set the following configuration option in Administration -> Projects to automatically include email address for project team members:

You can access the email as follows:
{#data.testing_summary.project_team_details}
{first_name} {last_name} - {email}
{/}{/}


Write Modbus Registers?

Is it possible or will it be possible to write to the inverters modbus registers?
I want to be able to write to: 212 - BATT CHARGE LIMIT CURRENT
Is this in theory possible over the used TCP connection in this integration?
And if so, might there be a writing function in future?

Check this thread, modbus writes being done through node red.
https://powerforum.co.za/topic/8451-sunsynk-inverter-monitoring/

Check this thread, modbus writes being done through node red.
https://powerforum.co.za/topic/8451-sunsynk-inverter-monitoring/

Doesn't the node-red flow require a cabled connection?

Is it possible or will it be possible to write to the inverters modbus registers?
I want to be able to write to: 212 - BATT CHARGE LIMIT CURRENT Is this in theory possible over the used TCP connection in this integration? And if so, might there be a writing function in future?

Agree, it would be great to be able to write to selected registries e.g. Solar Sell, now that we are seeing more and more frequently that you actually have to pay for exporting power at times. This is becoming a problem in Denmark, Germany and the Netherlands. Probably also in other countries.

I switched to the following integration that supports writing through a esp32 module:
https://github.com/klatremis/esphome-for-deye
Anyways, it would be great it writing could be supported simply through the TCP modbus registers, without having to install the esp module.

Found this, also uses the solarmanV5 integration
https://github.com/githubDante/deye-controller

For this to be possible, the inverter has to support it in the first place. For instance, as I see (and interpret) in a Modbus reference document for Deye deye_sg04lp3, only Modbus Functioncode 10h ist supported right now, meaning, writing multiple registers at once.
Now the question goes to the authors/devs (@StephanJoubert, @jmccrohan ?)  of this repo: does the component understand and can it handle an instruction mb_functioncode: 0x10 that would be defined in the yaml file?
Thanks for the great code!

I have to add an important EDIT:
The last version of this integration has an updated service option: Write Multiple Holding Registers (Modbus Function Code 16)
I could change the f.i. the max A Charge current (register 108 for my model) without any issue.
Now I can create automations where I can change the charge current depending on season and the battery SOC!
Great! 👍

NEVERMIND, important news:
The last version of this integration has an updated service option: Write Multiple Holding Registers (Modbus Function Code 16) (whereas, 16dec is exactly the early mentioned mb_functioncode: 0x10hex)
I could change the f.i. the max A Charge current (register 108 for my model, you have to specify it as decimal value) without any issue.
Now I can create automations where I can change the charge current depending on season and the battery SOC! 🎉
Great! 👍

Thanks a lot for the tip. I updated and I do see the service and have set up a simple automation to disable Solar Sell when prices are negative. However, the automation is unable to update the Solar Sell toggle on my Hybrid Deye 12 kW inverter. I am also unable to update the Charge current. I have not tried other registers. I am using mod register 145 for Solar Sell and am setting the value to 0. Should this not disable the feature? For Charge current I am trying to update mod register 108 also to no avail.
Any ideas? Are there prerequisites for using the Service which must installed first?

Do you have the same inverter as mine (DEYE/Sunsynk/SolArk Hybrid 8/12K-SG04LP3) ? Different inverters have different registers. If it is one of these then....:
What values are you using for instance for register 108? The value has to be in Amper and I tested only with absolute values.
Maybe also an outdated firmware may be the reason 🤔? Are you able to remote control your inverter over the app?

Do you have the same inverter as mine (DEYE/Sunsynk/SolArk Hybrid 8/12K-SG04LP3) ? Different inverters have different registers. If it is one of these then....: What values are you using for instance for register 108? The value has to be in Amper and I tested only with absolute values. Maybe also an outdated firmware may be the reason 🤔? Are you able to remote control your inverter over the app?

I have the 12 kW SG04LP3-EU.
Updating values remotely via Solarman Business works fine.
For register 108 I tried updating to "80". I currently have 90 A as the max charge current.
This is my versioning information:
Protocol Version：0104
MAIN：2005-1124-1807
HMI：1001-C031

Updating the values is working fine after reinstalling HA. This is fantastic! Big thanks to all working on this.

Great to hear that!
Sorry, I was busy last week and I also did not have any other hint for your issue.....

Updating the values is working fine after reinstalling HA. This is fantastic! Big thanks to all working on this.
Nice work. Could you share some more details about how to do that? Thanks in advance.

Hi,
i'm interested to use this feature to force charge mode of the battery.
How / where can i find the different register for my inverter Sofar HYD-5000ES ?

Hi, i'm interested to use this feature to force charge mode of the battery. How / where can i find the different register for my inverter Sofar HYD-5000ES ?

Same question here. Would like to change some values but no idea where to find register addresses.

Hi, i'm interested to use this feature to force charge mode of the battery. How / where can i find the different register for my inverter Sofar HYD-5000ES ?

Same question here. Would like to change some values but no idea where to find register addresses.

i don't find these register and now i use sofar2mqtt which perfectly worked

Sofar Modbus register list here - https://community.openhab.org/uploads/short-url/dF8j79PsvtCS0xQ5aPxHXO4HZDE.pdf
It does not explicitly give a list of inverters that its applicable to, therefore I would advise first querying the register and see if you get the correct data response.


switch to pytest ?

Hi @ariovistus,
I would like to know if you interested to switch to pytest instead of nose ?
I'll try to make the change if you agree.

I used pytest once. it was pretty nice. I don't remember if I noticed any compelling reason to use one over the other. Mostly DRS is using nose because that's what DRF uses, and I'm just copying their nice things.

They updated to pytest as well since :)
https://github.com/tomchristie/django-rest-framework/blob/master/runtests.py

In that case, by all means.

Nose is out, using unittest which is so much better in new python versions. Pytest is nice, but would prefer to keep things stock as much as possible.


test: 100% coverage for 33Together.ts

This PR also includes some reshuffling of constants to avoid circular dependency errors. See screenshot for context.

Do we actually use gitpod?

Gitpod is my primary Continuous Dev Environment.  One-click workspace launch, reasonably fast runtime, responsive browser based VSCode instance.
I think @0xJem also uses gitpod.

Do we actually use gitpod?

Started using it after @ivelin tricked me into it.

I use GitPod most of the time, with it running in my local VSCode app. I mainly do so as the Docker stack or node frontend can be running on a remote server, which makes the local machine much faster.


Tests in boot measure.robot will not fail with long irregular boot times

@philipandag should this be a draft still?

@mkopec sorry, it should not be a draft. I think it is ready for review / merge.

@philipandag please rebase and resolve merge conflicts

@mkopec rebased and resolved, ready to merge

thanks


Dev

add test cases for controllers

Coverage increased (+3.01%) to 40.871% when pulling a87c9d05a52b8bf6bedbbf4b92321b7b4ffa807d on yhua123:dev into 1c216d902a624b75426cb0e9e91a40e9e17f3027 on vmware:dev.

Coverage increased (+2.1%) to 39.984% when pulling e83eb76cb34c7ce6ee61fe0f8c2630b3664293d0 on yhua123:dev into 1c216d902a624b75426cb0e9e91a40e9e17f3027 on vmware:dev.

Coverage increased (+3.01%) to 40.871% when pulling 947e69c91f83bef47552e6161fb0f00a525b1e78 on yhua123:dev into 1c216d902a624b75426cb0e9e91a40e9e17f3027 on vmware:dev.

Coverage increased (+2.1%) to 39.984% when pulling 947e69c91f83bef47552e6161fb0f00a525b1e78 on yhua123:dev into 1c216d902a624b75426cb0e9e91a40e9e17f3027 on vmware:dev.

Coverage increased (+3.01%) to 40.871% when pulling 947e69c91f83bef47552e6161fb0f00a525b1e78 on yhua123:dev into 1c216d902a624b75426cb0e9e91a40e9e17f3027 on vmware:dev.


add method for Map

Map doesn't have add(key, value) method. It has addAll(Map) though. I can understand that generally add(key, value) is redundant because one can use []= operator.
But i hit this use case very often:
Map toModelMap() {
    Map map = toMap();
    map['key'] = 'value'
    return map;
 }

With add(key, value), this can be concisely written as:
Map toModelMap() => toMap()..add('key', 'value');

Right now, this can be written as:
Map toModelMap() => toMap()..addAll({'key': 'value'});

But creates an unnecessary Map object and also is more verbose.

..[x]=y works fine https://dartpad.dartlang.org/08c842de8fae2831a6a13050f82e3707

@zoechi thanks for checking and for the dartpad link.


I tried running this code and then the sky turned red

I would give you steps to reproduce this error but it might be encouraging the coming of the apocalypse. Just a heads up.

Ah I see the problem now. I had been using underscores in function names. Issue resolved.


feat: example of websocket connection with backend.

Description:
Example of connection with backend using websocket.
Trello link:
https://trello.com/c/S573EsYI/21-feature-crear-una-sala
Type of change

[ ] 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 not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

Otro ejemplo de conexion, la solucion fue integrada en otro PR


Design and Layout with Version Selection on Landingpage Library page

I propose we introduce a slight variation in our design and layout for our library page to show our elements version-selection. Ideally, this would match the design of our "getting started" pages navigation, providing a consistent look.
Image 1+2 show the current planned implementation.
image 3 shows the navigation style we could reuse for our version-selection
Context: I have encountered a problem with the styling of the Ino-Select component when it's used in conjunction with a filled button on our library page. Specifically, the primary color of the Ino-Select overlaps with the filled button, rendering the Ino-Select almost invisible due to the color similarity. Currently using an outlined variant to avoid this. However, this compromises the design aesthetics of our UI in my opinion.

I suggest to do a version picker like tailwind use in their documentation: on the upper left side of the page.