added og tags for social sharing

Added og tags for social sharing

@giuliaghisini @nzambello we have to take into account that there might be add-ons (like kitconcept.seo) that override the og tags (and allow to set a different title) and that might collide with those tags in Volto core.

@giuliaghisini @nzambello we have to take into account that there might be add-ons (like kitconcept.seo) that override the og tags (and allow to set a different title) and that might collide with those tags in Volto core.

@giuliaghisini @nzambello we have to take into account that there might be add-ons (like kitconcept.seo) that override the og tags (and allow to set a different title) and that might collide with those tags in Volto core.
Just wondering. Did you consider using kitconcept.seo for your use case? It offers all the social tags and allows to the editor to actually override the settings (with fallbacks when you don't add anything).

@tisto I saw kitconcept.seo just recently. I think we should ship something on Volto by default from standard fields and let developers override that with additional fields from that addon, and I don't see blockers for this.

@giuliaghisini @nzambello we have to take into account that there might be add-ons (like kitconcept.seo) that override the og tags (and allow to set a different title) and that might collide with those tags in Volto core.
Just wondering. Did you consider using kitconcept.seo for your use case? It offers all the social tags and allows to the editor to actually override the settings (with fallbacks when you don't add anything).

@tisto I saw kitconcept.seo just recently. I think we should ship something on Volto by default from standard fields and let developers override that with additional fields from that addon, and I don't see blockers for this.

@nzambello not sure I fully get your point. Though, if we add meta tags in the header and then an add-on needs to override those fields this is a lot harder to accomplish than coming up with a plugin architecture that allows add-ons to add additional meta tags to the header.
We should be careful not to overengineer stuff here. You either need SEO capabilities, then you should use an add-on that allows editor to override settings, or you don't (for an intranet use case for instance). I am ok discussing bringing SEO capabilities into Volto core. Though, then we should go all the way (and add backend fields as well). Mixing things up and providing all the options that one could imagine introduces an overhead that has no value for us IMHO.
What we could do is to add those meta fields to the Volto templates and gracefully degrade them. If you have a SEO add-on with additional fields, Volto takes those values, if you don't it falls back to the page title/description/ etc (exactly what this PR does). Though, this is actually what kitconcept.seo already does. See:
https://github.com/kitconcept/kitconcept.seo/blob/master/README.rst#add-to-volto-site

@nzambello not sure I fully get your point. Though, if we add meta tags in the header and then an add-on needs to override those fields this is a lot harder to accomplish than coming up with a plugin architecture that allows add-ons to add additional meta tags to the header.
We should be careful not to overengineer stuff here. You either need SEO capabilities, then you should use an add-on that allows editor to override settings, or you don't (for an intranet use case for instance). I am ok discussing bringing SEO capabilities into Volto core. Though, then we should go all the way (and add backend fields as well). Mixing things up and providing all the options that one could imagine introduces an overhead that has no value for us IMHO.
What we could do is to add those meta fields to the Volto templates and gracefully degrade them. If you have a SEO add-on with additional fields, Volto takes those values, if you don't it falls back to the page title/description/ etc (exactly what this PR does). Though, this is actually what kitconcept.seo already does. See:
https://github.com/kitconcept/kitconcept.seo/blob/master/README.rst#add-to-volto-site

@jackahl can you share our template from the DVV project here? I have the feeling we are re-inventing the wheel here...

@jackahl can you share our template from the DVV project here? I have the feeling we are re-inventing the wheel here...


[Core] Initial style refactor

@oliviertassinari @alitaheri
This is the start of some of the refactors that I wanted to do, but there is still more. So far I've done the following:

Removed all apply() calls in favor of argument destructuring
Simplified style-propable mixin to only import from utils/styles
Officially deprecated mergeAndPrefix() and removed all uses of the method internally
Search the code base for components that used ImmutabilityHelper and replaced it with utils/styles/mergeStyles or react-addons-update
Removed ImmutabilityHelper from src
Changed existing uses of styleUtils.merge and styleUtils.prepare to mergeStyles and prepareStyles (renamed merge to mergeStyles)
Prepared deprecation of passing more than one style to `prepareStyles()

Todo:

Refactor/cleanup ensureDirection
Decide on whether to use mergeStyles or use spread operators in components
Investigate opportunities for memoization

@oliviertassinari @alitaheri
What are your thoughts on removing immutability-helper completely? (yay for less API surface area!) If we do that, I would like to move its merge implementation into styleUtils that way they aren't exported in two places.
With this PR, the only place immutability-helper is being used is in touch-ripple.jsx for its push() and shift() functions. I'm not sure how important it is to wrap react-addons-update if we use it so infrequently. The theme-manager.js and menu.jsx currently use react-addons.update directly, so I think it's probably okay for touch-ripple.jsx to use it directly too, or just use destructuring syntax. Let me know your thoughts...
And of course, we can also deprecate immutability-helper and remove all uses of it internally until 0.15.0 as well.

Also, let me know your thoughts on renaming prepareStyles to prepare in the styleUtils for consistency.
That way we have:
/* mixin */
this.mergeStyles()
this.prepareStyles()

/* util */
styleUtils.merge()
styleUtils.prepare()

Thanks a lot @newoga, This is a big help :+1:

What are your thoughts on removing immutability-helper completely

I completely agree! It's not that useful and it's very confusing! I mean, there are many libraries to handle such things. why do we have our own.... oh wait it WRAPS another library :|
I think merge must be removed :grin: and prepareStyles cannot be confused with prepare. I think prepare is easier to write without confusion.

What are your thoughts on removing immutability-helper completely?

That sounds like a good idea. It's only used in the TouchRipple. I think that It could be replace with simple ES6 destructuration and the rest spread: https://github.com/sebmarkbage/ecmascript-rest-spread.
Well, using react-addons.update could be another way to do it.
Regarding the syntax we can use. I really like this one:
import {mergeStyles, prepareStyles} from '../utils/styles'

const SomeComponent = ({muiTheme, style}) => {
  const rootStyle = {};
  return (

  );
};

Thanks for your feedback guys. I made a few additional commits that I would like your feedback before continuing.
First, immutability-helper.js is gone!
@alitaheri @oliviertassinari  After experimenting a bit, I decided that this syntax is the best route.
import {mergeStyles, prepareStyles} from '../utils/styles'

const SomeComponent = ({muiTheme, style}) => {
  const rootStyle = {};
  return (

  );
};

I put details as to why this commit message. But ultimately I realized that this pattern better follows the functional approach we are heading in as well as offers bunch of benefits as it relates to our eslinter (such as detecting unused methods and correct method names). I noticed it immediately when I made the change. Also, styleUtils.prepare is longer prepareStyles so I think it made the code cleaner too. I can elaborate if you have questions.

FYI, whether we should continue using our mergeStyles implementation or switch to spread/destructuring across our components is still up and the air. I haven't evaluated performance, but I'm open to what you guys think. If we get ride of mergeStyles, this will get us down to one function, prepareStyles!

Thank you for your awesome work guys! This looks great :+1: :bowtie: :bowtie: :bowtie:

@newoga Nice work. I'm happy with it. Could you squash down the commit?
@alitaheri Are you ok to merge this?

@newoga I didn't mean we must use destructuring. I was only saying that we should leave such trivial things to external libraries like lodash (babel's polyfill). Since this is what they are really good at. For now it's all good. it doesn't matter that much anyway. this is very good for now. thanks :+1: :+1: :+1:
@oliviertassinari Yes I'm all good

@alitaheri Okay right, I agree. Thanks for clarifying. :smile: There's still a few remaining pieces I want to solve, we can revisit in next PR.
@oliviertassinari @alitaheri In case you need to review anything else before merging, I made a backup of the branch before rebasing in case you need to see the separate commits.
Thanks guys, if all is green, feel free to merge.

It's all good @newoga Thanks a lot for your hard work on this :+1: :+1: :+1:
@oliviertassinari I'll leave the merge to you. All green here :green_heart:


meta-parm for not being under fs:/

It breaks for example anuglar.js.
Example: access fs:/ipns/glowing-bear.ipfs.ovh
It might redirect to http already but it is other bug.

Analyzing what causes this issue and whether it may be fixed should be a saner approach than simply disabling the feature.

It is but getting things to work with it will be a really long process.

Well, i'm interested in what fails, but the source is minified and auto-prettify doesn't seem to work. Can you try it without minified code?

I think we should fix underlying issue: adding custom HTML hints which are only used by one browser sounds like an nightmare from IE 6 times :cry:
As for the problem at hand, glowing-bear.ipfs.ovh does not work any more, but my intuition is that the problem is caused either by fs:→https: redirect or no-cookies for /ipfs/ paths.
Until fixed, there is a note about fs: breaking JavaScript on some pages (cf8bbc4).

sorry for glowing-bear.ipfs.ovh not working but my IPFS suffer hangs so I can't run it. It will come back when underlying issue is solved.

Not that we closed #20 this is no longer reproducible: we don't have custom protocol anymore, only a set of hacks that redirect to HTTP -- see #164 for more details.
I am closing this one.
If similar problem surfaces again, it should be a new issue (for webextension version).


Improve drone destruction logic

When the drone entity is destroyed on server we need the client to destroy both the actor and the entity. The actor has a destruction smoke effect that needs to play if entity is represented by actor.
Issue with current approach (and suggestions to fix) from @archimonde1111:

The way this is fixed is bothering me a little bit because of duplicated event calls over the network, so I have to ask 😅
Have you tried forcing net update after mass events are registered?
And other suggestion, maybe we could move the particle spawning into destruct event, but then we would need a way to differentiate between drone death and change from drone actor into the ISM

@archimonde1111 is this still relevant with the latest changes to make it so drone destruction doesn't destroy the entity but just hides the actor instead? If it's not relevant you can close


Compile Warning

main.cpp: In function 'bool FindBlockPos(CValidationState&, CDiskBlockPos&, unsigned int, unsigned int, uint64_t, bool)': main.cpp:2707:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]      if (nFile != nLastBlockFile) {

This issue is inherited from Core. This should be fixed in upstream or not at all.

I can report it to them, but if it's fixed in core 0.12 then I'm not sure if they'll fix 0.11.2

In order to release Classic as fast as possible the minimum change was made on top of the latest stable release of upstream. Which is 0.11.2.
There is a lot of good work done in the 0.12 branch that likely somehow will end up in Classic. Likely including fixes of this kind.


Remote read endpoint should handle matchers for external labels.

If the other Prometheus has an external label that matches that of
the Prometheus being read from, then we need to remove that matcher
from the request as it's not actually stored in the database - it's
only added for alerts, federation and on the output of the remote read
endpoint.
Instead we check for that label being empty, in case there is a time
series with a different label value for that external label.

@tomwilkie


Issue-19-update-reference

update reference file in integer.md
fix broken link in data_types.md, string.md
#19

Great additions and fixes. Merging.


Is there any easy way to visualize the bounding box?

Hello. I am new to this, and I have run all other .launch files given. I have seen the PointClouds successfully, but I cannot generate the bounding box shown in the Readme gif.
Is there any easy way to visualize the bounding box, or am I making a simple mistake? (I think may be it is related to the visualization module?)
Thanks!

evaluation.launch seems to be the solution, but it stops running halfway. Trying to debug :-)

Does it freeze or crash for you half way @facade1801 ?
Maybe try a slower replay rate like 0.1 to check if it you pc performance.

I found a small bug. Make sure to pull first and then let me know if your error is still there ;)

I pulled and run evaluation.launch. This is what I get. (I added some output="screen".)
Do I need to open Rviz in advance?
facade@facade-VirtualBox:~/catkin_ws$ roslaunch evaluation evaluation.launch scenario:=0060
... logging to /home/facade/.ros/log/4bc13a52-f47d-11e8-945d-0800277d5ebd/roslaunch-facade-VirtualBox-2197.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://facade-VirtualBox:41295/

SUMMARY
========

PARAMETERS
 * /detection_node/car/height/max: 2.0
 * /detection_node/car/height/min: 1.1
 * /detection_node/car/semantic/min: 0.6
 * /detection_node/car/side/max: 6.0
 * /detection_node/car/side/min: 1.3
 * /detection_node/grid/cell/height: 0.15
 * /detection_node/grid/cell/size: 0.25
 * /detection_node/grid/range/max: 83.0
 * /detection_node/grid/range/min: 3.0
 * /detection_node/grid/segments: 240
 * /detection_node/lidar/height: -1.73
 * /detection_node/lidar/z_min: -2.4
 * /detection_node/pedestrian/height/max: 2.25
 * /detection_node/pedestrian/height/min: 1.1
 * /detection_node/pedestrian/semantic/min: 0.8
 * /detection_node/pedestrian/side/max: 2.1
 * /detection_node/pedestrian/side/min: 0.55
 * /detection_node/ransac/iterations: 50
 * /detection_node/ransac/tolerance: 0.2
 * /detection_node/semantic/edge_detection/kernel: 3
 * /detection_node/semantic/edge_detection/max: 120
 * /detection_node/semantic/edge_detection/min: 5
 * /detection_node/semantic/edge_detection/perform: False
 * /evaluation_node/scenario: 60
 * /rosdistro: kinetic
 * /rosversion: 1.12.14
 * /sensor_setup_node/grid/cell/height: 0.15
 * /sensor_setup_node/grid/cell/size: 0.25
 * /sensor_setup_node/grid/range/max: 83.0
 * /sensor_setup_node/grid/range/min: 3.0
 * /sensor_setup_node/grid/segments: 240
 * /sensor_setup_node/lidar/height: -1.73
 * /sensor_setup_node/lidar/z_min: -2.4
 * /sensor_setup_node/ransac/iterations: 50
 * /sensor_setup_node/ransac/tolerance: 0.2
 * /sensor_setup_node/scenario: 60
 * /sensor_setup_node/semantic/edge_detection/kernel: 3
 * /sensor_setup_node/semantic/edge_detection/max: 120
 * /sensor_setup_node/semantic/edge_detection/min: 5
 * /sensor_setup_node/semantic/edge_detection/perform: False
 * /tracking_node/data_association/car/dist/form: 5.0
 * /tracking_node/data_association/car/dist/position: 2.0
 * /tracking_node/data_association/ped/dist/form: 2.0
 * /tracking_node/data_association/ped/dist/position: 1.0
 * /tracking_node/track/P_init/v: 10.0
 * /tracking_node/track/P_init/x: 1.0
 * /tracking_node/track/P_init/y: 1.0
 * /tracking_node/track/P_init/yaw: 10.0
 * /tracking_node/track/P_init/yaw_rate: 1.0
 * /tracking_node/tracking/aging/bad: 2
 * /tracking_node/tracking/dim/x: 5
 * /tracking_node/tracking/dim/x_aug: 7
 * /tracking_node/tracking/dim/z: 2
 * /tracking_node/tracking/lambda: 2.0
 * /tracking_node/tracking/occlusion_factor: 2.0
 * /tracking_node/tracking/std/acc: 0.4
 * /tracking_node/tracking/std/lidar/x: 0.15
 * /tracking_node/tracking/std/lidar/y: 0.15
 * /tracking_node/tracking/std/yaw_rate: 0.314
 * /visualization_node/scenario: 60

NODES
  /
    detection_node (detection/detection)
    evaluation_node (evaluation/evaluation)
    sensor_setup_node (sensor_processing/sensor_setup)
    tracking_node (tracking/tracking)
    visualization_node (visualization/visualization)

auto-starting new master
process[master]: started with pid [2208]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 4bc13a52-f47d-11e8-945d-0800277d5ebd
process[rosout-1]: started with pid [2221]
started core service [/rosout]
process[sensor_setup_node-2]: started with pid [2232]
process[detection_node-3]: started with pid [2239]
process[tracking_node-4]: started with pid [2240]
[ INFO] [1543567963.110705987]: ped_side_min 0.55
[ INFO] [1543567963.110812841]: ped_side_max 2.1
[ INFO] [1543567963.110853396]: ped_height_min 1.1
[ INFO] [1543567963.110882589]: ped_height_max 2.25
[ INFO] [1543567963.110910106]: ped_semantic_min 0.8
[ INFO] [1543567963.110937946]: car_side_min 1.3
[ INFO] [1543567963.110964853]: car_side_max 6
[ INFO] [1543567963.110990880]: car_height_min 1.1
[ INFO] [1543567963.111017004]: car_height_max 2
[ INFO] [1543567963.111043484]: car_semantic_min 0.6
process[visualization_node-5]: started with pid [2241]
process[evaluation_node-6]: started with pid [2295]
[ INFO] [1543567963.269922291]: Read scenario : 0060
[ INFO] [1543567963.431987596]: scenario 0060
[ INFO] [1543567963.432162500]: lidar_height -1.73
[ INFO] [1543567963.432212017]: lidar_z_min -2.4
[ INFO] [1543567963.432245326]: grid_range_min 3
[ INFO] [1543567963.432277155]: grid_range_max 83
[ INFO] [1543567963.432306352]: grid_height 332
[ INFO] [1543567963.432333728]: grid_width 664
[ INFO] [1543567963.432362115]: grid_cell_size 0.25
[ INFO] [1543567963.432391680]: grid_cell_height 0.15
[ INFO] [1543567963.432420499]: grid_bins 470
[ INFO] [1543567963.432448269]: grid_segments 240
[ INFO] [1543567963.432478244]: ransac_tolerance 0.2
[ INFO] [1543567963.432514560]: ransac_iterations 50
[ INFO] [1543567963.432545878]: inv_angular_res 152.789
[ INFO] [1543567963.432575479]: inv_radial_res 4
[ INFO] [1543567963.437005778]: da_ped_dist_pos 1
[ INFO] [1543567963.437291259]: da_ped_dist_form 2
[ INFO] [1543567963.437396556]: da_car_dist_pos 2
[ INFO] [1543567963.437493305]: da_car_dist_form 5
[ INFO] [1543567963.437586205]: tra_dim_z 2
[ INFO] [1543567963.437675510]: tra_dim_x 5
[ INFO] [1543567963.437762310]: tra_dim_x_aug 7
[ INFO] [1543567963.437851957]: tra_std_lidar_x 0.15
[ INFO] [1543567963.438312463]: tra_std_lidar_y 0.15
[ INFO] [1543567963.438684051]: tra_std_acc 0.4
[ INFO] [1543567963.438962294]: tra_std_yaw_rate 0.314
[ INFO] [1543567963.439137753]: tra_lambda 2
[ INFO] [1543567963.439306829]: tra_aging_bad 2
[ INFO] [1543567963.439861108]: tra_occ_factor 2
[ INFO] [1543567963.440016741]: p_init_x 1
[ INFO] [1543567963.440209813]: p_init_y 1
[ INFO] [1543567963.440454218]: p_init_v 10
[ INFO] [1543567963.440626267]: p_init_yaw 10
[ INFO] [1543567963.440813338]: p_init_yaw_rate 1

Yes! Please run rviz in advance! I didn’t include the launch command in the evaluation.launch there. Well spotted!
Let me know if you need help to visualize the boxes. And also let me know if things work just with this fix :)

This is what I did:
terminal 1: roscore
terminal 2: rviz
terminal 3: roslaunch evaluation evaluation.launch scenario:=0060
Nothing happens now. Maybe I should add some display in rviz? but I can only see the pointclouds and original images, but no sem￼antic images and no bounding boxes.
Then I tried terminal 4: rosbag play -l -r 0.1 synchronized_data.bag
And I still see nothing there

Thanks @facade1801 for your helpful feedback!
I found one more bug and removed it. So pull first :)
Then run the terminals again as you already described. Good job there! Once you start the rosbag play you can hit the space bar and pause it to include all items you want to visualize. Let me know if this works or not.
If not maybe run the tracking.launch as well and let me know if you get the same behavior!
Thanks for your help to make my project better :)

I still cannot visualize them, the problem remains the same. Same with tracking.launch.

It’s only the boxes that you can’t visualize or even the semantic images for example?

I can't visualize both the boxes and the semantic images for example.
Maybe it's because I have problem reading semantic images.
No image received in:
/sensor/image/detection_grid
/sensor/image/semantic
/viz/detection/image
/viz/tracking/image

Check that you have downloaded the semantic images and stored in the right folder
Then run:
Terminal 1: roslaunch sensor_processing sensor.launch scenario:=0060
Terminal 2: rosbag play -r 0.25 synchronized_data.bag
And check if you can see the topic /sensor/image/semantic

I have checked the files, seems no problem.

Below are the results. I have seen similar problems in another issue, and I also have similar result.

Thanks for the images! They help a lot to debug further!
Jump into the file sensor_fusion.cpp line 545 within the sensor_processing_lib and print out the path_name. You can use a ROS_INFO command here and make sure to catkin_make the code after. Then look at the print and let me know what it says.
Side note: The variable time_frame currently overflows when you play the scenario more than once so always kill and set up rviz

I forgot to catkin_make before... This really helps!
However, after correcting my mistakes and catkin_make, it resulted in this:

so everything seems going fine except the semantic images 🤯

I tried evaluation.launch and the bounding boxes showed thankfully, so the semantic images are no longer a great problem. Thank you a lot for your timely help! it really helps a lot.
Maybe "~" and "/home/username" are not entirely the same and I have to manually hardcode them, because it gets better after changing them to my own path (with unknown reason.)

Happy that it works now 💯
Yeah, I guess the path is a ROS issue! I will find a work around within the next weeks! Make sure to Star and follow the repository to be up to date! ;-)
What is your background @facade1801 and what are you currently working on?

I'm struggling with my graduating project of undergraduate, and my project is mainly about point cloud, autopilot and object detection. Thanks for caring 😇

Awesome project! 🚀
Let me know if you need any further help or if you have any ideas, feedback or recommendations about developing my repo in a better way :)

I have checked the files, seems no problem.
Below are the results. I have seen similar problems in another issue, and I also have similar result.

Sorry to bother you, can you tell me how to generate a semantically segmented picture under kitti_data/0060/segmented file?


Write enforce_invariant() function

Description
For both the datafusion and pyarrow-based writers to support writer protocol v2, we'll need to support enforcing invariants. It seems like the following signature could be reused by both implementations:
fn enforce_invariant(batch: RecordBatch, invariants: &Vec<(i32, &str)>) -> Result<(), DatafusionError> {
    // rough implementation:
    for (column_index, sql_invariant) in invariants {
        // ... (run data fusion query)
        // ... If failure, return error indicating which invariant failed.
    }
    Ok(())
}

Then this function could be applied to each record batch that comes in during a write.
We might also need to check whether the column is nullable and make sure we are enforcing that too, either as part of this or part of the schema enforcement. Should add a test for that.
What do you think @roeap?
Related Issue(s)

#575

Related docs
https://github.com/delta-io/delta/blob/master/PROTOCOL.md#column-invariants
https://books.japila.pl/delta-lake-internals/constraints/Invariants/

BTW here are the invariant test suites: https://github.com/delta-io/delta/blob/master/core/src/test/scala/org/apache/spark/sql/delta/schema/InvariantEnforcementSuite.scala
Also note "invariants" are distinct from "constraints", so there's a separate test suite for that. Constraint enforcement is part of writer version 3, so don't need to worry about it yet; But it seems like it has a very similar implementation as invariants, so maybe write this function with constraints in mind.
If I understand correctly, the main difference between invariants and constraints is that the former is a property of a single column, whereas a constraint is a property of the table and thus can enforce relationships between columns (example constraint).

At first sight this sounds very reasonable :). With regards to testing, maybe it makes sense to combine that effort with the pyspark integration tests, along the lines of do we get the same results (error or not) when writing here or with pyspark?

Two notes:

We are currently waiting on clarification to the protocol: delta-io/delta#1241
While we should enforce column invariants to be compliant, we should not be eager to expose APIs to add column invariants to tables. The existing Spark implementation seems to have a bug where the invariants are only enforced when the column is nullable (delta-io/delta#1239). Regardless, I think similar functionality can be done through Constraints and that's likely better supported in the existing ecosystem.


sync pod affinity stuff to installer from master and release-1.1

@morvencao I don't think your change related to pod affinity config in the new installer.
Could you open a PR to merge them in?  Didn't want to miss it!

Close this since we have merged https://github.com/istio/installer/pull/128.


Optimization: pass-through media payload

Is it possible to run recv-to-send pipeline into "pass-through" mode without re-encoding media payload?

Not yet but could be soon.

Fixing #240 could allow that.


Problem with the last label on the X-axis

Merry Christmas for everyone)
I've got a some problem with last label on the X-axis:

How can i put it to the one line? Bcs there is a lot of space there.

Happy new Year! :-) What browser are you using? Can you post your chart config?

Happy new Year too! :-)
What browser are you using?

Google Chrome. In all browsers it displays the same

Can you post your chart config?
  var options = {
          fullWidth: true,
          chartPadding: { right: 100 },
          lineSmooth: Chartist.Interpolation.cardinal({ fillHoles: true }),
          height: self.table_height,
          showArea: true,
          axisX: { offset: 60 },
          axisY: {
                offset: 80,
                labelInterpolationFnc: function(value) {
                  var new_value = value;
                  if(lang['system_currency_position'] == 'before') {
                    return self.shortPrice(lang['sys_currency'] + " " +new_value);
                  } else {
                    return self.shortPrice(new_value + " " +lang['sys_currency']);
                  }
                }
          }
        }

Yeah, that's a problem of the fullWidth option and the Axis class that wont use the available chart padding to calculate the width of the last label. We should fix that on the axis. I'll flag your issue as a bug.

For now you have a few options:

Don't use fullWidth
Remove the last label
Use the style .ct-label.ct-horizontal { white-space: nowrap;} on your labels
Force the chart to fallback to SVG text instead of foreignObjects, which will cause all labels in your chart to be drawn with  elements. This will cause your text elements not to wrap, if you can forgo this feature. Check this bin for an example: http://jsbin.com/nepixe/edit?js,output

What is the best way to remove or hide the last label?

The easiest way is to set your last label to an empty string. If you want to implement this more like a plugin, you can use the draw event to remove the last label on the X axis:
var data = {
  labels: [1, 2, 3],
  series: [[1, 2, 3]]
};

Chartist.Line('#chart', data, {
  fullWidth: true
}).on('draw', function(context) {
  if (context.type === 'label' &&
      context.axis.units.pos === 'x' &&
      context.index === data.labels.length - 1) {
    context.element.remove();
  }
});

Great, thank you. I'm already listening on the draw event to add labels to the lines so I can hook in there.

We need to consider this when working on #809

How do you do this for a bar chart on the x-axis?
In that case we cannot write context.index === data.labels.length - 1 since the last position is not given by data.labels.length - 1. Any help would be much appreciated!

In case someone else needs this:
if (context.type === 'label') {
   let labelCount = context.axis.ticks.length
    if ((context.index + 1) === labelCount) {
       context.element._node.childNodes[0].classList.add('the-last-of-the-labels')
   }
}

That’ll add a class to the last label, which you can use to position it via CSS

small modification to @nathanaelphilip answer did the trick for me
            if (data.type === 'label') {                 let labelCount = data.axis.ticks.length                 if ((data.index + 1) === labelCount) {                     data.width = labelWidth;                     data.element._node.childNodes[0].style.width = labelWidth + "px";                 } else{                     labelWidth = data.width;                 }              }

Additionally; to hide the last label on the Y-axis you can use this:
`var data = {
labels: [1, 2, 3],
series: [[1, 2, 3]]
};
Chartist.Line('#chart', data, {
fullWidth: true
}).on('draw', function(context) {
if (context.type === 'label' && context.y < 0 ) {
context.element.remove();
}
});`

The best solution to this problem is just to add a css style to your svg:

overflow: visible;


Driver no longer starts

Describe the bug
I installed Victron version 2.90 and can no longer activate the driver.
Is there a known issue here?
I've installed the driver multiple times with no error messages.
Screenshots
/data/log/serial-starter/current:
...
@400000006328a6f70d2acbd4 *** CCGX booted (0) ***
@400000006328a6f927dfe89c *** starting serial-starter ***
@400000006328a6f935aab36c serstart starting
@400000006328a6f93655dbd4 INFO: loading config file /etc/venus/serial-starter.conf
@400000006328a70e2aeb1d2c INFO: loading config file /data/conf/serial-starter.d
@400000006328a70f29f4bedc INFO: Create daemontools service vedirect-interface.ttyUSB0
@400000006328a711209796fc INFO: Create daemontools service dbus-cgwacs.ttyUSB1
@400000006328a7122e71b794 INFO: Create daemontools service mk2-dbus.ttyUSB2
@400000006328a715316925a4 INFO: Start service vedirect-interface.ttyUSB0 once
@400000006328a7172a392e64 INFO: Start service dbus-cgwacs.ttyUSB1 once
@400000006328a718393d3c84 INFO: Start service mk2-dbus.ttyUSB2
@400000006328a73627be9944 INFO: Create daemontools service gps-dbus.ttyUSB1
@400000006328a73c3177db44 INFO: Start service gps-dbus.ttyUSB1 once
@400000006328a74606facfd4 INFO: Create daemontools service vedirect-interface.ttyUSB1
@400000006328a74c099233f4 INFO: Start service vedirect-interface.ttyUSB1 once
VenusOS (please complete the following information):

Raspberry Pi 4
Firmware Version 2.90

Battery/BMS (please complete the following information):

BMS/Battery type: 3 * Daly
Cells: 16
Interface: USB-RS485 via USB-HUB

@centro-max which version of the driver do you have? If you are not on v0.12 upgrade to at least that one and do a reboot.
From VenusOS 2.80 the firmware had some changes which changed how we needed to install the driver.

I have installed all available Versions, 0.12 and 0.12b3, nothing works. I can not explain, I also downgraded to Version 2.89 from a backup SD, a version which worked bevor well, the same result.
I disabled all 3 batteries because I remodeled, and after i switched them on the driver was gone. The bluetooth app is working fine, so the daly bms works well. could there be a problem with the USB-plug?

I don't see serial-starter trying to start the serialbattery on USB1, so that tells me it thinks serialbattery is not installed.
Run this command using v0.12b3 and reboot to see if serial-starter picks it up.

sh /data/etc/dbus-serialbattery/reinstalllocal.sh

I found the problem, one USB 3.0 Port of the raspberry pi 4 seems not to work any more. and the 4-port usb-hub in which all 3 daly-bms-usb were pluged in is defect also. i can't explain why the usb port and also the usb hub broke.

That is strange, but at least you know what the issue is now. Perhaps it might be worth while upgrading to isolated cables for your 3x BMS just to avoid any power spikes affecting your devices


Syntax error detected where there is not one

When try and compile the code
set i 0
getlink turret i
jump 0 strictEqual turret @null
radar player ally any distance turret 1 p
sensor x p @shootX
sensor y p @shootY
sensor s p @shooting
control shoot turret x y s
op add i i 1
jump 1 always x y

i get the error message
Error in test.txt
| syntax error at 8:1 near 'c' => expected label, instruction, or directive
|   at 8:1 near 'c' => OneOf

Error:

Ah wait, there was an uncaught error.
joy.


Add page to tree of contents

This page along with any similar samples should be added to the Document Tree on the left.

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

ID: 75f0b091-b6bd-4ff0-b959-920f84d26605
Version Independent ID: 8a474282-4882-07dd-132c-39833d4704d5
Content: D Simple List Page Example - Business Central
Content Source: dev-itpro/developer/devenv-simple-list-page-example.md
Service: dynamics365-business-central
GitHub Login: @jswymer
Microsoft Alias: jswymer

Thanks for the feedback! We have added links in the tree to this article and others. The update will be available soon.


Remove deprecated "box" arg from to_timedelta

The pudl.transform.epacems.py module uses the "box" keyword argument in to_timedelta which has been deprecated as of pandas 1.0. Update as needed to be compatible. See also #533

Hi,
I came across an error that says TypeError: to_timedelta() got an unexpected keyword argument 'box'. From a quick read at the traceback, it looks like related to this issue.
The Traceback is enclosed. For the context, i downloaded data for eia860, eia923 and epacems for year 2017 using pudl_data. Data is raw and located into pudl-work/data/. The corresponding yaml file for pudl_etl is also enclosed (minimal cusomization from the example file). I saved it as .txt since i was not allowed to upload it as .yaml
I hope this helps.
etl_example_custom.yml.txt
traceback_pudl.txt
Thanks


Handle safe_copy failing to hardlink on Windows due to too many existing links

Windows does support hard links, and os.link() supports Windows as of Python 3.2. There is a specific error that can be thrown on Windows when you try to create too many hardlinks to a file. Handle that case explicitly in its own test. It's more precise than trying to infer an errno for it which may be mapped to by various kinds of errors.

@akrieger thanks for the effort here. Much more is required however - in short, Pex does not support Windows yet. There is more recent commentary here: https://github.com/pex-tool/pex/issues/259#issuecomment-2049980527 but one very broken thing is file locking which Pex relies on in its cache handling. That is currently Posix-only. There are many other issue though, including handling venv .exe console script wrappers and more.
My basic stance is that I need green CI on a platform to support that platform. We don't have CI setup for Windows yet. I put a fair chunk of effort towards this in https://github.com/jsirois/pex/tree/Windows/wip ~2 years ago. I'm picking that up again, but you'll truly know when Pex supports Windows by looking here in the "Operating System" section: https://pypi.org/project/pex/ (or here: https://github.com/pex-tool/pex/blob/1921ba46ca378b537d6917f853b832d32eb80637/pyproject.toml#L38-L40)

Well, I wrote this because it fixed an issue we were having and I wanted to make sure no one else it hit too. When the project is ready to merge this, it'll be available.

Thanks. I'll make sure to include this in the initial Windows support release.

Well, I wrote this because it fixed an issue we were having and I wanted to make sure no one else it hit too.

The thing is, no one at all should be using Pex on Windows right now. I can't support it sanely without (green) CI or a Windows-using prospective Pex user providing that green CI baseline.


Implement Docker Receive App

This adds a docker-receive app which receives Docker images from docker push and creates corresponding artifacts, and flynn docker push which also deploys them to the cluster.
Running flynn cluster add ... will attempt to configure the local Docker client using docker login, but this can fail if the Docker daemon does not trust the Flynn cluster's CA certificate, in which case a warning is printed like:
WARN: docker configuration failed with a TLS error.
WARN:
WARN: Copy the TLS CA certificate /home/ubuntu/.flynn/ca-certs/default.pem
WARN: to /etc/docker/certs.d/docker.1.localflynn.com/ca.crt
WARN: on the docker daemon's host and restart docker.

Following the instructions then re-running the flynn cluster add ... command (or flynn docker login) should work.
Assuming things are configured, here is an example of deploying elasticsearch:
$ docker pull elasticsearch:2.3.3

$ flynn create --remote "" elasticsearch
Created elasticsearch

$ flynn -a elasticsearch docker push elasticsearch:2.3.3
flynn: getting image config with "docker inspect -f {{ json .Config }} elasticsearch:2.3.3"
flynn: tagging Docker image with "docker tag --force elasticsearch:2.3.3 docker.1.localflynn.com/elasticsearch:latest"
flynn: pushing Docker image with "docker push docker.1.localflynn.com/elasticsearch:latest"
The push refers to a repository [docker.1.localflynn.com/elasticsearch] (len: 1)
a8eb754d1a89: Pushed
6162aa7ca453: Pushed
...
4e59e6df754e: Pushed
3059b4820522: Pushed
latest: digest: sha256:1752ca12bbedb99734ca1ba3ec35720768a95ad83b7b6c371fc37a28b98ea351 size: 61216
flynn: image pushed, waiting for artifact creation
flynn: deploying release using artifact URI http://docker-receive.discoverd?name=elasticsearch&id=sha256:1752ca12bbedb99734ca1ba3ec35720768a95ad83b7b6c371fc37a28b98ea351
flynn: image deployed, scale it with 'flynn scale app=N'

$ flynn -a elasticsearch scale app=1
scaling app: 0=>1

18:05:38.308 ==> app fd8266b1-453d-4733-9417-2ad9ac33a418 pending
18:05:38.308 ==> app host0-fd8266b1-453d-4733-9417-2ad9ac33a418 starting
18:05:41.018 ==> app host0-fd8266b1-453d-4733-9417-2ad9ac33a418 up

scale completed in 2.728163927s

$ flynn -a elasticsearch run curl http://elasticsearch.discoverd:9200
{
  "name" : "Hate-Monger",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.3.3",
    "build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde",
    "build_timestamp" : "2016-05-17T15:40:04Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.0"
  },
  "tagline" : "You Know, for Search"
}

Closes #2763.

FYI I have moved request authorization into httphelper.IsAuthorized and in doing so replaced this explicit check for /ca-cert with this one, but this lead to a failure of this test.
I am unsure why we allow users to get the CA cert without authorization, but then return a 401 if they request it with an invalid key (my change just doesn't do an auth check for the CA cert path), so I have just removed the test.
@jvatic you introduced the logic in 4549ee4, do we need to return a 401 if the key is invalid, but serve it if there is no key provided?

We return a 401 so that users don't get a false-positive when using an invalid key even though /ca-cert is an unprotected endpoint. The key URL param was also limited to event streams and the /backup endpoint as basic auth can reasonably be used everywhere for all other requests.

We return a 401 so that users don't get a false-positive when using an invalid key even though /ca-cert is an unprotected endpoint.

Hmm I don't really see why we need to do that, if /ca-cert is unprotected, why would the user send an Authorization header? I guess we also set WWW-Authenticate in the response, but the user doesn't need to authenticate, so why not just give them the cert?

The key URL param was also limited to event streams and the /backup endpoint as basic auth can reasonably be used everywhere for all other requests.

Is there any harm in accepting either the header or the query param for all protected paths rather than special casing?

P.S. this discussion is not really related to this PR, let me know if you would rather I separated that change out into a different PR.

Hmm... I can't think of any strong reason to keep it the way it was.

@titanous comments addressed

Any ETA on when this will get merged? It's something we're really eager to see in our Flynn cluster soon. ;-)

@titanous comments addressed (I removed the refactor of controller / status auth, and changed docker-receive to always require auth and put the credentials in the artifact URI: 818412d)

@brettneese

Any ETA on when this will get merged?

Hopefully in the next few days :smile:

@titanous I have modified set-push-url to use a default (83f09a7) and also updated flynn export to export pushed images (ee9d2e3).

@lmars does backup/restore contemplates the docker images?

@imjorge since backup/restore backs up all the PostgreSQL databases, and these Docker images are being stored in PostgreSQL via the blobstore, yes a cluster backup/restore will manage these images.

LGTM!

👍 👍 👍 👍
Thanks gents.


AzureFileCopy - File Storage destination

Hi guys,
As near as I can tell, using this task to copy build artifacts to an SMB file store on an Azure storage instance (instead of a blob) seems impossible.
I have searched the existing issues for any mention of this and I didn't find it. If this is a duplicate or simply not true, I'd be happy to close this.
Advice please?
Regards,
Andre

I also wanted to add: if this task simply 'automates' AzCopy, supporting this should be a simple matter of generating a .file. destination url instead of a .blob. destination. If i'm correct here, is there any way to run AzCopy manually as a build task? I've considered executing a powershell script, but I see that this can't be done inline.

Apologies, I'm used to having the OK button to the left. This is still open.

Hi Andre,
Thanks for your feed back. Today we are not supporting Azure File Store destination. I have created a work item for the same and we will take that according to priority order.
You can use AzCopy tool using AzurePowerShell task. The task will take your subscription details as service end point and provide you a AzurePowerShell session. You can run a PowerShell script that will get storage key using AzurePS Command and use that key to run AzCopy tool. This can not be done inline, you have to pass the script path.
Please let me know if you need any help.
Thanks,
Nilkamal

Hi Nilkamal,
I appreciate the advice. It is good to know that I didn't diagnose this incorrectly then. What I can say however, is that you don't really need to support it.
I was able to utilize a 'Windows Machine File Copy' task step (effectively Robocopy) to get files into the share thanks to the SMB protocol it supports.
Regards,
Andre

Thanks for your reply.


New Python Template For Kafka2BQ and Kafka2GCS #552 #553

Created New Python Templates for Kafka to Bigquery and Kafka To GCS.
Updated README at required places.
Issue #552  #553

Also, please use separate PR for each issue.


Optimized for discord.js v13 and fixed some bugs

I optimized and updated everything to discord.js v13, v12 isnt supported anymore. Also fixed some bugs

Currently undergoing testing now.

Does this always take so long?

It's a known issue with Travis CI, be patient while a developer reviews this, thanks.

also after its merged the docker image should be rebuilded

I get this error when using docker version with the pr
npm ERR! missing script: azuri,
,
npm ERR! A complete log of this run can be found in:,
npm ERR!     /home/node/.npm/_logs/2021-08-22T09_11_43_408Z-debug.log

Should be fixed now, forgot to add the script in package.json

Testing some stuff with Dockerfile right now

Finnie fixed the Dockerfile :)

There is still 1 bug sometimes it randomly stops playing the stream

Its fully done now, i managed to fix the bug (After many tries) where the bot get disconnected and stops te stream after a few minutes

I made a typo


[$500] The expense chat doesn't scroll to bottom when we create a distance request

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.57-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @dukenv0307
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1711431374851699
Action Performed:

Go to a WS chat
Create a money request
Open the expense chat of the request
Send some messages or create other requests
Scroll to the top of the report
Create a distance request in this report
After creating this request, notice the report

Expected Result:
The report should be scrolled to the bottom as it's when we create other requests like manual or scan
Actual Result:
The report isn't scrolled to the bottom
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/41e3ab5b-383e-49bd-80c6-235182206434
https://github.com/Expensify/App/assets/38435837/759e5d5b-3a59-405b-a5fe-043eac729dd3

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01a3b77e7d3b5ad058
Upwork Job ID:<PHONE_NUMBER>332221952
Last Price Increase: 2024-04-02
Automatic offers:

dukenv0307 | Reviewer | 0

Proposal
Please re-state the problem that we are trying to solve in this issue.
The report isn't scrolled to the bottom
What is the root cause of that problem?
When we create a new distance request, we always notifyNewAction for the chat report. So if we create this in expense report, this doesn't scroll to bottom
https://github.com/Expensify/App/blob/ad1e214a36af16378bdcc8803c8e47b450485eee/src/libs/actions/IOU.ts#L1417
What changes do you think we should make in order to solve the problem?
We should do the same way as we do in requestMoney here to get the active report and then pass this to notifyNewAction function
https://github.com/Expensify/App/blob/ad1e214a36af16378bdcc8803c8e47b450485eee/src/libs/actions/IOU.ts#L2127
https://github.com/Expensify/App/blob/ad1e214a36af16378bdcc8803c8e47b450485eee/src/libs/actions/IOU.ts#L1417
What alternative solutions did you explore? (Optional)
NA

@dukenv0307 thanks for reporting this and volunteering to be the reviewer! Is "scrolling to the bottom of the report" a global behavior when other requests are created?

Actually, sometime when we open the report, the report doesn't scroll to bottom when we send any action. The RCA of this we're missing scrollToBottomForCurrentUserAction as dependency of this useEffect.
So if the time we open the report the last report action of the report isn't loaded, hasNewestReportAction is always false and then the report never scrolls to bottom.

@dukenv0307 Thanks for your feedback, I also can reproduce this. The RCA is here and I updated proposal https://github.com/Expensify/App/issues/39198#issuecomment-2025737953 with additional RCA and solution to fix this case.

@dukenv0307 I think we can do that, updated proposal https://github.com/Expensify/App/issues/39198#issuecomment-2025737953 to use ref for hasNewestReportAction.

@nkdengineer  A note on the proposed solution:
Instead of updating the ref in a useEffect, I think it is better if you update the ref right after this line:
https://github.com/Expensify/App/blob/6fb92cf3095fa17758a9199267509b0eccd019fd/src/pages/home/report/ReportActionsList.tsx#L199-L200
so it is never out of sync.
I'm assuming that you recommended to use a ref and not add hasNewestReportAction as a dependency of scrollToBottomForCurrentUserAction because if we do that, we would have to deal with the subscribe/unsubscribe here each time scrollToBottomForCurrentUserAction changes thanks to hasNewestReportAction changing. Is this correct @dukenv0307 ?

@dukenv0307 The PR is here

@johncschuster The PR was deployed to production a while ago, could you help with payments here 🙇

@johncschuster Gentle bump on the comment above

Working on this now

Payment has been issued to @dukenv0307 via Upwork.
@nkdengineer can you accept the invite to the job, here?

@johncschuster Done! thanks

Paid! Thanks for your patience!

@johncschuster We can close this issue now.


Trivial correction of error in documentation example

I signed it!

Thanks. It's landed, and will get mirrored to here.


interactive plots

We've seen that most people use the same subset of plots; hence, adding more plots does not yield more usage. We must think about how to make the most popular plots more useful. I'll keep editing this issue as I do more research.
confusion matrix

clicking on any quadrant in the confusion matrix could sample a few rows from such quadrant to the user can inspect them (looking at individual plots often provides good insights)
alternatively, we might want to provide a "profile" of all the observations in such quadrant (e.g., mean/media/percentiles for each feature). This can help the user find patterns in the errors (e.g., the model is making false positives for houses with prices >1M)

considerations
we can start building this step by step, and provide enhanced functionality to gauge interest. For example, we can offer a similar level of interactivity with an API like this:
from sklearn_evaluation import plot

cm = plot.ConfusionMatrix.from_raw_data(y_true, y_pred)

# get indexes of false positives (same for false negatives, true positives, and true negatives)
idx_fp = cm.get_fp()

# get the observations
X_test_fp = X_test.iloc[idx_fp]

# I think pandas has  function like this
X_test_fp.summary()

If we se that our users like this get_fp, then we can work on providing the interactivity so they don't have to perform all this filtering and slicing manually.
open questions

can we use plotly or something similar? or do we need HTML/JS/CSS?

did some research on this. wandb has an interesting confusion matrix viz that plots the counts along different epochs. Since confusion matrix is our most popular plot, we could try adding some interactivity.
looks like Altair is our best bet, here's an interactive heatmap

One interactive component we can add is triggering some action when users click on any of the quadrants. For example, we could show some statistics (range, min, max, percentiles) for the data points in such quadrant.


Warn users about E2E

As per https://github.com/vector-im/riot-web/issues/2277, we should be rejecting encrypted rooms for plumbing. We should also be warning the user that by turning on encryption, the bridge will stop working.

I'm going to close this for the reason that I don't think we can do anything better than what we are doing in the PR above.


[WIP] Throttling

Make sure you have checked all steps below.
Jira

[ ] My PR addresses the following Airflow Jira issues and references them in the PR title. For example, "[AIRFLOW-XXX] My Airflow PR"

https://issues.apache.org/jira/browse/AIRFLOW-XXX
In case you are fixing a typo in the documentation you can prepend your commit with [AIRFLOW-XXX], code changes always need a Jira issue.
In case you are proposing a fundamental code change, you need to create an Airflow Improvement Proposal (AIP).
In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

Description

[ ] Here are some details about my PR, including screenshots of any UI changes:

Tests

[ ] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[ ] My commits all reference Jira issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters (not including Jira issue reference)
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Documentation

[ ] In case of new functionality, my PR adds documentation that describes how to use it.

When adding new operators/hooks/sensors, the autoclass documentation generation needs to be added.
All the public functions and the classes in the PR contain docstrings that explain what it does
If you implement backwards incompatible changes, please leave a note in the Updating.md so we can assign it to a appropriate release

Code Quality

[ ] Passes flake8

@mik-laj  - shall we rebase/review/merge it ? Maybe we can still make it on time for 1.10.4 ?

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@45244e3). Click here to learn what that means.
The diff coverage is 0%.

@@            Coverage Diff            @@
##             master      #85   +/-   ##
=========================================
  Coverage          ?   10.72%
=========================================
  Files             ?      489
  Lines             ?    30721
  Branches          ?        0
=========================================
  Hits              ?     3294
  Misses            ?    27427
  Partials          ?        0

Impacted Files
Coverage Δ

airflow/contrib/hooks/gcp_speech_to_text_hook.py
0% <0%> (ø)

airflow/contrib/hooks/gcp_natural_language_hook.py
0% <0%> (ø)

airflow/contrib/hooks/gcp_translate_hook.py
0% <0%> (ø)

airflow/contrib/hooks/gcp_text_to_speech_hook.py
0% <0%> (ø)

...rflow/contrib/hooks/gcp_video_intelligence_hook.py
0% <0%> (ø)

airflow/contrib/hooks/gcp_api_base_hook.py
0% <0%> (ø)

airflow/contrib/hooks/gcp_vision_hook.py
0% <0%> (ø)

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 45244e3...1ac033e. Read the comment docs.


UnboundLocalError: cannot access local variable 'energy_level' where it is not associated with a value

Please use the updated version. 🔄


Enable feature flag "+crc" for iPhone

rel. #1

LZMA SDK uses ARM's CRC extension

https://github.com/mtgto/SevenZip.swift/blob/0.1.3/Sources/CsevenZip/7zCrc.c#L106

Armv8+ can uses CRC extension

https://developer.arm.com/documentation/101754/0620/armclang-Reference/armclang-Command-line-Options/-march

But Xcode disables crc feature while building for iPhone.

It is enabled for macOS

This pull request sets +crc feature flag for iOS.

v0.1.4 includes this pull request, but fails with an error The package product 'SevenZip' cannot be used as a dependency of this target because it uses unsafe build flags..
To avoid this compile error, you have to specify the git revision, not the git tag name.


Is this a scam website? I topped up five dollars, used only a few cents, and then my balance was cleared to zero. They are asking me to top up again.

Is this a scam website? I topped up five dollars, used only a few cents, and then my balance was cleared to zero. They are asking me to top up again.

same with me

same with me

It appears they have been updated the models recently.
This is the first time I have seen Alpaca and Code Alpaca as available models.
I am getting an error on every submission at the moment.

Inspecting the network traffic in firefox I am seeing that
there is a http status code response of 500 for:
https://nat.dev/api/all_models
and the sentry.io request is being blocked due to a CORS failure
https://o4504753889673216.ingest.sentry.io...

same as me

Please use Discord, as this is unrelated to OSS. DM me (Alex)


Look into more efficient proxy solutions to the target processes from the cloud functions

From @rauchg on July 10, 2017 5:17
For example:
https://github.com/GoogleCloudPlatform/cloud-functions-go/blob/master/local_modules/execer/execer.cc
Copied from original issue: zeit/now#12

@rauchg could you expand a bit more on this?

Thank you so much for the effort you have put into this issue! 😊
However, since we completely re-worked the entire codebase of Now CLI and this issue does not apply to the new code anymore, I'm closing it now.
You can read more about our biggest release yet here: https://zeit.co/blog/now-2


Error: Unexpected character '@' (Note that you need plugins to import files that are not JavaScript)

This error occurs when trying to parse the .grammar file:
Reproduction here: https://stackblitz.com/edit/node-rwuxbu?file=gjs%2Findex.html,gjs%2Ftest%2Fpreview.ts,package.json,gjs%2Fpackage.json,gjs%2Fsrc%2Findex.ts,pnpm-workspace.yaml,gjs%2Fsrc%2Fsyntax.grammar,gjs%2Fsrc%2Ftokens.ts,gjs%2Fsrc%2Fsyntax.grammar.terms.d.ts,dev%2Fwatch.cjs&file=src%2Findex.ts,src%2Ftokens.ts
steps:

wait for blitz to boot
open a new terminal -

(via the plus button)
cd gjs
run pnpm build
see error:

❯ pnpm build

><EMAIL_ADDRESS>build /home/projects/node-rwuxbu/gjs
> cm-buildhelper src/index.ts

Unused rule 'Text' (/home/projects/node-rwuxbu/gjs/src/syntax.grammar 15:2)
Error: Unexpected character '@' (Note that you need plugins to import files that are not JavaScript)
   at error (/home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:198:30)
   at error (/home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:12560:16)
   at tryParse (/home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:12937:25)
   at setSource (/home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:12842:24)
   at addModuleSource (/home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:22090:20) {
 code: 'PARSE_ERROR',
 parserError: [pp$4.raise@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:19551:13
 pp.getTokenFromCode@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:21213:8
 pp.readToken@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:20900:15
 pp.nextToken@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:20891:15
 parse@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:16673:8
 parse@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:16724:35
 contextParse@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:23090:38
 tryParse@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:12927:31
 setSource@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:12842:24
 addModuleSource@file:///home/projects/node-rwuxbu/node_modules/.pnpm/rollup@2.79.1/node_modules/rollup/dist/shared/rollup.js:22090:20
 ] {
   pos: 0,
   loc: Position { line: 1, column: 0 },
   raisedAt: 0
 },
 id: '/home/projects/node-rwuxbu/gjs/src/syntax.grammar',
 pos: 0,
 loc: {
   column: 0,
   file: '/home/projects/node-rwuxbu/gjs/src/syntax.grammar',
   line: 1
 },
 frame: '1: @top Document { entity* } \r\n   ^\n2: \r\n3: entity {\r',
 watchFiles: [
   '/home/projects/node-rwuxbu/gjs/src/index.d.ts',
   '/home/projects/node-rwuxbu/gjs/src/syntax.grammar'
 ]
}
 ELIFECYCLE  Command failed with exit code 1.

Adding a syntax.grammar.d.ts file with the contents:
import { Parser } from '@lezer/common';

export declare const parser: Parser;

resolved that error, but it seems the syntax.grammar.terms did not get generated 🤔

I don't think this should be closed, the DX here is pretty bad (rollup treating the grammar file as a js script, and not saying why, etc)
Is there maybe a linter tool that could check for these weird sorts of conventions that are required?

The build helper is a thing I use to build the library packages, not a tool that aims to have good UX. Sorry, but I don't have the energy to provide support for every hack I write.

As a consumer of codemirror/lezer should I be using a different technique for building? maybe with some specific rollup config / not using your personal build helpers?

Probably. See for example https://github.com/codemirror/lang-example


Interactive Fretboard (Hover/Click on Notes)

Add functionality that allows users to interact with the fretboard by hovering over or clicking notes to get details (e.g., note name, position)

added onClick for playing notes back


Various updates

@drvinceknight @Nikoleta-v3
Here's my take on the relative fitness narrative -- if you don't think it's sufficient we can leave it out. Generally the literature looks at whether a strategy fixates with a probability higher than a neutral mutant as a judge of whether it's better than the opponent. In most explicit cases this seems to imply that the player would also win at other starting points (i, N-i), but as the examples I sent via email show, the reality is more complicated. We can explain it either by showing that x_i - i/N isn't always the same sign, or we can use the effective relative fitness and say it depends on i. Additionally the values of r_i show how much a strategy benefits (or is hurt) by having a larger subpopulation -- for TFT vs defector r_i is increasing in i, but for ZDExtort it's not since it doesn't play well against itself. To me, r_i is an easier quantity to think about than phi_i.
Things that seem fishy

Table 4: The top strategies list shuffles in a way that I wouldn't expect. Could it be noise in the fixation probabilities?
Tables 6 and 7 are too similar -- seems unbelievable
Figure 11  doesn't agree with the tables presented above -- for example see Collective Strategy, it should be near the top throughout
Figures 12 and 13 are off as well -- the lines from left to right do not appear to be correct. For example Collective strategy on the left doesn't run to CS on the right. Many of the strategies on the right don't have any line into them.
Figure 16 (d) -- the strategies are neutral so the plot is just the computational noise. Same for (g)
We claim that 1000 outcomes is enough for the approximate process since the max unique outcomes is less than 1000, but the distribution matters as well, right? Not all the outcomes are equally likely.

Things I vote to change or remove:

We should use the standard abbreviations of the strategies after the first use -- TFT, CS for Collective Strategy, etc.
rm Table 2
For figures 3 and, it may be better to have plots where a single strategy is up against several others, plotting x_1 for each (and 1/N for comparison), and separate plots for x_{N/2} and x_{N-1}.
For figure 3 the strategy choices are good -- I suggest Defector versus Defector, Alternator, Cooperator, TFT, and WSLS, with i/N plotted as the reference line as described above.
For Figure 4 I suggest: Cooperator, Random, the top ZD, GTFT, Worse and Worse 2. This removes some of the lesser known strategies and prevents us from having to explain them, and also should be a better validation for readers familiar with the common strategies
We should use "short names" without the parameters in the tables and figures (but keep the parameters in the strategy list at the end)
Figure 6: In figure 6 (b) is the more interesting, so we should give it the full width. I recommend leaving off plot (a). In general the plots are too compressed. I vote to remove the Moran diagram (the lower one in figure 6). The diagram in the introduction is sufficient IMO.
Figures 8 and 10 -- I think we should consider dividing by (1 / N) to center the plots uniformly
Figure 14 / Table 9: Maybe just the heatmaps for x_1 and x_{N-1} are sufficient to make the point that the N=2 ranks don't correlate well with the higher ranks
Re: the analytical formula for fixations, it would work if we instead estimated transition probabilities directly rather than use an average fitness. It's not practically any easier but the current framing misses this nuance.

Finally, an important discussion point. If we used mean instead of median for the fixation plots is the result very different? I know I used median originally but mean may be better since it's a better generalization of how effective a strategy is overall at invading or defending. This is an important choice since it changes the order of "best" in some cases -- some distributions are very skewed. This may also explain the FSM players since they were trained to maximize the mean, and they skew rightward more in the plots.

Opening an issue to capture all these points :+1:


POST requests being cached

I have configured the following caching strategy in the configuration file:
class Cache
  def get(request)
    Rails.cache.read(request)
  end

  def set(request, response)
    Rails.cache.write(request, response)
  end
end

Typhoeus::Config.cache = Cache.new

It works as expected for GET requests but I have just noticed it is also caching POST requests. Is this the default behaviour? How can I disable the cache for POST/PUT requests?

Why not do the check in the cache?
Seems to me like the Typhoeus cache is application level, not protocol level, it doesn't care whether or not a request is idempotent or not.

I agree. Although in most cases you will not want to cache POST request it is better to let the developer take that decision.
This workaround did the trick:
class Cache
  def get(request)
    Rails.cache.read(request)
  end

  def set(request, response)
    return if request.headers['Cache-Control'] =~ /no-cache|max-age=0/
    Rails.cache.write(request, response)
  end
end


Add Network Aliases

@RomanCht Please update all documentation with new properties.

@RomanCht Please update all documentation with new properties.
@Fameing Done, thank you!


Add Pop-up Effect on Clicking Buttons (#54)

Description:
This PR addresses Issue #54, where the task was to add a pop-up effect when buttons are clicked. The following changes were made:
Button Animation:

    Implemented a smooth pop-up effect that triggers when a user clicks on the buttons in the hero section.

    The animation gives a dynamic and interactive feel to the buttons.

Changes Made:

Added CSS and JavaScript to create the pop-up effect on button clicks.

Ensured smooth transitions and a responsive feel.

Related Issue:
This PR closes #54.

Co-authored-by: Mohitranag18<EMAIL_ADDRESS>Co-authored-by: aditya-bhaumik<EMAIL_ADDRESS>

Resolve conflicts please check at evening

conflict is resolved sir, you can check now.


Results with underscores (e.g. _count) are inaccessible by Dart

Current:
If we use:
include: {
  _count: {
    select: {
      groupContents: true,
      groupMembers: true,
    },
  },
},

The json output would be
{
  "_count": {
    "groupContents": 0,
    "groupMembers": 0
  }
}

The problem is some programming languages like dart treat underscore as private variables. This can be cumbersome and leads to making custom serializer just to handle this kind of scenario.
Propose: Add the ability to alias the _count field name to something...
include: {
  _count: {
    as: "stats",
    select: {
      groupContents: true,
      groupMembers: true,
    },
  },
},

The json output would be
{
  "stats": {
    "groupContents": 0,
    "groupMembers": 0
  }
}

Another example would be like this, together with :
include: {
  _count: {
    as: "stats",
    select: {
      groupContents: [],
      groupMembers: true,
    },
  },
},

If you are looking for a workaround right now: You can probably mess with the returned data in a middleware https://www.prisma.io/docs/concepts/components/prisma-client/middleware and rename the field, although that might of course make the types unhappy.

Thanks for sharing this use case!
To recap: Dart treats _count as a private field that you can't access, however our API returns fields with underscores, so we'll need a way to alias underscored results with something else.

@sandbox-apps Do you use Prisma in Dart? This is great, I have been looking for ways to use Prisma in Dart.

Note: This issue tracks the general request to be able to alias _count: https://github.com/prisma/prisma/issues/9004


Fixed typo in README.md

The value for the source property in the README usage example was misspelled.

Good catch, thanks!


[stable/kibana]bump kibana to 6.7.0

What this PR does / why we need it:
Bump kibana to 6.7.0
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md

/test pull-charts-e2e

/test pull-charts-e2e

@cpanato my preference is to get #12200 in which does the version bump but also fixes a small deprecation (and is a new contributor to the chart :smile: ).

/retest

@compleatang sounds good to me, will close this :)


Remove unused FeatureRDD.sortByReference.

Found this when working on #1590.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/ADAM-prb/2185/Build result: FAILURE[...truncated 15 lines...] > /home/jenkins/git2/bin/git fetch --tags --progress https://github.com/bigdatagenomics/adam.git +refs/pull/:refs/remotes/origin/pr/ # timeout=15 > /home/jenkins/git2/bin/git rev-parse origin/pr/1596/merge^{commit} # timeout=10 > /home/jenkins/git2/bin/git branch -a -v --no-abbrev --contains 5e573bdd206f01dfd3c44b8b34ae9cca5e88bb88 # timeout=10Checking out Revision 5e573bdd206f01dfd3c44b8b34ae9cca5e88bb88 (origin/pr/1596/merge) > /home/jenkins/git2/bin/git config core.sparsecheckout # timeout=10 > /home/jenkins/git2/bin/git checkout -f 5e573bdd206f01dfd3c44b8b34ae9cca5e88bb88First time build. Skipping changelog.Triggering ADAM-prb ? 2.3.0,2.10,1.6.1,centosTriggering ADAM-prb ? 2.6.0,2.11,1.6.1,centosTriggering ADAM-prb ? 2.6.0,2.10,2.0.0,centosTriggering ADAM-prb ? 2.6.0,2.10,1.6.1,centosTriggering ADAM-prb ? 2.6.0,2.11,2.0.0,centosTriggering ADAM-prb ? 2.3.0,2.11,1.6.1,centosTriggering ADAM-prb ? 2.3.0,2.11,2.0.0,centosTriggering ADAM-prb ? 2.3.0,2.10,2.0.0,centosADAM-prb ? 2.3.0,2.10,1.6.1,centos completed with result FAILUREADAM-prb ? 2.6.0,2.11,1.6.1,centos completed with result FAILUREADAM-prb ? 2.6.0,2.10,2.0.0,centos completed with result FAILUREADAM-prb ? 2.6.0,2.10,1.6.1,centos completed with result FAILUREADAM-prb ? 2.6.0,2.11,2.0.0,centos completed with result FAILUREADAM-prb ? 2.3.0,2.11,1.6.1,centos completed with result FAILUREADAM-prb ? 2.3.0,2.11,2.0.0,centos completed with result FAILUREADAM-prb ? 2.3.0,2.10,2.0.0,centos completed with result FAILURENotifying endpoint 'HTTP:https://webhooks.gitter.im/e/ac8bb6e9f53357bc8aa8'
Test FAILed.

Coverage decreased (-0.6%) to 83.607% when pulling f90388bf49e6825c6fe83e5882e54ca27e374dd4 on fnothaft:remove-featurerdd-sortbyreference into acb0c0731da1644c8222fa5af4926d54e93a9885 on bigdatagenomics:master.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/ADAM-prb/2186/
Test PASSed.

GFF3 files like those provided by Ensembl with full gene models have deeply nested, overlapping, and identical-by-region features.  I found sort order to not be consistent without the deep feature ordering.

@fnothaft What milestone should we have this set for?

@devin-petersohn this is low priority; 0.24.0 is fine.


Win 81 listener state not listening [not supported]

my system is windows 8.1  and my listen state is not listening [not supported] and the RDP check is socket connection failed . would someone help me?

Add the offsets from 6.3.9600.19318.txt from https://github.com/fre4kyc0de/rdpwrap to your RDPWrap.ini

the listener state is [fully supported] while not listening

the listener state is not listening [fully supported] now

Add the offsets from 6.3.9600.19318.txt from https://github.com/fre4kyc0de/rdpwrap to your RDPWrap.ini

Win 8.1 x86 or x64?
Working fine here on x64

Win 8.1 x86 or x64?
Working fine here on x64

well, x64. by the way, add the offsets mean "add the texts in the file "?

Correct

works after reinstallment. thanks

the listener state is not listening [fully supported] now

Add the offsets from 6.3.9600.19318.txt from https://github.com/fre4kyc0de/rdpwrap to your RDPWrap.ini

Please.... the link is not available.

@cakexxx  could you share the config? the link is not available

It's not clear of version. No screenshot, no file provided


improvementUsing table serialization on the jni side

advantage:

Reduce the access to HMS and HDFS on the JNI side.
There will be no inconsistency between the fe and be tables.

run buildall

run buildall

run feut

run external

run buildall


Stitcher Class

Any chance https://docs.opencv.org/3.4/d2/d8d/classcv_1_1Stitcher.html will be included in this library?

Also interested in adding this if possible 🙏 ^_^


Set title of quickfix/locationlist window

It would be useful to see there which checkers have been run.
See https://github.com/ervandew/ag/pull/14/files (using try/catch for a more enhanced setqflist/setloclist) and https://github.com/scrooloose/syntastic/blob/c4c610c26cec14e823aebdbb1c36ce15e8f3ec56/plugin/syntastic/loclist.vim#L312-329 for ways to do so.

Added an issue to neovim: https://github.com/neovim/neovim/issues/4279
FWIW, I hacked around this with: https://github.com/nerdrew/neomake/commit/60836329f36c6ad3810f04f9650e0661109031bb

Neovim added support for it in https://github.com/neovim/neovim/pull/4337.
I am seeing the following (via airline) currently:

Location  :        lgetexpr '' 

Closing this in favor of #316.


[ENH] Add CLIP Text Embedder

Description of changes

New functionality

Add CLIP Text Embedding functionality

Test plan
How are these changes tested?

[x] Tests pass locally with pytest for python, yarn test for js

Documentation Changes
TBD

Nice idea, I'd like to understand more about the use-case for having only CLIP text embeddings.
How are you using this?
We are working on supporting multi-modal embeddings so that we can support images out of the box too (so you can also use CLIP with images and text), but this has the complication that we need a way to address the place where the images are stored, see the pipeline CIP here: https://github.com/chroma-core/chroma/pull/1110

Yes, I wrote that part because text is currently supported, but we can think like this.
I am currently developing a project, people do reverse image search, they upload photos, and I compare the two by this calculated image embedding and precalculated clip text embeddings where I stored on chromadb.

I agree, I think for multi-modal embedding models we will want to support both paths independently, with pydantic types for validation.
I think for now, we don't want to support only one of the two modalities of CLIP as a built-in to the project. Fortunately, it's straightforward for any project using Chroma to implement the EmbeddingFunction interface as you've done here.
Closing this PR in anticipation of the future built-in multi-modal functionality.


chore(python-runtime): remove pinned version of libexpat

security scan https://github.com/keptn/lifecycle-toolkit/actions/runs/11774540450


Allow specifying exclusion tags

The new s3 nuking capability has a built in mechanism to ignore any buckets that have the tag cloud-nuke-excluded. We should consider extending this to other resources.
See https://github.com/gruntwork-io/cloud-nuke/pull/101#discussion_r402139387 for more context and suggestions.

FYI (related): I filed a spec proposal at #109 which would add global tag-based resource exclusion as an option.

The exclusion tag has been implemented here https://github.com/gruntwork-io/cloud-nuke/pull/570. Closing this PR.


RFC: Allow for static, freeable, String for fast handoff to Ruby

So I've been thinking about devising a mechanism to hand off a Rust String to Ruby in a way that:

Avoids any memcpy on the Ruby side
Freeable by the Ruby GC (so we don't leak memory)

This would allow for extremely fast, zero-copy handoffs of strings to Ruby.
I have a proof of concept in this PR, and I think it's close. The issue I'm running into is since RString implements Copy (and wisely so, I think), it is possible to attempt to access a potentially freed pointer on the RString.
Unfortunately, I do not really know of a good way around it... Was curious to hear if you had any ideas or thoughts 😄

It would be so cool if it was possible to get this working.
The following is me just writing things out as I'm thinking though it, sorry it's long and rambling.
For some reason I was under the impression that Ruby strings (despite storing their length) had to be NULL terminated, but now I can't find any reference to that.
There are a bunch of references to the Ruby itself creating NULL terminated strings (example), but nothing saying they must be, and other docs seem to suggest there's no guarantee.
If that's not an obstacle, then it's the freeing the string that's the tricky part.
It's not safe for Ruby to use its allocator to free memory Rust has allocated, as there's no guarantee they are the same allocator.
As soon as the RString is created (yep, before it's even returned, thanks to ObjectSpace) it's basically impossible to know who has a reference to it, so there's no way to take it back from Ruby.
I think the safe way would be to use a finaliser, this is basically how Ruby lets you handle freeing C/Rust data 'wrapped' in a Ruby object. Finalisers are called some time after the object has been GC'd so you know Ruby doesn't have any references, and neither should any (correctly written) C/Rust extensions. Unfortunately the finaliser API for plain Ruby objects isn't great, and I've not implemented the API for it yet.
The signature is
VALUE rb_define_finalizer(VALUE obj, VALUE block);

so you first have to construct a block, which has the signature
VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg);

where rb_block_call_func_t is a function with the signature
VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)

So the finaliser block is called without any arguments, so yielded_arg and blockarg will be nil, and with argc 0 and argv NULL, so we can ignore everything apart from callback_arg.
So we get to provide a function pointer func and a callback_arg that will be passed to func when it's time to finalise the object.
If we just had some data on the heap in a Box this'd be great, we'd turn the Box into a pointer, pass that as callback_arg, then func would be a function that turns the pointer back into a Box and then drops it.
The problem with String is it's not just a pointer, it's a pointer, a length, and a capacity, and we can't fit that into callback_arg.
Ruby has a few APIs like this, and the way to work around it is you pass a pointer to a closure as callback_arg, then func invokes the closure. Rust closures are basically structs containing all the variables they have captured. The size is known at compile time, so they are can be a thin pointer, and can carry along whatever sized variables they want.
This is easy in say rb_protect where the function/closure will be invoked immediately, you can just give a pointer to the closure on the stack. However with the finaliser the function/closure will be invoked at some point in the future, we can't use a stack pointer. This means we have to Box the closure.
Aside: I have just realised I screwed up Value::block_call and Proc::new, and they should Box their closure, and then have a finaliser to drop it. I need to fix that.
Once we're heap allocating a closure, and relying on Ruby's finaliser API, which isn't really designed to handle more than a small amount of finalisers, and slows down the GC, it might be that we've lost the benefits of not copying the string.
But if you'd still like to give it a try, I think the function for setting a finaliser should have the signature (in the gc mod)
pub fn define_finalizer<T, F>(value: T, func: F) -> Result<(), Error>
where
    T: Deref<Target = Value>,
    F: FnOnce(),
{
    todo!();
}

It could probably just use Proc::new to convert func to a proc, assuming Proc::new is fixed.
and then you could do something like:
// I think this name and signature make it clear it's taking ownership of `s`
// to convert it to a `Self`
pub fn from_string(s: String) -> Self {
    let ptr = s.as_ptr();
    let len = s.len();
    let r_string = unsafe { Self::new_lit(ptr as _, len as _) };

    // as far as Rust knows the ownership of `s` is moved into the
    // finaliser and it'll leave the memory `s` points to alone until
    // the finaliser is run. The finaliser func doesn't do anything with
    // `s`, it'll just drop it once it's run.
    // The finaliser is run some time after the string is GC'd, so nothing
    // will still be using it
    crate::gc::define_finalizer(r_string, move || {
        // I think this is how you'd force something to move into a closure
        // but I don't remember and haven't tested this
        let _s = s;
    }).unwrap(); // define_finalizer can fail, we don't expect it to here

    r_string
}

Some other things to check would be how this interacts with cloning/duping the string in Ruby, and methods that return copy-on-write references to the original string (I think #slice does this).

I figured out another way to tie the lifetime of some Rust data to a Ruby object.
Using rb_data_typed_object_wrap you can wrap some data (behind a pointer, so you do need to allocate) in a Ruby object. If you pass 0 as the class the object won't have a class, so can't be seen by ObjectSpace. You can then set that object as an instance variable of the object you want to associate its lifetime with. If you use a name for the instance variable with the @ prefix it's invisible to Ruby.
There an example in these changes: https://github.com/matsadler/magnus/commit/91ee513d4daab63d5061af1f90a4ca117d87d6db#diff-676d4870958cd433b65507e695efedb29f7a535ba9551cf276e21f1b8e2f25eaR149

For some reason I was under the impression that Ruby strings (despite storing their length) had to be NULL terminated, but now I can't find any reference to that.

I'm pretty sure the strings do not have to be null terminated, since it is actually fully possible to store null bytes in a Ruby string.

It's not safe for Ruby to use its allocator to free memory Rust has allocated, as there's no guarantee they are the same allocator.

Can you give an example here?

Just a note that I do plan to get back to you on this, but my personal life (newborn baby) is currently occupying all my time.

Congrats on the newborn! Take your time far the most important things ❤

It's not safe for Ruby to use its allocator to free memory Rust has allocated, as there's no guarantee they are the same allocator.

Can you give an example here?

So I'm far from an expert, I don't even really have any hands on experience, I'm just piecing things together from what I've read.

Let's make sure we're on the same page to start.
My understanding of the code here is that we're using rb_utf8_str_new_static (via the undocumented RString::new_lit) which creates a new Ruby String object header that points at an existing memory buffer for the actual contents of the string.
rb_utf8_str_new_static assumes the pointer it's given is to a string literal that is stored statically in a different memory segment, so will also mark the String object with the STR_NOFREE flag so when the String object is GC'd it will skip freeing the buffer containing the string data.
The changes also provide a method to clear the STR_NOFREE flag, so that the buffer will be freed on GC.
So we start with something like this:
                |
---Rust Stack---+---Rust Heap-----------------
                |
   +--------+   |
   | String |   |
   +--------+   |
   | ptr ---+---+---> "Hello, world!"
   | len    |   |
   | capa   |   |
   +--------+   |
                |

Then we call rb_utf8_str_new_static(s.as_ptr, s.len()) and end up with this:
                |
---Rust Stack---+---Rust Heap-----------------
                |
   +--------+   |
   | String |   |
   +--------+   |
   | ptr ---+---+---> "Hello, world!" <---+
   | len    |   |                         |
   | capa   |   |                         |
   +--------+   |                         |
                |                         |
---Ruby Stack---+---Ruby Heap-------------+---
                |                         |
   +-------+    |     +--------+          |
   | Value +----+---> | Object |          |
   +-------+    |     +--------+          |
                |     | flags  |          |
                |     | klass  |          |
                |     +--------+          |
                |     | len    |          |
                |     | ptr ---+----------+
                |     | capa   |
                |     | shared |
                |     +--------+
                |

Then we forget the Rust string and get:
                |
---Rust Stack---+---Rust Heap-----------------
                |
                |     "Hello, world!" <---+
                |                         |
---Ruby Stack---+---Ruby Heap-------------+---
                |                         |
   +-------+    |     +--------+          |
   | Value +----+---> | Object |          |
   +-------+    |     +--------+          |
                |     | flags  |          |
                |     | klass  |          |
                |     +--------+          |
                |     | len    |          |
                |     | ptr ---+----------+
                |     | capa   |
                |     | shared |
                |     +--------+
                |

The boundary between the "Rust Heap" and "Ruby Heap" is kind of weird, as everything is running in the same process, so it's the same heap, but there is potential for the memory to be managed by different allocators.
Ruby's configure script has an option to compile with jemalloc, and before that was added it was a common optimisation to patch Ruby with a faster allocator (usually the same jemalloc).
Rust used to exclusively use jemalloc, but as of 1.28 the GlobalAlloc trait was stabilised and now it's pretty trivial to swap to another allocator. As of 1.32 the default allocator changed to the system allocator.
These two together mean that while it's pretty common for both Ruby and Rust to be using the system allocator, it's also quite possible they will be using different allocators.
The really hard part is knowing when both are using the same allocator. It's not really possible when developing a publicly available extension gem - users can do what they want. I'm not sure documenting it is even enough - I don't think there's many developers at my job who realise the Ruby we're using in production has been compiled with jemalloc.
There's lots of bits of documentation that suggest memory allocated with a particular allocator should only ever be freed with the same allocator's free function. For example, Ruby's ruby_xmalloc, ruby_xfree, and Rust's GlobalAlloc::dealloc all make claims to that effect.
A particularly good example is Rust's (currently unstable) String::into_raw_parts which says:

After calling this function, the caller is responsible for the memory previously managed by the String. The only way to do this is to convert the raw pointer, length, and capacity back into a String with the from_raw_parts function, allowing the destructor to perform the cleanup.

This is particularly relevant, as what we're trying to do here is the kind of thing String::into_raw_parts looks like it's designed for.
My rough understanding of why one allocator can't free memory allocated by another is that the two allocators could have different internal bookkeeping, and freeing memory an allocator is unaware of could corrupt that bookkeeping.
For example, say allocator A just directly makes syscalls to request memory for each allocation, and allocator B pre-allocates a block of memory, then hands out chunks of that for each allocation. Allocating with A and then freeing with B will corrupt B's record keeping.

So to me this all adds up to, there's no guarantee the allocator Rust uses to allocate the string and the allocator Ruby uses to free the string are the same, so there's no way to safely do what these changes are currently doing.
The safe way would be to - when Ruby is done with the string - reconstitute it into a Rust String, then drop it. The obvious api for this is Ruby's finalisers, but after a quick benchmark the finaliser API is devastatingly slow so of no use in this case.
The other workaround I can think of - wrapping a Rust struct holding the string in a Ruby object and assigning that to an ivar of the String that'll be GC'd at the same time as the String - is also too much of a slowdown to be useful.
Part of the problem seems to be, there isn't actually that big of a speedup to be gained - the conversion from Rust String to Ruby String is already pretty quick. So there's basically no room for a workaround for freeing the string.

I'd still love to find a way to get this working1, I just can't see a path to it myself.
1. The reverse of this, RString::as_str, is one of my favourite bits of Magnus, so it'd be awesome to go both ways.

This has got me thinking…
In rb-allocator we decided to simply report memory usage due to ruby_xmalloc trigger GC runs (which will cause bad things to happen with Rust Rc‘s and such.
We even thought that reporting the memory usage might be unsafe, but it turned out GC is not triggered if  realloc flag was set.
I wonder if we used ruby_xrealloc in place of ruby_xmalloc (via using a null ptr), we we can avoid GC being triggered during allocation.
Although dubious, if that’s the case we may be able to use the same allocator in Rust + Ruby…

There's a currently unstable Rust feature called allocator_api that adds an Allocator trait (as opposed to GlobalAlloc) and new_in functions for a number of collections for creating that type with a specific allocator. Here's the PR for String: https://github.com/rust-lang/rust/pull/79500.
The especially useful part is the allocator becomes a type parameter (with a default of Global), so we could add a method like:
pub fn from_string(s: String<RbAllocator>) -> RString {
    ...
}

and our requirement that the string has been allocated with the same allocator as Ruby is enforced by the type system.
The allocator_api feature also solves the problem rb-allocator was having, as you can pick and choose when you use that particular allocator, rather than having it faced on everything globally, so you can just no use it in the places where it'd cause problems.
But I guess we'd be waiting on the Rust PR to add allocator support to String before it's even possible to prototype this on nightly.

So I stumbled upon another interesting way to do this type of thing. Fiddle::MemoryView#to_s creates a static Ruby string and sets an ivar on the RString to reference the memory view.. This pattern should allow for zero copy string views.


backticks in Mac OS are dodgy..

This is not an issue I can debug, and it is bloody irritating!
In order to type backticks, I have to do a ` and then a left arrow on my keyboard, to get the closing backtick. As a note, this does not happen in VSC, and I can type backticks normally.

Thanks for reaching out!  Filling out the issue template is super helpful for us since it provides basic details like what version of Atom are you running (atom -v), what OS version are you running, etc.  Please open a new issue with the template filled out or edit the issue body and we can go from there.
Also, can you clarify what you mean when you say:

In order to type backticks, I have to do a ` and then a left arrow on my keyboard, to get the closing backtick.

Maybe a GIF or screencast of the behavior you're seeing might be helpful.

We require the template to be filled out on all new issues and pull requests so if you can open a new issue with the template filled out, that would be helpful for us. We do this so that we can be certain we have all the information we need to address your submission efficiently. This allows the maintainers to spend more time fixing bugs, implementing enhancements, and reviewing and merging pull requests.
Thanks for understanding and meeting us half way :grinning:

There are no error messages, or anything.


HBASE-28150 CreateTableProcedure and DeleteTableProcedure should slee…

…p a while before retrying

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 35s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ master Compile Tests _

+1 :green_heart:
mvninstall
2m 59s
master passed

+1 :green_heart:
compile
2m 28s
master passed

+1 :green_heart:
checkstyle
0m 37s
master passed

+1 :green_heart:
spotless
0m 44s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 31s
master passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 38s
the patch passed

+1 :green_heart:
compile
2m 29s
the patch passed

+1 :green_heart:
javac
2m 29s
the patch passed

+1 :green_heart:
checkstyle
0m 35s
the patch passed

+1 :green_heart:
whitespace
0m  1s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
9m 21s
Patch does not cause any errors with Hadoop 3.2.4 3.3.6.

+1 :green_heart:
spotless
0m 43s
patch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 37s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 12s
The patch does not generate ASF License warnings.

32m 21s

Subsystem
Report/Notes

Docker
ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5502/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/5502

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux 42eca163595c 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
master / fa4c8960e5

Default Java
Eclipse Adoptium-11.0.17+8

Max. process+thread count
79 (vs. ulimit of 30000)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5502/1/console

versions
git=2.34.1 maven=3.8.6 spotbugs=4.7.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

Any updates here?

Ping @chaijunjie0101

Ping @chaijunjie0101

i am so sorry, i forget it... i will fix it as soon as possible.

@bbeaudreault thanks for suggestting

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 23s
Docker mode activated.

The 2 failed UT seems not related to this MR

The 2 failed UT seems not related to this MR

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 26s
Docker mode activated.


Reopen closed PR for REST Spec PrNumber 5801

Reopening PR as advised which was closed due to restructuring changes:
https://github.com/Azure/azure-sdk-for-net/pull/6002

this PR is not correct, it's still pointing to old directory structure.


Does not work in Safari

Reverb Version
1.0.0-beta2
Laravel Version
11.0.5
PHP Version
8.3.3
Description
Laravel Reverb works fine in Chrome and Firefox but does not seem to work at all in Safari for me
Steps To Reproduce
Install Reverb, test in Chrome, FF, and Safari. Safari does nothing.

Hey @fylzero Can you ensure you have REVERB_HOSTNAME=localhost in your environment file rather than <IP_ADDRESS>

@joedixon I have it set to the Herd/Valet domain. myapp.test as I am using this with a Herd SSL and the instructions on the Herd page say to do this. I have tried localhost and <IP_ADDRESS> and they do not work with SSL at all.

I just woke up and responded too quickly. I actually did not get SSL working with Herd/Reverb. I will try changing this again today and see if it resolves thr Safari issue.

Turns out Safari kept forcing my http connection to https and I didn't notice since scheme is hidden in the URL bar. Confirmed Safari is working. Thanks!


Not working on Ubuntu 21.10.

Hello!
I'm on Firefox 96.0b10 (not the snap version, but instead the beta found here: https://launchpad.net/~mozillateam/+archive/ubuntu/firefox-next).
I've installed the GNOME extension and Firefox add-on as instructed and installed the connector from releases.
I'm not seeing any tabs when searching in GNOME. Please let me know how I can troubleshoot this issue.
Thank you for such a great project!

Thanks Nice catch!!
Does following commands work?
# create link for file from lib64 to lib
sudo mkdir -p /usr/lib/mozilla/native-messaging-hosts/
sudo ln -s /usr/lib{64,}/mozilla/native-messaging-hosts/com.github.harshadgavali.tabsearchproviderconnector.json

That fixed it! Thank you!