Allow use of a model attribute as the row's selected state property

If possible, it would be great to be able to specify the name of an attribute on a row's associated content/model that is used to hold the row's selected state, with the actual row.selected property just becoming a computed alias of that.
Currently, you need to jump through a few hoops, setup observers/ect, if you want to persist row selection state on the row models and keep them in sync (e.g. when models are added to the table and are already in a selected state).
Additionally, I think it could make sense to expose row selection/deselection actions that get fired passing the array of affected rows to the action handler, instead of only being able to observe the table.selectedRows property. This would be useful for executing side effects, like saving selection state changes to the backend, as opposed to trying to use a table.selectedRows observer where its harder to determine what changes actually occurred.

@billdami this is something that needs to be implemented correctly and optimally or it could have some detrimental affect on the performance of the overall table component. I'll take a look into this when I have some free time. Hopefully sometime this week.

@offirgolan Yeah definitely agree that it would need to be done in a way that doesn't cause any unwanted side effects. If you weren't able to get to this I was thinking about taking a stab at it myself, so just let me know! :)

@billdami can you share some of your code on how you are handling the row selected state? Maybe we can find a better way and if not, we can discuss what the best approach is to solving this issue.

Here's some of the relevant bits within my generic table component which wraps ember-light-table and is used by various controllers/templates in my app:
export default Ember.Component.extend({
  eventBus: Ember.inject.service(),

  init() {
      this._super(...arguments);
      this.set('table', new Table(this.get('currentColumns'), this.get('models')));
      this.get('tableActions').removeRow = Ember.$.proxy(this.get('actions').removeRow, this);
      this.get('eventBus').subscribe('selectAllRows', this, 'selectAllRows');
      this.get('eventBus').subscribe('deselectAllRows', this, 'deselectAllRows');
      this.setSelectedRows(this.get('models'));
  },

  onDestroy: Ember.on('willDestroyElement', function() {
    this.get('eventBus').unsubscribe('selectAllRows');
    this.get('eventBus').unsubscribe('deselectAllRows');
  }),

  onModelsChange: Ember.observer('models', function() {
    this.get('table').setRows(this.get('models'));
    this.setSelectedRows(this.get('models'));
  }),

  fetchMoreRecords() {
    this.set('isLoading', true);
    this.attrs.fetchRecords().then((models) => {
      this.get('table').addRows(models);
      this.setSelectedRows(models);
      this.set('isLoading', false);
    });
  },

  selectAllRows() {
    this.get('table.rows').setEach('selected', true);
  },

  deselectAllRows() {
    this.get('table.selectedRows').setEach('selected', false);
  },

  setSelectedRows(models) {
    if(Ember.isArray(models)) {
      let selectedModels = models.filterBy('isSelected', true);
      selectedModels.forEach((model) => {
        let row = this.get('table.rows').findBy('content', model);
        if(row) {
          row.set('selected', true);
        }
      });
    }
  },

  ...
});

The important parts are the setSelectedRows() method, which is basically called whenever rows are being added to the table, or when the table receives an entirely new set of models/rows. Additionally, I use a simplistic event bus service (using the Ember.Evented mixin) which allows other parts of the app to fire actions for the purpose of deselecting/selecting all rows in the table.
I think, if I had the ability for the row.selected value to be dervived directly from an attribute on the model, I could really eliminate all of that, since I am already updating that model property in those other places, and that selected state would just automatically be reflected in the table row as well.

What if we did something like this instead?

@offirgolan Any thoughts based on the my current implementation provided in my last comment?

@billdami I'm sorry for the delay! Been a bit preoccupied with some other tasks.
I've been thinking about this for some time now, but I really dont think there is a clean solution for something like this. I believe that the easiest solution is to add a computed alias on your model. That should get rid of all the selection logic you have there.
selected: computed.alias('isSelected')

@offirgolan oh wait, you're saying the row object will already look for a selected property on the associated model/content to use as its selection state? I thought the row.selected property was managed completely internally, not looking at the model/content at all.
If the row is not looking to the model for its selection state, could it possibly be done as a computed property on the Row object, maybe something like this?
export default class Row extends Ember.ObjectProxy.extend({
   _selected: false,

  selected: Ember.computed('_selected', 'content.selected', function() {
    return Ember.isNone(this.get('content.selected')) ? this.get('_selected') : this.get('content.selected');
  })
   //...
});

The row object is actually an object proxy. If a selected property is
present in the content ( i.e. Your model), then it will use that. All you
would have to do in your case is create a cp that aliases isSelected.
On Mon, Sep 12, 2016 at 11:30 AM Bill Dami<EMAIL_ADDRESS>wrote:

@offirgolan https://github.com/offirgolan oh wait, you're saying the
row object will already look for a selected property on the associated
model/content to use as its selection state? I thought the row.selected
property was managed completely internally, not looking at the
model/content at all.
If the row is not looking to the model for its selection state, could it
possibly be done as a computed property on the Row object, maybe
something like this?
export default class Row extends Ember.ObjectProxy.extend({
_selected: false,
selected: Ember.computed('_selected', 'content.selected', function() {
return Ember.isNone(this.get('content.selected')) ? this.get('_selected') : this.get('content.selected');
})
//...
});
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/offirgolan/ember-light-table/issues/151#issuecomment-246442845,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAjJwoa5O2REc5npLlzkxmFBTxssLlrWks5qpZi3gaJpZM4JsR9v
.

--
Thanks,
Offir Golan

@offirgolan That makes alot more sense now, I think that'll remove the need for all those setSelectedRows calls and the use of Ember.Evented to propagate model selection changes down to the table rows.
Regarding the second part of my original request, adding action(s) that are fired when a row or rows selection states changes, do you think thats something worth adding? My thought is that it would be similar to the onRowClick action thats currently sent, but sending an array of affected rows whose selection state has changed. My scenario is that I need to persist row selection state to a backend, and using observers to monitor the selection property and firing individual requests for each row that is selected/deselected isn't very efficient, especially if the user selects a range of rows at a time with shift+click.

adding action(s) that are fired when a row or rows selection states changes, do you think thats something worth adding

I dont think thats a bad idea. I'll try to put something together 😺

The row object is actually an object proxy. If a selected property is
present in the content ( i.e. Your model), then it will use that.

@offirgolan  After some testing, it unfortunately does not appear that this is the case. According to ember's API docs on Ember.ObjectProxy:

Ember.ObjectProxy forwards all properties not defined by the proxy itself to a proxied content object.

So since selected is already defined as a property of the Row class itself, it does not delegate to the content object for that property in this case. Was able to verify this behavior with the following simple snippet:
var obj = Ember.Object.create({
  selected: true
});

var proxy = Ember.ObjectProxy.create({
  content: obj
});

console.log(proxy.get('selected'));
// => true

var proxy2 = Ember.ObjectProxy.create({
  selected: false,
  content: obj
});

console.log(proxy2.get('selected'));
// => false

@billdami hmmmm okay, ill look into that as well!

@offirgolan I second that having event on selection would be a great place to start. We want to offer a "select all" checkbox with a indeterminate state if only some are selected. I tried doing an observer on table.rows.[] and table.selectedRows.[] but it is never triggered.

@karellm you're gonna have to bug @billdami to get it done 😜


Update Code - Proof_Of_Contribution.md

Reddit community updates

I'm merge this but only this one time as a 1 time contribution.
Thanks for adding Morpheus updates to the broader community.
Key is adding Code / Materials / info back to Morpheus.

Np
I understand.
I will keep the reddit community updated though.
thanks


Register-RabbitMQEvent not working when not setting Creds as Param

I find out that there was a breaking change in a recent commit here:
https://github.com/RamblingCookieMonster/PSRabbitMq/blob/cbc019644d5282ecafb8244b5e57dc2fe7cf3e8b/PSRabbitMq/Register-RabbitMqEvent.ps1#L140-L152
When Credential is not used as parameter, $ArgList is not set.

Actually, that also means the array is wrong as an element is missing.


Language

Hi My Friend ! How Can I change language of data

Hii there, my friend. You need to put a header in the request. It is the language header. An example of It is:
https://valorant-api.com/v1/agents?language=es-ES
To get the spanish data. You can see the avaliable languages here: https://dash.valorant-api.com/


Move ATA dependency into a feature

Codecov Report

Merging #32 (3912d7f) into master (26e4e6c) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #32   +/-   ##
=======================================
  Coverage   80.00%   80.00%
=======================================
  Files           4        4
  Lines         130      130
=======================================
  Hits          104      104
  Misses         26       26

Impacted Files
Coverage Δ

vipers/src/assert.rs
100.00% <ø> (ø)

vipers/src/lib.rs
80.00% <ø> (ø)

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 26e4e6c...3912d7f. Read the comment docs.


Add capability to add tools and miscellaneous resources

Description:
There may be cases where a user may need to use external third-party tools with their IS deployment. The capability to add such tools into ansible nodes must be provided.
Refer https://github.com/wso2/ansible-apim/pull/70

Closing the issue due to the inactivity of the repository.


Add Timestop

Hey nice mod! was wondering could you also add HUD removal? I know there's a mod that can do this but would be much more convenient if you can enable/disable with one key.

Hey nice mod! was wondering could you also add HUD removal? I know there's a mod that can do this but would be much more convenient if you can enable/disable with one key.

@railgunpoi I don't think this will be implemented. The HUD remover from the graphic pack is already good and reimplementing it would be time consuming and the free time is limited. Sorry.


Add a workaround for Apple Silicon

On Mac Apple Silicon (but not x86_64), SWT Tables and Trees now have giant fat rows (bugzilla).

But if you call setFont(null) on them, then they have rows the same size as before.
We created a new class SiliconFix that does nothing on all platforms except Apple Silicon where it calls setFont(null).
Wherever a Table or Tree instantiated (SmoothTable and ColumnFormat), we use SiliconFix.
This workaround is perfectly effective as of Eclipse 4.21 and 4.22, it may become obsolete in a future release.

This worked up until SWT for Eclipse 4.31. Starting with Eclipse 4.31, you can instead do this:

System.setProperty("org.eclipse.swt.internal.cocoa.useNativeItemHeight", "false");

There is no need for SiliconFix for these new versions of SWT.


add support for orphan events

Change
added support for these event transactions that doesn't have tx hash with it, let's call them orphan events. We wrap these events in a "virtual tx", so we can still see them and query them.
We can't assign each of the log a new virtual tx, but should group them together, so related logs from the same event are contained in one virtual tx.
We define the tx hash as keccak256(blockHash + eventIndex)
As a result:

for eth_subscribe, now it also query for orphan logs so that wormhole guardian should be able to observe the log.
subquery can index these phantom logs, as well as the virtual tx that wrapped them.
cache can cache the virtual tx hash

Test
✔ eth_subscribe can notify the logs triggered by council or scheduler (this looks hard to test)
✔ eth_getLogs can find the phantom logs
✔ eth_getTransactionReceipt can find the virtual tx receipt
✔ tx receipt hash can be found in cache

@xlc I have finished local testing and looks good, so it's ready for some CR again, so once wormhole confirmed they are able to re-observe the VAA we can merge it ASAP and let guardians deploy new version.


Error: Building package openssl-uwp:arm64-uwp failed with: BUILD_FAILED

Error: Building package openssl-uwp:arm64-uwp failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: openssl-uwp:arm64-uwp
Vcpkg version: 2018.11.23-nohash

Error: Building package openssl-uwp:arm64-uwp failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: openssl-uwp:arm64-uwp
Vcpkg version: 2018.11.23-nohash
Additionally, attach any relevant sections from the log files above.
C:\WINDOWS\system32>vcpkg install openssl-uwp --triplet arm64-uwp
The following packages will be built and installed:
openssl-uwp[core]:arm64-uwp
Starting package 1/1: openssl-uwp:arm64-uwp
Building package openssl-uwp[core]:arm64-uwp...
CMake Error at ports/openssl-uwp/portfile.cmake:17 (message):
Unsupported architecture
Call Stack (most recent call first):
scripts/ports.cmake:71 (include)

Hi @manjunathnbec, thanks for posting this issue! I installed it successfully with VCPKG latest source. Can you try vcpkg latest revision?
.\vcpkg.exe install openssl-uwp:arm64-uwp
The following packages will be built and installed:
openssl-uwp[core]:arm64-uwp
Starting package 1/1: openssl-uwp:arm64-uwp
Building package openssl-uwp[core]:arm64-uwp...
-- Downloading https://github.com/Microsoft/openssl/archive/OpenSSL_1_0_2r_WinRT.tar.gz...
-- Extracting source F:/test/issue4925/vcpkg/downloads/Microsoft-openssl-OpenSSL_1_0_2r_WinRT.tar.gz
-- Applying patch F:/test/issue4925/vcpkg/ports/openssl-uwp/fix-uwp-rs4.patch
-- Applying patch failed. This is expected if this patch was previously applied.
-- Applying patch F:/test/issue4925/vcpkg/ports/openssl-uwp/fix-uwp-configure-unicode.patch
-- Using source at F:/test/issue4925/vcpkg/buildtrees/openssl-uwp/src/0_2r_WinRT-026d55ea1b
-- Build arm64-uwp
-- Build arm64-uwp done
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/bin/libeay32.dll
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/bin/libeay32.pdb
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/bin/ssleay32.dll
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/bin/ssleay32.pdb
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/lib/libeay32.lib
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/lib/ssleay32.lib
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/bin/libeay32.dll
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/bin/libeay32.pdb
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/bin/ssleay32.dll
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/bin/ssleay32.pdb
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/lib/libeay32.lib
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/debug/lib/ssleay32.lib
-- Installing: F:/test/issue4925/vcpkg/packages/openssl-uwp_arm64-uwp/share/openssl-uwp/copyright
-- Performing post-build validation
-- Performing post-build validation done
Building package openssl-uwp[core]:arm64-uwp... done
Installing package openssl-uwp[core]:arm64-uwp...
Installing package openssl-uwp[core]:arm64-uwp... done
Elapsed time for package openssl-uwp:arm64-uwp: 1.531 min
Total elapsed time: 1.531 min
The package openssl is compatible with built-in CMake targets:
find_package(OpenSSL REQUIRED)
target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)

thanks


It seems this repo is excluded from hacktoberfest 2023. I'll contact hacktoberfest and try to fix this. If you have any solutions, feel free to inform me. Sorry for the inconvenience caused.

Could you give please any updates on this? Is the issue resolved?


Remember equipment

Someway somehow to remember your last equipment.
so you can do a farm run inbetween thieving, that if you comeback from the run you can set your last equipment back faster.

This is suppose to be an 'issue' not a pull request.

https://github.com/runelite/runelite/issues/new/choose ^


fix(actors): lastFiredTime state rpc failed return error

if updateReminderTrack method executes failed, daprd runtime actor must report error. or nextInvokeTime must be wrong time.

the pr 2663 and pr 2656 are closely relatived.
But daprd runtime actor can't change nextInvokeTime at will.
Because this change is not expected by the request user.

the pr 2663 and pr 2656 are closely relatived.
But daprd runtime actor can't change nextInvokeTime at will.
Because this change is not expected by the request user.


add autoscalepolicies resource permission to mesh controller

Purpose

add permission for the resource autoscalepolicies to mesh.cellery.io api group.

Codecov Report

Merging #50 into master will increase coverage by 4.59%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #50      +/-   ##
==========================================
+ Coverage   58.02%   62.62%   +4.59%
==========================================
  Files          25       26       +1
  Lines        1277     1295      +18
==========================================
+ Hits          741      811      +70
+ Misses        522      470      -52
  Partials       14       14

Impacted Files
Coverage Δ

pkg/controller/autoscale/resources/hpa.go
100% <0%> (ø)

...g/controller/service/resources/autoscale_policy.go
100% <0%> (+100%)
:arrow_up:

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 a6ae6a7...7df6d42. Read the comment docs.


Update: MongoDB.Server version 4.4.4

Removing old versions to reduce clutter
Microsoft Reviewers: Open in CodeFlow

/azp run


[NEW UI] No apparent option to sort

Issue Type: Bug
Issue Description:
For both the home (browse) and workspace pages, there does not appear to be any way to sort the data in the table.
I recall an option in the old UI to sort by score or license, descending or ascending, but I could of course be mistaken.
Regardless, the way the table columns are displayed suggests that one can filter (there is a "sort arrow" type thing) but it appears decorative and does not function .

Can confirm as of 10/13/2023 this is still a present observation.
It is absent from the definition "Files" view as well.


Improve import speed with lazy initialization

Currently importing transformer_engine takes ~10s on my machine and it also starts a background process pool because of all the JIT initialization like here .
It would be better if all the expensive parts were initialized lazily or at least when importing specific subpackage/module, but not when importing root level package.
This also affects e.g. "import accelerate" which uses transformer_engine, which is pretty annoying as I often use accelerate for workloads unrelated to transformer_engine.

@ksivaman Could you take a look at it? Maybe we could move jitting to the actual modules? In general I agree that we should not do anything CUDA-related on just import, but rather on the first use.

I've also noted that when importing certain submodules of the pytorch package it slows down so much that vscodes's debugger hangs :( . An example of this is from transformer_engine.pytorch.float8_tensor import Float8Tensor -> This induces already a hang for me when training with multiple processes.

I encountered a similar hang problem. I used megatron-lm and after installing transformer-engine, I encountered a hang at torch.distributed.init. This problem will not occur after uninstalling

Agreed, this takes more than 3 minutes on our server. Is there any way to bypass this issue?


First script attempts

import device
import mixer
import midi
Constants
NUM_CHANNELS = 16
MIDI_CHANNEL = 0  # Adjust based on your setup
Function to handle incoming MIDI messages
def OnMidiMsg(event):
if event.midiId == midi.MIDI_CONTROLCHANGE and event.status == 176 + MIDI_CHANNEL:
# Map faders
if 33 <= event.data1 <= 48:
channel = event.data1 - 33
value = event.data2
mixer.setTrackVolume(channel, value / 127.0)
    # Map pan controls
    elif 49 <= event.data1 <= 64:
        channel = event.data1 - 49
        value = event.data2
        mixer.setTrackPan(channel, (value - 64) / 63.0)

# Handle Mute and Solo buttons (example for Mute)
elif event.midiId == midi.MIDI_NOTEON and event.status == 144 + MIDI_CHANNEL:
    if 60 <= event.data1 < 76:  # Assuming note numbers for mute buttons
        channel = event.data1 - 60
        mixer.setTrackMute(channel, event.data2 > 0)
    # Add similar handling for solo buttons if needed

Function to update MIDI controller when FL Studio state changes
def OnRefresh(flags):
for i in range(NUM_CHANNELS):
# Update fader positions
volume = mixer.getTrackVolume(i) * 127
device.midiOutMsg(midi.MIDI_CONTROLCHANGE + MIDI_CHANNEL, 33 + i, int(volume))
    # Update pan positions
    pan = int((mixer.getTrackPan(i) * 63) + 64)
    device.midiOutMsg(midi.MIDI_CONTROLCHANGE + MIDI_CHANNEL, 49 + i, pan)

Called when the script starts or when FL Studio reloads the script
def OnInit():
OnRefresh(None)
Called when the script is terminated or FL Studio closes
def OnDeInit():
pass


Fix muting behavior with the MediaElement backend

Short description of changes:
wavesurfer.js currently handles muting the media by setting the backend's volume to 0 and remembering the previous value, but it also checks whether the backend maintains muting state and uses it to override its own. This is currently used by the MediaElement to make wavesurfer aware of muting/volume changes performed directly on the Audio element, but muting through wavesurfer.js itself triggers a backend volume change without changing the backend's isMuted state, so the end result is the volume switching to 0 and the media being unmuted, leading to inconsistent and erratic behavior.
This PR adds an optional setMute method to backends so that the MediaElement backend can handle muting by itself.
Breaking in the external API:
None.
Breaking changes in the internal API:
None (the setMute method is optional so that other backends do not need change—but if we are ok with breaking the internal API by requiring the setMute method, we can move the wavesurfer.js code to the WebAudio backend).
Related Issues and other PRs:
I believe the “immediately unmuting” behavior was introduced by #1635. This PR fixes it while still handling external changes to the Audio element state.
refs #1931
refs #1703

Done!

hey folks, this PR broke a few tests (that were previously hidden behind some eslint issues).  I'm not sure if the tests are incorrect or if the code is, but maybe someone wants to look?

@osheroff fixed with #1968 that was merged just now.


fixed the sites-navigation link-target value being empty

Description
Please describe your pull request:

This fixes the link target being empty (target="") if a target is set (which is also invalid HTML)

Questions
Answers

BC breaks?
no

Tests pass?
yes

Related tickets?
SW-12898

How to test?
Create a custom link in your sites' navigation with any target. Now look at the source code of your page -> target is empty. This PR fixes this.

Hey @vintagesucks
thanks for your contribution. we already have a PR for this: https://github.com/shopware/shopware/pull/668

Hey @vintagesucks
as the other PR is already scheduled, I will close this one.
Thanks for your contribution!


Rewrite Ref page in advanced guide

The current guide page is kind of a jumble between functional and object refs.
I tried to make it more clear by focusing on introducing object refs and moving function refs to be basically a footnote.
Checklist before submitting:

~Added entry to CHANGELOG.md~
~Added/updated relevant tests~
[x] Added/updated documentation

Coverage remained the same at 89.311% when pulling b06dc2232cd2ccd56ba3b030c9be9f0ba1bf0f2d on new-ref-docs into 2e2d9df36044ac173fcb50fb257b2bacf4de78fa on master.


fix: timeoutId compatible for browser-like environments

Fixes timeoutId being undefined when trying to call unref in browser-like environments.
Linked Issues
#15

Sorry for ignoring the template!
Don't have enough time.
Please refer #15 to learn more.


Switch cloud installation to use uproxy-cloud-installer NPM module

Switch cloud installation to use uproxy-cloud-installer NPM module
Notes:

Cloud creation now finishes in < 1 minute, however the cloud server will appear as offline until it's ready.  I made some small UI modifications so that it wouldn't show "waiting to get access" in the UI if the cloud server was expanded during this time.
All code for cancelling cloud server creation has been removed
Code for restarting cloud servers has been removed
Status/progress updates for cloud installation are removed (installation now takes < 1 minute)
Code for deleting the cloud server is also removed, now the user is just directed to the Digital Ocean droplets page
Users can now create multiple cloud servers (all have the same "uproxy-cloud-servert" name)
Users can no longer enter a promo code (will remove all promo code logic in a separate pull request)

Questions:

Whats up with the yarn.lock file?  Am I supposed to check this in?  Or should it be added to .gitignore?

This change is

(((

Whats up with the yarn.lock file? Am I supposed to check this in? Or should it be added to .gitignore?

quoting @fortuna:

The yarn.lock is supposed to be committed to version control. That's how you ensure everyone is using the same version of the packages. See https://yarnpkg.com/en/docs/yarn-lock

(I wonder if the yarn folks had picked a different name people wouldn't second-guess this as much. Everyone has this question on first glance, myself included!)
)))

Just made those small changes, thanks.  Also thanks Josh for the help with yarn.lock!


The folder called "property" is not included in the pip package.

I installed the 0.1.0 package:
% pip freeze
certifi==2024.2.2
charset-normalizer==3.3.2
hn-sdk==0.1.0
idna==3.7
requests==2.31.0
urllib3==2.2.1

However, when I run the example, I get a KeyError about a key HACKER_NEWS_API. I traced it down to the install that the package did in my virtualenv and there is no folder named "property" as referred to the following line:
https://github.com/joeyagreco/hacker-news/blob/51afe17f426b928464f515de9dce84cbb35403c0/hn_sdk/util/ConfigReader.py#L19
I don't understand precisely how you have bundled the package, but somehow that folder does not get downloaded with 0.1.0

Thank you for finding this bug!
This has been fixed in v0.1.1
Please run pip install --upgrade hn-sdk and this should be fixed


Tesseract 4 crashes on Windows XP 32 bit

Hello!
Latest Tesseract version built from GIT with mingw-w64-i686 toolchain (gcc/g++ 6.2.0) crashes when run on Windows XP 32 bit (confirmed both for SP2 and SP3 OS versions). It crashes after several seconds of image processing and shows standard Windows dialog with this error text: "Exception unknow software exception (0xc000001d) in application at address 0x655b25f0".
On Windows 7 and 8 (x64) same images are recognized fine without any issues.

I'm afraid that nobody will care about support for a Windows version which was abandoned by MS three years ago.

Does Tesseract on Windows 7/8 32 bit work well or crash too?

Tesseract version built from GIT with mingw-w64-i686 toolchain (gcc/g++ 6.2.0)
Does it have to be built with special flags for win32?

Tesseract version built from GIT with mingw-w64-i686 toolchain (gcc/g++ 6.2.0)
Does it have to be built with special flags for win32?

Does it have to be built with special flags for win32?

No, no special flags are needed for win32. My 32 and 64 bit builds for Windows only differ in the prefix for build tools and installation:
./configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32 && make
./configure --host=x86_64-w64-mingw32 --prefix=/usr/x86_64-w64-mingw32 && make

Thank you all for respond! I'm well aware of the fact that XP is quite outdated OS, but some people still prefere to use it despite troubles with outdated drivers etc. If it would take too much effort to fix it then it probably doesn't worth it. But if there is a chance of fixing it without going too deep in debug process then it would be great.
Now in order of questions:

It works just fine on Windows 7 32 bit, no crashes at all. On the very same PC it crashes constanly under XP 32 bit.

1st crash machine: Intel Core i3-2120 3.30GHz.
2nd crash machine: Intel Core i5 3570 3.4 GHz (OS run under VirtualBox Version 5.1.18 r 114002(Qt5.6.2)).

tesseract -v:

tesseract 4.00.00alpha
leptonica-1.74.1
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.1) : libpng 1.6.26 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.6.0
Found AVX
Found SSE

Build is done under Windows 8 64 bit using latest MSYS2 (https://sourceforge.net/projects/msys2/) distributive, updated with "pacman -Syuu" to get latest leptonica version.

  C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe
checking if the linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /mingw32/i686-w64-mingw32/bin/nm -B
checking the name lister (/mingw32/i686-w64-mingw32/bin/nm -B) interface... BSD nm
checking whether ln -s works... no, using cp -pR
checking the maximum length of command line arguments... 8192
checking how to convert i686-w64-mingw32 file names to i686-w64-mingw32 format... func_convert_file_msys_to_w32
checking how to convert i686-w64-mingw32 file names to toolchain format... func_convert_file_msys_to_w32
checking for C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for dlltool... dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /mingw32/i686-w64-mingw32/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... no
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics...  C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe
checking if the linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe) is GNU ld... yes
checking whether the g++ linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe) supports shared libraries... yes
checking for g++ option to produce PIC... -DDLL_EXPORT -DPIC
checking if g++ PIC flag -DDLL_EXPORT -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether byte ordering is bigendian... no
checking if compiling with clang... no
checking whether compiler supports C++11... yes
checking for snprintf... yes
checking for library containing sem_init... none required
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... no
checking sys/ipc.h usability... no
checking sys/ipc.h presence... no
checking for sys/ipc.h... no
checking sys/shm.h usability... no
checking sys/shm.h presence... no
checking for sys/shm.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking whether #! works in shell scripts... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for getline... no
checking for wchar_t... yes
checking for long long int... yes
checking for off_t... yes
checking for mbstate_t... yes
checking for pkg-config... /mingw32/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for lept >= 1.74... yes
checking for icu-uc... yes
checking for icu-i18n... yes
checking for pango... yes
checking for cairo... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating tesseract.pc
config.status: creating api/Makefile
config.status: creating arch/Makefile
config.status: creating ccmain/Makefile
config.status: creating opencl/Makefile
config.status: creating ccstruct/Makefile
config.status: creating ccutil/Makefile
config.status: creating classify/Makefile
config.status: creating cutil/Makefile
config.status: creating dict/Makefile
config.status: creating lstm/Makefile
config.status: creating textord/Makefile
config.status: creating viewer/Makefile
config.status: creating wordrec/Makefile
config.status: creating tessdata/Makefile
config.status: creating tessdata/configs/Makefile
config.status: creating tessdata/tessconfigs/Makefile
config.status: creating testing/Makefile
config.status: creating java/Makefile
config.status: creating java/com/Makefile
config.status: creating java/com/google/Makefile
config.status: creating java/com/google/scrollview/Makefile
config.status: creating java/com/google/scrollview/events/Makefile
config.status: creating java/com/google/scrollview/ui/Makefile
config.status: creating doc/Makefile
config.status: creating training/Makefile
config.status: creating config_auto.h
config.status: executing depfiles commands
config.status: executing libtool commands
Configuration is done.
You can now build and install tesseract by running:
$ make
$ sudo make install
Training tools can be build and installed (after building of tesseract) with:
$ make training
$ sudo make training-install

Running with gdb:

gdb --args ./tesseract image14281.jpg image14281
-l rus
GNU gdb (GDB) 7.12.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-w64-mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Traceback (most recent call last):
File "", line 3, in
ImportError: No module named libstdcxx.v6.printers
c:\atlas-sdk\msys32\mingw32\bin../etc/gdbinit:5: Error in sourced command file:
Error while executing Python code.
Reading symbols from ./tesseract...done.
(gdb) run
Starting program: C:\atlas-sdk\msys32\mingw32\bin\tesseract.exe image14281.jpg i
mage14281 -l rus
[New Thread 316.0x79c]
Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
Detected 24 diacritics
[New Thread 316.0x3e4]
[New Thread 316.0x2e8]
[New Thread 316.0x69c]
Thread 2 received signal SIGILL, Illegal instruction.
[Switching to Thread 316.0x3e4]
tesseract::DotProductAVX (u=0xcc0010, v=0x469f5f8, n=25)
at dotproductavx.cpp:70
70      dotproductavx.cpp: No such file or directory.
(gdb) continue
Continuing.
Thread 2 received signal SIGILL, Illegal instruction.
tesseract::DotProductAVX (u=0xcc0010, v=0x469f5f8, n=25)
at dotproductavx.cpp:70
70      in dotproductavx.cpp
(gdb) continue
Continuing.
[Thread 316.0x3e4 exited with code<PHONE_NUMBER>]
[Thread 316.0x2e8 exited with code<PHONE_NUMBER>]
[Inferior 1 (process 316) exited with code<PHONE_NUMBER>35]
(gdb) continue
The program is not being run.
(gdb)

Wondering whether problem is related to MSYS2

excuse the brevity, sent from mobile

On 11-Apr-2017 9:09 PM, "Alexander Paukonen"<EMAIL_ADDRESS>wrote:

Thank you all for respond! I'm well aware of the fact that XP is quite
outdated OS, but some people still prefere to use it despite troubles with
outdated drivers etc. If it would take too much effort to fix it then it
probably doesn't worth it. But if there is a chance of fixing it without
going too deep in debug process then it would be great.
Now in order of questions:

It works just fine on Windows 7 32 bit, no crashes at all. On the very
same PC it crashes constanly under XP 32 bit.
2.
1st crash machine: Intel Core i3-2120 3.30GHz.
2nd crash machine: Intel Core i5 3570 3.4 GHz (OS run under VirtualBox
Version 5.1.18 r 114002(Qt5.6.2)).
3.
tesseract -v:
tesseract 4.00.00alpha
leptonica-1.74.1
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.1) : libpng 1.6.26 : libtiff
4.0.6 : zlib 1.2.8 : libwebp 0.6.0
Found AVX
Found SSE

Build is done under Windows 8 64 bit using latest MSYS2 (
https://sourceforge.net/projects/msys2/
https://sourceforge.net/projects/msys2/) distributive, updated with
"pacman -Syuu" to get latest leptonica version.

  C:/atlas-sdk/msys32/mingw32/
i686-w64-mingw32/bin/ld.exe
checking if the linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe)
is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)...
/mingw32/i686-w64-mingw32/bin/nm -B
checking the name lister (/mingw32/i686-w64-mingw32/bin/nm -B)
interface... BSD nm
checking whether ln -s works... no, using cp -pR
checking the maximum length of command line arguments... 8192
checking how to convert i686-w64-mingw32 file names to i686-w64-mingw32
format... func_convert_file_msys_to_w32
checking how to convert i686-w64-mingw32 file names to toolchain format...
func_convert_file_msys_to_w32
checking for C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe
option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... file_magic ^x86 archive
import|^x86 DLL
checking for dlltool... dlltool
checking how to associate runtime and link libraries...
func_cygming_dll_for_implib
checking for ar... ar
checking for archiver @FILE https://github.com/FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /mingw32/i686-w64-mingw32/bin/nm -B output from
gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... no
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe)
supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics...  C:/atlas-sdk/msys32/mingw32/
i686-w64-mingw32/bin/ld.exe
checking if the linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe)
is GNU ld... yes
checking whether the g++ linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe)
supports shared libraries... yes
checking for g++ option to produce PIC... -DDLL_EXPORT -DPIC
checking if g++ PIC flag -DDLL_EXPORT -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (C:/atlas-sdk/msys32/mingw32/i686-w64-mingw32/bin/ld.exe)
supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether byte ordering is bigendian... no
checking if compiling with clang... no
checking whether compiler supports C++11... yes
checking for snprintf... yes
checking for library containing sem_init... none required
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... no
checking sys/ipc.h usability... no
checking sys/ipc.h presence... no
checking for sys/ipc.h... no
checking sys/shm.h usability... no
checking sys/shm.h presence... no
checking for sys/shm.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking whether #! works in shell scripts... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for getline... no
checking for wchar_t... yes
checking for long long int... yes
checking for off_t... yes
checking for mbstate_t... yes
checking for pkg-config... /mingw32/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for lept >= 1.74... yes
checking for icu-uc... yes
checking for icu-i18n... yes
checking for pango... yes
checking for cairo... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating tesseract.pc
config.status: creating api/Makefile
config.status: creating arch/Makefile
config.status: creating ccmain/Makefile
config.status: creating opencl/Makefile
config.status: creating ccstruct/Makefile
config.status: creating ccutil/Makefile
config.status: creating classify/Makefile
config.status: creating cutil/Makefile
config.status: creating dict/Makefile
config.status: creating lstm/Makefile
config.status: creating textord/Makefile
config.status: creating viewer/Makefile
config.status: creating wordrec/Makefile
config.status: creating tessdata/Makefile
config.status: creating tessdata/configs/Makefile
config.status: creating tessdata/tessconfigs/Makefile
config.status: creating testing/Makefile
config.status: creating java/Makefile
config.status: creating java/com/Makefile
config.status: creating java/com/google/Makefile
config.status: creating java/com/google/scrollview/Makefile
config.status: creating java/com/google/scrollview/events/Makefile
config.status: creating java/com/google/scrollview/ui/Makefile
config.status: creating doc/Makefile
config.status: creating training/Makefile
config.status: creating config_auto.h
config.status: executing depfiles commands
config.status: executing libtool commands
Configuration is done.
You can now build and install tesseract by running:
$ make
$ sudo make install
Training tools can be build and installed (after building of tesseract)
with:
$ make training
$ sudo make training-install

Running with gdb:

gdb --args ./tesseract image14281.jpg image14281
-l rus
GNU gdb (GDB) 7.12.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.
html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-w64-mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Traceback (most recent call last):
File "", line 3, in
ImportError: No module named libstdcxx.v6.printers
c:\atlas-sdk\msys32\mingw32\bin../etc/gdbinit:5: Error in sourced command
file:
Error while executing Python code.
Reading symbols from ./tesseract...done.
(gdb) run
Starting program: C:\atlas-sdk\msys32\mingw32\bin\tesseract.exe
image14281.jpg i
mage14281 -l rus
[New Thread 316.0x79c]
Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
Detected 24 diacritics
[New Thread 316.0x3e4]
[New Thread 316.0x2e8]
[New Thread 316.0x69c]
Thread 2 received signal SIGILL, Illegal instruction.
[Switching to Thread 316.0x3e4]
tesseract::DotProductAVX (u=0xcc0010, v=0x469f5f8, n=25)
at dotproductavx.cpp:70
70 dotproductavx.cpp: No such file or directory.
(gdb) continue
Continuing.
Thread 2 received signal SIGILL, Illegal instruction.
tesseract::DotProductAVX (u=0xcc0010, v=0x469f5f8, n=25)
at dotproductavx.cpp:70
70 in dotproductavx.cpp
(gdb) continue
Continuing.
[Thread 316.0x3e4 exited with code<PHONE_NUMBER>]
[Thread 316.0x2e8 exited with code<PHONE_NUMBER>]
[Inferior 1 (process 316) exited with code<PHONE_NUMBER>35]
(gdb) continue
The program is not being run.
(gdb)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/tesseract-ocr/tesseract/issues/810#issuecomment-293303825,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE2_o8PB1SYW-PbpSoRKqb1U74y7SkJ_ks5ru562gaJpZM4M4mtq
.

You can simply remove all lines which set avx_available_ in file arch/simddetect.cpp.
or remoce/comment this code in configure.ac

or remove/comment this code in configure.ac:
AX_CHECK_COMPILE_FLAG([-mavx], [avx=true], [avx=false])
if $avx; then
    AM_CONDITIONAL([AVX_OPT], true)
fi

Thank you very much!
It works fine when AVX is disabled. Looks like a good reason to stop using XP completely.

Great, thank you for testing. Maybe we can add a test for old Windows versions in arch/simddetect.cpp to handle this automatically.

I don't think we should add any code to support OSes that are >10 years old and even not supported by their vendors anymore.

Nevertheless, I think what we should do is to add an option to disable all the simd  compile-time & runtime checking.

In any case, I applied this patch to my working copy:

diff -rupN src/arch/simddetect.cpp src-modified/arch/simddetect.cpp
--- src/arch/simddetect.cpp	2017-04-03 20:07:40.000000000 +0300
+++ src-modified/arch/simddetect.cpp	2017-04-12 14:57:21.391494700 +0300
@@ -50,7 +50,21 @@ SIMDDetect::SIMDDetect() {
unsigned int eax, ebx, ecx, edx;
if (_get_cpuid(1, &eax, &ebx, &ecx, &edx) != 0) {
sse_available = (ecx & 0x00080000) != 0;
+#  if defined(_WIN32)

OSVERSIONINFO osvi;

ZeroMemory( &osvi, sizeof( OSVERSIONINFO ) );
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );

GetVersionEx( &osvi );

if( osvi.dwMajorVersion > 5 )

 avx_available_ = (ecx & 0x10000000) != 0;

else

 avx_available_ = false;

+#  else
avx_available_ = (ecx & 0x10000000) != 0;
+#  endif
}
elif defined(_WIN32)
int cpuInfo[4];
@@ -58,7 +72,18 @@ SIMDDetect::SIMDDetect() {
if (cpuInfo[0] >= 1) {
_cpuid(cpuInfo, 1);
sse_available = (cpuInfo[2] & 0x00080000) != 0;

avx_available_ = (cpuInfo[2] & 0x10000000) != 0;

OSVERSIONINFO osvi;

ZeroMemory( &osvi, sizeof( OSVERSIONINFO ) );
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );

GetVersionEx( &osvi );

if( osvi.dwMajorVersion > 5 )

 avx_available_ = (cpuInfo[2] & 0x10000000) != 0;

else

 avx_available_ = false;

}

else
error "I don't know how to test for SIMD with this compiler"

It automatically disables AVX for XP and older OSes.
Maybe it would come in handy to someone.

It seems the current 4.00alpha version would crash in Windows 10 running on an old i7 CPU also. The patch may fix that. I may try it out when I get a chance.

It seems the current 4.00alpha version would crash in Windows 10 running on an old i7 CPU also.

I don't think so.

I may try it out when I get a chance.

Let us know :)

Great, thank you for testing. Maybe we can add a test for old Windows versions in arch/simddetect.cpp to handle this automatically.

This is also going to come handy for whenever tesseract will make use of AVX-512 (which brings in another new architectural state), which is only going to be supported on W10
(not sure if already, or in a future version - in the latter case that would be another point for this check)

@stweil
Please see https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/tesseract-ocr/P-4AqnnGpgc/fMbEr1o9BAAJ
Do you know what could be causing this behaviour for install on windows 10? Thanks!

Thank you for the reply. I went to https://github.com/UB-Mannheim/tesseract/wiki, download  tesseract-ocr-setup.exe file but when i click on it, it send me to the get apps from the store app. I don't know why it did not install and why it sent me to app store for since I already got the  tesseract-ocr-setup.exe.
Regards,
Tom

I think you posted in the wrong thread..

But he reached the right person. :-)

Windows XP is not supported in 4.00.
@zdenop, please close this issue.

Again, this is not about windows XP.
This is about tesseract only checking extensions at hardware level.

Again, this is not about windows XP.
The Title of this issue is:

Tesseract 4 crashes on Windows XP 32 bit

for the records, AVX is also not supported on Vista and 7 RTM

https://support.microsoft.com/en-us/help/22882/windows-vista-end-of-support
If you know that there is an issue in Tesseract + SIMD with Windows 8.1/10 or other OSes that are still supported by their vendors, open a new issue.

The title is a thing, the actual issue is another
And EOL or not, not-checking OS for what it will let you use seems wrong.
(in fact, again, this will certainly make for problems with AVX-512 cpus)
I don't have any of the "possibly buggable" sw/hw combos, so I'm unfortunately sorry I cannot help further.

does tesseract4.0 can be install using 32bit win10 ??

Hi , I have build tesseract4.0 using vs 2017 with leptonica 1.75.3 . it workred very well . i want to include tesseract4.0 into other project but that project has a lot of library which was built in vs 2013 . Im trying to use vs 2013 to build tesseract 4.0 to match with my project . unfortunately i couldn't due to exist of constexper in publictry.h file in tesseract 4.0 . so im asking is there any way to build tesseract 4.0 using vs 2013. there's might be some other reasons but so far this is the most clear error to me

hello，can the tesseract support XP after,in tesseract 4.1 has this problem.

It is possible to run Tesseract on XP, but you have to disable AVX.

I have tried to modify it, but this is a failed attempt. Can you help me change it? Here is my modification.
///////////////////////////////////////////////////////////////////////
// File:        simddetect.cpp
// Description: Architecture detector.
// Author:      Stefan Weil (based on code from Ray Smith)
//
// (C) Copyright 2014, Google Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///////////////////////////////////////////////////////////////////////
#include            // for std::inner_product
#include "simddetect.h"
#include "dotproduct.h"
#include "dotproductavx.h"
#include "dotproductsse.h"
#include "intsimdmatrix.h"   // for IntSimdMatrix
#include "params.h"   // for STRING_VAR
#include "tprintf.h"  // for tprintf
#include "windows.h"
#if defined(AVX) || defined(AVX2) || defined(SSE4_1)
define HAS_CPUID
#endif
#if defined(HAS_CPUID)
#if defined(GNUC)
include <cpuid.h>
#elif defined(_WIN32)
include <intrin.h>
#endif
#endif
namespace tesseract {
// Computes and returns the dot product of the two n-vectors u and v.
// Note: because the order of addition is different among the different dot
// product functions, the results can (and do) vary slightly (although they
// agree to within about 4e-15). This produces different results when running
// training, despite all random inputs being precisely equal.
// To get consistent results, use just one of these dot product functions.
// On a test multi-layer network, serial is 57% slower than SSE, and AVX
// is about 8% faster than SSE. This suggests that the time is memory
// bandwidth constrained and could benefit from holding the reused vector
// in AVX registers.
DotProductFunction DotProduct;
static STRING_VAR(dotproduct, "auto",
"Function used for calculation of dot product");
SIMDDetect SIMDDetect::detector;
// If true, then AVX has been detected.
bool SIMDDetect::avx_available_;
bool SIMDDetect::avx2_available_;
bool SIMDDetect::avx512F_available_;
bool SIMDDetect::avx512BW_available_;
// If true, then SSe4.1 has been detected.
bool SIMDDetect::sse_available_;
// Computes and returns the dot product of the two n-vectors u and v.
static double DotProductGeneric(const double* u, const double* v, int n) {
double total = 0.0;
for (int k = 0; k < n; ++k) total += u[k] * v[k];
return total;
}
// Compute dot product using std::inner_product.
static double DotProductStdInnerProduct(const double* u, const double* v, int n) {
return std::inner_product(u, u + n, v, 0.0);
}
static void SetDotProduct(DotProductFunction f, const IntSimdMatrix* m = nullptr) {
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion > 5) {
DotProduct = f;
IntSimdMatrix::intSimdMatrix = m;
}
}
// Constructor.
// Tests the architecture in a system-dependent way to detect AVX, SSE and
// any other available SIMD equipment.
// GNUC is also defined by compilers that include GNU extensions such as
// clang.
SIMDDetect::SIMDDetect() {
// The fallback is a generic dot product calculation.
#if defined(HAS_CPUID)
#if defined(GNUC)
unsigned int eax, ebx, ecx, edx;
if (get_cpuid(1, &eax, &ebx, &ecx, &edx) != 0) {
// Note that these tests all use hex because the older compilers don't have
// the newer flags.
#if defined(SSE4_1)
sse_available = (ecx & 0x00080000) != 0;
#endif
#if defined(WIN32)
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion > 5)
SetDotProduct(DotProductGeneric);
avx_available = (ecx & 0x10000000) != 0;
else
avx_available = false;
#else
SetDotProduct(DotProductGeneric);
avx_available_ = (ecx & 0x10000000) != 0;
if (avx_available_) {
// There is supposed to be a _get_cpuid_count function, but this is all
// there is in my cpuid.h. It is a macro for an asm statement and cannot
// be used inside an if.
cpuid_count(7, 0, eax, ebx, ecx, edx);
avx2_available = (ebx & 0x00000020) != 0;
avx512F_available = (ebx & 0x00010000) != 0;
avx512BW_available = (ebx & 0x40000000) != 0;
}
#endif
}
elif defined(_WIN32)
int cpuInfo[4];
int max_function_id;
cpuid(cpuInfo, 0);
max_function_id = cpuInfo[0];
if (max_function_id >= 1) {
cpuid(cpuInfo, 1);
#if defined(SSE4_1)
sse_available = (cpuInfo[2] & 0x00080000) != 0;
#endif
#if defined(AVX)
//avx_available = (cpuInfo[2] & 0x10000000) != 0;
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion > 5)
avx_available = (cpuInfo[2] & 0x10000000) != 0;
else
avx_available = false;
#endif
#if defined(AVX2)
if (max_function_id >= 7) {
cpuid(cpuInfo, 7);
avx2_available = (cpuInfo[1] & 0x00000020) != 0;
avx512F_available = (cpuInfo[1] & 0x00010000) != 0;
avx512BW_available_ = (cpuInfo[1] & 0x40000000) != 0;
}
#endif
}
#else
#error "I don't know how to test for SIMD with this compiler"
#endif
#endif
// Select code for calculation of dot product based on autodetection.
if (false) {
// This is a dummy to support conditional compilation.
#if defined(AVX2)
} else if (avx2_available_) {
// AVX2 detected.
SetDotProduct(DotProductAVX, &IntSimdMatrix::intSimdMatrixAVX2);
#endif
#if defined(AVX)
} else if (avx_available_) {
// AVX detected.
SetDotProduct(DotProductAVX, &IntSimdMatrix::intSimdMatrixSSE);
#endif
#if defined(SSE4_1)
} else if (sse_available_) {
// SSE detected.
SetDotProduct(DotProductSSE, &IntSimdMatrix::intSimdMatrixSSE);
#endif
}
}
void SIMDDetect::Update() {
// Select code for calculation of dot product based on the
// value of the config variable if that value is not empty.
const char* dotproduct_method = "generic";
if (!strcmp(dotproduct.string(), "auto")) {
// Automatic detection. Nothing to be done.
} else if (!strcmp(dotproduct.string(), "generic")) {
// Generic code selected by config variable.
SetDotProduct(DotProductGeneric);
dotproduct_method = "generic";
} else if (!strcmp(dotproduct.string(), "native")) {
// Native optimized code selected by config variable.
SetDotProduct(DotProductNative);
dotproduct_method = "native";
#if defined(AVX2)
} else if (!strcmp(dotproduct.string(), "avx2")) {
// AVX2 selected by config variable.
SetDotProduct(DotProductAVX, &IntSimdMatrix::intSimdMatrixAVX2);
dotproduct_method = "avx2";
#endif
#if defined(AVX)
} else if (!strcmp(dotproduct.string(), "avx")) {
// AVX selected by config variable.
SetDotProduct(DotProductAVX, &IntSimdMatrix::intSimdMatrixSSE);
dotproduct_method = "avx";
#endif
#if defined(SSE4_1)
} else if (!strcmp(dotproduct.string(), "sse")) {
// SSE selected by config variable.
SetDotProduct(DotProductSSE, &IntSimdMatrix::intSimdMatrixSSE);
dotproduct_method = "sse";
#endif
} else if (!strcmp(dotproduct.string(), "std::inner_product")) {
// std::inner_product selected by config variable.
SetDotProduct(DotProductStdInnerProduct);
dotproduct_method = "std::inner_product";
} else {
// Unsupported value of config variable.
tprintf("Warning, ignoring unsupported config variable value: dotproduct=%s\n",
dotproduct.string());
tprintf("Support values for dotproduct: auto generic native"
#if defined(AVX)
" avx"
#endif
#if defined(SSE4_1)
" sse"
#endif
" std::inner_product.\n");
}
dotproduct.set_value(dotproduct_method);
}
}  // namespace tesseract

There is no need to modify the code. Just add -c dotproduct=native to the command line. You can also try -c dotproduct=sse, maybe it works, too.

Do as this？ConsoleApplication1 is my exe which called tesseract  dll, I do it on cmd.exe that:  ConsoleApplication1 -c dotproduct=native ,but it wrong also.

Still setting the command line in vs，my vs is vs2015.Still Where is it written?Can be detailed？My code level is relatively low.Thank you!!!

I disable AVX and SSE also wrong,There are other places that may cause this error？

Please try pull request #2620 which checks whether Windows supports AVX.

hello,I have try  #2620,but still failed.
I compared the code to debug in WIN10.In src\ccutil\params.cpp --
tesseract::ParamsVectors *GlobalParams()
end to the next step src\classify\intproto.cpp --
static double_VAR(classify_cp_angle_pad_loose, 45.0,  "Class Pruner Angle Pad Loose");
This error occurred in XP but it is normal in WIN10
.Do you know why?

Could you please give more details on the failure which you see?

I can't find other details.But I use tesseract-3.05 in XP is OK.Now I‘m using tesseract-3.05 now.

I can't find other details.But I use tesseract-3.05 in XP is OK.I‘m using tesseract-3.05 now.

After entering tesseract::ParamsVectors *GlobalParams()  63 times The error is generated.


Fixing send errors

I would be great at step 13 to link some guidance on what to do if the email doesn't arrive

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

ID: f17d1b33-af97-dada-924f-b764c6ce7f28
Version Independent ID: 7140da15-39e7-6ed7-2c3c-485df5e38d9b
Content: Create a marketing email (Dynamics 365 Marketing)
Content Source: ce/marketing/create-marketing-email.md
Service: dynamics-365-marketing
GitHub Login: @kamaybac
Microsoft Alias: kamaybac

Thank you for the great suggestion! We will work with the team to update the docs.


RPM repository

Is your feature request related to a problem? Please describe.
I need to download the DBeaver rpm package every time an update hits.
Describe the solution you'd like
There should be an rpm based repository for Fedora/Suse/CentOS just like there is one for deb based for Ubuntu/Debian.

thanks for suggestion

pretty pretty please.
dbeaver has really grown on me, but it would be so nice to manage updates easily on RHEL. it is also very nice to see dbeaver actively maintained and updated, but it is also equally annoying to have to manually download and update each time.

Please! Anyone can create RPM repository updates? <3

What is blocking this? I'm a n00bie at this RPM repo stuff, but how hard can it be?


How to send the X-My-Header variables?

I'm trying to send a message with an email template but I can't figure where to add X-My-Header and its variables in order to add dynamic data to the template.
This is the code:
mg.messages.create('domain', {
    from: 'mail',
    to: [email],
    subject: 'subject',
    template: 'template'
  })
  .then(res => console.log('Resolved >>>>> ', res))
  .catch(err => console.log('MAILGUN ERROR >>>> ', err))

Thanks.

Hi, @ParticleDuality there are two ways to use templates and variables:
using h:X-Mailgun-Variables or v:variableName:
here is the link where you can read more about templates: https://documentation.mailgun.com/en/latest/user_manual.html#templates

Closing, due to lack of activity.


Update all pre-existing Dataset nodes with correct info

[x] Script for updating dataset
[x] Query for updating dataset
[ ] Validation for updating dataset
[ ] Add species field

Done for FAO and WOAH


MVT encoding (or decoding) issue

Seems like in some cases geozero cannot read the MVT it generated.
Simple example:
#[test]
fn render_rect() {
    let shape = Rect::new(Coord { x: 0., y: 0. }, Coord { x: 1., y: 1. });
    let feature = Geometry::Rect(shape).to_mvt_unscaled().expect("mvt");
    let mut writer = GeoWriter::new();
    geozero::mvt::process_geom(&feature, &mut writer).expect("read MVT");
}

Dunno if the issue is in the encoder or the decoder.
Or maybe I'm doing something wrong?

Code looks legit at a first glance. What's the error message?

Error I get is:
read MVT: MvtError(GeometryFormat)

I tried debug a bit and it's coming from here.
My guess is that we somehow detect a interior ring (negative area) but since there is no outer ring to which it could belong we get the error.
So maybe a problem at write time?


Improve Handling of Tags

Tags may now properly contain non-standard characters.
For example, the tag:
"Hellö/Wörld"
is now properly created as "/tag/hello-world".
Additionally, tags now no longer have to be manually listed in the subclass section of posts; the css classes are now added automatically.

Very nice thanks!

@Xukinorris
Possibly.
Looks like I inadvertently slipped in a line to the Gemfile, when in reality we want to use the slugify built in to Jekyll.
That didn't cause problems for me, but clearly is causing problems for you (hence the warnings about duplicate keys that you saw).
Can you try installing the amended version on my repo to see if it fixes your problem? If so, I'll work to package a commit to send upstream here.


btor: add support for $pos cell

This PR adds support for the $pos cell type to the btor backend.
This is my first PR to yosys and I would appreciate any comments on style and any possible misunderstandings wrt. how the $pos cell is supposed to be interpreted. Thanks!

Thank you for the PR! This looks good to me. I don't have anything to comment on regarding the coding style. To check the intended interpretation of cells, I usually use the Yosys command help $pos+ which prints a Verilog model for the cell. Here this confirms that $pos does indeed do nothing apart from the width extension common to the other cells implementing various operators.


Interface/SDK: Redelegate transaction support

Add ability to redelgate in interface
Implementation updated to support this in SDK
Update SDK js lib package to support this

Figma designs:
https://www.figma.com/file/NFyHbLZXBSl3aUsMxtffvV/Namada-End-User-Interface-V1.0-%2F-Phase-1%3A-Block-Party?type=design&node-id=3968-2&mode=design&t=mWoF2N3EVo2YwmLj-0

Closing as done


remove unused "util" dependency from @azure/core-amqp

Packages impacted by this PR
@azure/core-amqp
Issues associated with this PR
none
Describe the problem that is addressed by this PR
It apepars that the "util" npm dependency is not used anywhere in the @azure/core-amqp library. But it is causing problems in our environment. We use @azure/service-bus which uses @azure/core-amqp and which causes the util npm package to be installed in node_modules/util. But that dependency is a polyfill for the nodejs util module to be used in browsers. It can/should be used by bundlers like webpack when bundling for the browser.
But having this as an explicit dependency of @azure/core-amqp causes the install to node_modules/util and our nodejs code now gets this polyfill when it does a require('util'), whereas it should just be getting the normale nodejs module.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
We tried to prevent the installation of node_modules/util with overrides in the package.json file, but that doesn't work. We also couldn't find a way to prevent hoisting of the util module to the top level node_modules.
Are there test cases added in this PR? (If not, why?)
Nope. The "util" package doesn't appear to be used anywhere in the library.
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[x] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
I don't think so, but I am not familiar with the SDK Generator
[ ] Added a changelog (if necessary)

/azp run js - service-bus - tests

@wvanderdeijl thanks a lot for you contribution!  Looks like we added it because our dependency rhea uses it.  I'd expect running in the browsers requires it, though we could document how to polyfill it.
https://github.com/Azure/amqp-common-js/pull/29/files#r264933517
https://github.com/amqp/rhea/blob/main/lib/link.js#L50

our nodejs code now gets this polyfill when it does a require('util'), whereas it should just be getting the normale nodejs module.

@wvanderdeijl Sorry for delayed resonse.  We feels that this change could potentially break existing customers so cannot merge it now.  Would it be possible if your nodejs code use node: prefix to prefer the core built-in require('node:util') instead?


tflite frontend reshape operator AssertionError assert op.BuiltinOptionsType() == BuiltinOptions.ReshapeOptions

Thanks for participating in the TVM community! We use https://discuss.tvm.ai for any general usage questions and discussions. The issue tracker is used for actionable items such as feature proposals discussion, roadmaps, and bug tracking.  You are always welcomed to post on the forum first :)
Issues that are inactive for a period of time may get closed. We adopt this policy so that we won't lose track of actionable issues that may fall at the bottom of the pile. Feel free to reopen a new one if you feel there is an additional problem that needs attention when an old one gets closed.
For bug reports, to help the developer act on the issues, please include a description of your environment, preferably a minimum script to reproduce the problem.
Based on the latest master branch, I used the following script https://www.dropbox.com/s/eooupdzsnxm5i8u/test_tflite_frontend.py?dl=0
and model file:
https://www.dropbox.com/s/qxiyfaiaefv57m8/simple_model_test_reshape.tflite?dl=0
Then got the following information:
assert op.BuiltinOptionsType() == BuiltinOptions.ReshapeOptions

AssertionError
==========================================
Print out get the following information:
op.BuiltinOptionsType() = 0
BuiltinOptions.ReshapeOptions = 17
It seems that the two 'reshape' operators are incompatible or something else.
Thanks
For feature proposals, list clear, small actionable items so we can track the progress of the change.

Could you please open a thread in the discussion forum https://discuss.tvm.ai? We generally use the forum to such discussions. Thanks.


Brighter white text in invert mode

Is it possible to have a patch that allow us to adjust the brightness of white text only in invert mode while remain the dark background?

Errm, white is white. Can't really go brighter than that, this is not HDR ;).

^ that

thank you all for your answers ❤


Letter case of "Gskartwii" in imports should be consistent

At the moment, imports read github.com/gskartwii/roblox-dissector/datamodel and github.com/Gskartwii/roblox-dissector/peer. All imports should use a capital G to be consistent with the GitHub username.

Additionally, README should be updated to reflect this convention.


Refs #32178 -- Fixed test_mark_expected_failures_and_skips_call teardown.

Test isolation failure observed on CockroachDB.

buildbot, test on oracle.

@timgraham Thanks :+1:


Compilation error when Enum type variable wrapped with if clause.

TypeScript Version:  2.0.10
Code
  transform(value:any, supportUnit?: SupportUnitTypes): any {
...
    let temp = "Some Text 0";
    if(supportUnit){
      switch(supportUnit) {
        case SupportUnitTypes.technical:
          temp+= "Some text 1";
          break;
        case SupportUnitTypes.business:
          temp+= "Some text 2";
          break;
        case SupportUnitTypes.manager:
          temp+= "Some text 3";
      }
    }
...
  }

Expected behavior:
if supportUnit is not null, complete temp base on it's value.
Actual behavior:
Compilation error on SupportUnitTypes.technical (first case) if wrapped with if(supportUnit){} block!

Let me guess: SupportUnitTypes.technical either implicitly or explicitly has value 0. If statement will filter out all falsy values so switch case for technical will never be hit

Let me guess: SupportUnitTypes.technical either implicitly or explicitly has value 0. If statement will filter out all falsy values so switch case for technical will never be hit

@mahyari as @vladima hinted, just change
if (supportUnit) {

to
if (supportUnit !== undefined) {

and all will be well :)

@mahyari as @vladima hinted, just change
if (supportUnit) {

to
if (supportUnit !== undefined) {

and all will be well :)

The problem is that this error prone, as in... it's very easy to forget to start your enum at 1 or check foo != null. It would be great if there would be a compiler/linter error for if (someEnum), or that typescript starts all enums at 1 instead of 0.


Introduce "session announcements" and session IDs used in LLMQ P2P messages

Instead of transmitting all the necessary information belonging to a signing session in every CBatchedSigShares and CSigSharesInv messages, we will now assign session IDs to individual signing sessions and send an announcement with the necessary information before sending the inventory and batched sigs messages. After the announcemetn, we use the session ID to refer to the session information.
This reduces the overhead in CBatchedSigShares from 97 bytes to 1-10 bytes (it's a VARINT). The overhead for CSigSharesInv is reduced from 33 bytes to 1-10 bytes.
I decided to implement this optimization after observing a lot of traffic being caused by CSigSharesInv messages while doing load testing with LLMQ based InstantSend.
I assume that in the old system the overhead would get more and more when bandwidth is low while load is high. The reason is that the system reverts to sending smaller but more frequent batches when bandwidth is low, resulting in queues to fill up and slowing down the system even more.
That problem is probably still there even with this optimization, but it should be less severe. I'll handle the actual problem in another PR (avoid sending small batches when nodes send buffers are non-empty)

Side note: should probably update DIP7 too.

DIP7 needs to be rewritten in general when it comes to the P2P protocol. A lot has changed in the meantime...

FYI, test failures seem to be unrelated to this PR and should be fixed by https://github.com/dashpay/dash/pull/2728

Rebased and force-pushed after merge of #2725


listHandles only works on a session you created

I'm building a tool to interrogate our Janus servers and build a graph of who is connected to whom.
Part of this process is to list all sessions then list their handles.
I can do this with direct http calls, but I cannot do it with janode.  If I try to list handles for a session I did not create, Connection._handleMessage complains that: "session xxxxxxxxxxxx not found for incoming message success".
Here: https://github.com/meetecho/janode/blob/master/src/connection.js#L194
It seems that Connection keeps a cache of sessions so the right session can handle responses.  But this is an admin function that takes a session parameter, and does not require one to establish a session first.
Here is some code to demonstrate the issue:
import Janode from 'janode';

const connection = await Janode.connect({
  is_admin: true,
  address: {
    url: "ws://<IP_ADDRESS>:7188/janus",
    apisecret: "janusoverlord"
  }
});

const r1 = await connection.listSessions();
console.log("Got sessions response", r1.sessions)
const r2 = await connection.listHandles(r1.sessions[0]);
console.log("Got handles response", handles);

connection.close();

I'm using a Janus with admin enabled on the websocket, and a videoroom call underway.
Here is the output:
2022-11-05T03:58:42.018Z - INFO : [janode.js] creating new connection
2022-11-05T03:58:42.021Z - INFO : [tmanager.js] [3340554914002515] creating new transaction manager (debug=false)
2022-11-05T03:58:42.021Z - INFO : [transport-ws.js] [3340554914002516] trying connection with ws://<IP_ADDRESS>:7188/janus
2022-11-05T03:58:42.032Z - INFO : [transport-ws.js] [3340554914002516] websocket connected
2022-11-05T03:58:42.032Z - INFO : [transport-ws.js] [3340554914002516] websocket ping task scheduled every 10 seconds
Got sessions response [<PHONE_NUMBER>136826,<PHONE_NUMBER>14233 ]
2022-11-05T03:58:42.035Z - INFO : [connection.js] [3340554914002516] requesting handle list
2022-11-05T03:58:42.036Z - WARN : [connection.js] [3340554914002516] session<PHONE_NUMBER>136826 not found for incoming message success

I'm using janode version 1.6.4

Thanks for responding @atoppi.
I should have mentioned I have a workaround - I just send a list_handles directly to the Janus HTTP admin API.


The previous temporary tab becomes a permanent tab if try to open another temporary tab

Storage Explorer Version: 1.35.0-dev (98)
Build Number: 20240526.1
Branch: main
Platform/OS: Windows 10/Linux Ubuntu 22.04/MacOS Sonoma 14.5(Apple M1 Pro)
Architecture: x64/x64/arm64
How Found: From running test cases
Regression From: Previous release (1.34.0)
Steps to Reproduce

Expand one storage account -> Blob Containers.
Select one blob container -> Click it to open a temporary tab.
Expand 'File Shares' node -> Select one file share -> Click it to open a temporary tab.
Check whether the temporary blob container tab is closed and a temporary file share tab is opened.

Expected Experience
The temporary blob container tab is closed and a temporary file share tab is opened.

Actual Experience

The temporary blob container tab becomes a permanent tab.
Shows file shares editor with a blob container tab title.

Additional Context
The tab can't be closed by pressing the "x" or clicking 'Close'.

So, the visible tab is still technically the temporary tab. What's happening is the view isn't responding to the underlying temporaryTab observable changing. I suspect it's because the tab component's view model itself is not an observable. This means the view is sort of stuck showing the first temporary tab.
There are two ways to approach this:

Make sure the tab component's view model is an observable. Not as clean, because it would require updating the Component base class in ui-component, and I haven't gotten it to work yet.
Use an observable array to hold the temporary tab instead of a simple observable. Perhaps not quite as intuitive, but requires minimal changes and mirrors how permanent tabs are managed.

The latest build that contains this fix have problems when opening it, will verify on a new build.

Verified this issue on the main build 20240614.1. Fixed.


Export AppOptions

This is needed when creating a custom application.

Actually, this is probably not needed, as it's only useful for tree-shaking, when importing the file directly.


Replace "dataBinding = true" with "dataBinding true" in app/build.gradle

= is redundant here. It is slightly better to omit it for simplicity, as in the official documentation.

Thank you for the PR!

Thank you for the PR!


Switch layout system to Morphorm

The layout system in tuix has been separated into the Morphorm crate. Tuix now needs to use this crate for layout.

Could we also emphasize this in the readme? Currently it says Tuix is based on flexbox which doesn't seem to really match Morphorm IMHO.

Yes you are quite right that the readme does not correctly reflect the features of tuix. Part of reason for this is that the main branch is very out of date at the moment. Very soon I will merge the work done on other branches into main and update the readme with a better description of the features including the layout system.


[fix] #4014: Use method(not field) access in client

Description

Linked issue

Closes #4014

Benefits

Checklist

[ ] I've read CONTRIBUTING.md
[ ] I've used the standard signed-off commit format (or will squash just before merging)
[ ] All applicable CI checks pass (or I promised to make them pass later)
[ ] (optional) I've written unit tests for the code changes
[ ] I replied to all comments after code review, marking all implemented changes with thumbs up

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 10 (10.0%)  changed or added relevant lines in 3 files are covered.
6919 unchanged lines in 129 files lost coverage.
Overall coverage decreased (-3.6%) to 55.849%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

client_cli/src/main.rs
0
3
0.0%

client/src/client.rs
0
6
0.0%

Files with Coverage Reduction
New Missed Lines
%

client/src/lib.rs
1
0.0%

config/base/derive/src/view.rs
1
99.37%

config/src/block_sync.rs
1
95.0%

config/src/network.rs
1
93.75%

config/src/torii.rs
1
96.0%

config/src/wasm.rs
1
87.5%

core/src/smartcontracts/isi/block.rs
1
87.5%

config/src/kura.rs
2
79.41%

config/src/lib.rs
2
0.0%

ffi/src/option.rs
2
71.43%

Totals

Change from base Build<PHONE_NUMBER>:
-3.6%

Covered Lines:
22068

Relevant Lines:
39514

💛  - Coveralls


How to add animated icons

Describe your problem here.
I just want to add animated icons just like sans's in indie cross without lua
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
I added menu characters in the main menu

Duplicate #8522

E

Found out
iconP1.frames = Paths.getSparrowAtlas('icons/[ICONNAME]')
iconP2.frames = Paths.getSparrowAtlas('icons/[ICONNAME]')

iconP1.animation.addByPrefix('normal', 'normal', 24, true);
iconP2.animation.addByPrefix('normal', 'normal', 24, true);


Update de.json

Moved "Mount" to "Partition". that would be the german word for it.

Thx for your contribution ! ;)


Proposal to change Android MinSDK version

Hi guys,
Any thoughts on upgrading Android SDK from 1.5 -> 2.3 or 4.0, by looking on Android distribution table, we can notice that there is only 0.7% devices running Android 2.3.3.
Why do I come up with idea of upgrading minSdk is obviously for Material Design(esthetic) 😅

Please see my blog post earlier this month about this very issue.


Linting improvements

@cbaines https://github.com/alphagov/calculators/pull/422 is failing with linting errors, but didn't make any changes. Any idea what's going on?

@cbaines #422 is failing with linting errors, but didn't make any changes. Any idea what's going on?

I think that's due to the interleaving of these changes, and an upgrade of govuk-lint https://github.com/alphagov/calculators/pull/408 .


When BatchNormalization layer is shared Siamese-style, moving_variance is calculated incorrectly.

When BatchNormalization layer is shared Siamese-style, moving_variance is calculated incorrectly. In the code below, if BatchNormalization is not shared (if branch of the conditional) the final weights are correct:
[ 1.00000203  1.          0.99995679  0.99995679]

the order is
[gamma, beta, moving_mean, moving_variance]

but if the BatchNormalization layer is shared (else branch of the conditional), the final weights are incorrect:
[  0.00000000e+00   6.13518556e-37   9.99296010e-01   0.00000000e+00]

namely, moving_variance (last weight) is zero, which is the most likely, the root cause of it. It's as if one of the shared BatchNormalization layers, overwrites moving_variance of the other. Note that moving_mean is calculated correctly in a shared way. gamma and beta also work "correctly" to compensate for the wrong moving_variance.
# Script for reproducing a BatchNormalization bug
# https://gist.github.com/ozabluda/11326307bbf13936f18063a1a4165adc

from keras.models import Sequential, Model
from keras.layers import Dense, BatchNormalization, Input, concatenate
import numpy as np

m = Sequential([
    BatchNormalization(input_shape=(1,),
                       center=True,
                       scale=True,
                       gamma_initializer='zero',
                       beta_initializer='one',
                       moving_mean_initializer='zero',
                       moving_variance_initializer='zero',
                       epsilon=0.00001
    ),
])
m.summary()
print(m.layers[0].weights)

if False: # not shared
    x  = np.array([0, 2])
    y  = np.array([0, 2])

    m.compile(optimizer='sgd', loss='mse')
    print(m.evaluate(x,y), m.predict(x))
    print(np.array(m.layers[0].get_weights()).ravel())

    m.fit(x, y, verbose=0, epochs=1000)

    print(m.evaluate(x,y), m.predict(x))
    print(np.array(m.layers[0].get_weights()).ravel())

else: #shared
    input_a = Input(shape=(1,))
    input_b = Input(shape=(1,))

    processed_a = m(input_a)
    processed_b = m(input_b)

    c = concatenate([processed_a, processed_b])
    c = Dense(1, kernel_initializer='ones', use_bias=False, trainable=False)(c)
    s = Model([input_a, input_b], c)
    s.compile(optimizer='sgd', loss='mse')
    s.summary()

    x0 = np.array([0])
    x1 = np.array([2])
    x  = [x0,x1]
    y  = np.array([0])

    print(np.array(s.layers[2].layers[0].get_weights()).ravel())

    s.fit(x, y, verbose=0, epochs=200)

    print(s.evaluate(x,y), s.predict(x))
    print(np.array(s.layers[2].layers[0].get_weights()).ravel())

========

[x] Check that you are up-to-date with the master branch of Keras. [OZ: Keras version is after https://github.com/keras-team/keras/pull/8785

[x] If running on TensorFlow, check that you are up-to-date with the latest version. [OZ: TF is 1.4.1]

more experimentation:
    x0 = np.array([0, 4])
    x1 = np.array([2, 0])
    x  = [x0,x1]
    y  = np.array([0, 0])

also produces wrong moving_variance:
[  0.00000000e+00   6.13518556e-37   1.49986613e+00   2.49955583e+00]

but now my hypothesis is that BN calculates average of 2 variances:
    print(np.var(x), np.var(x0), np.var(x1))

outputs
(2.75, 4.0, 1.0)

and
2.49955583e00 = (4.0+1.0)/2

If you share a BN layer:

across two independent models: when training model A, the BN layer's weights will be updated with the batch statistics of the data from model A; and reciprocally. Basically: we only run the updates that correspond to the model you're training
inside a same model (what you are doing): all updates get run, thus they get averaged across all data flows (because the corresponding updates are incremental). This is what you're seeing. This is in fact the correct behavior.

If you want to compute updates for one data flow only, you can call layer(x, training=False) for one of the branches. E.g.:
x1 = Input(...)
x2 = Input(...)
layer = BatchNormalization(...)
y1 = layer(x1)
y2 = layer(x2, training=False)

That's definitely not a correct behavior, but I can't tell if it's a bug/misfeature in Keras or the TF backend (if so, I'll file the bug report there).
If I understand correctly, shared BN independently calculates moving_mean and moving_variance, then averages them at some later point (after each minibatch?), which for the combined dataflow actually produces correct result for moving_mean, but a nonsensical one for moving_variance [1]. A correct behavior would be to first average moving_mean, and only then calculate and average moving_variance relative to this shared moving_mean.
[1] Although for individual dataflows, neither moving_mean nor moving_variance are correct, which I think is intuitive, since a single set of moving_mean, moving_variance can't possibly fit two different datasets.

Just in case anyone who happened to face this issue:
I fixed the problem by writing a custom shared Batch normalization layer. That batch norm layer has its own beta and gamma parameters as usual. It, however, receives two inputs, and the mean and variance are computed based on statistics from both the two inputs.
The beta and gamma vectors are interacted with shared mean and variance.
It is actually very interesting to write that custom layer.

It is actually very interesting to write that custom layer.

Gist please?

When I have a large number of shared weighted subnetworks (~350), training will be normal but when performing inference, the result will be nan... I am really interested to see how you implement a shared weight version of batch normalization. Would you mind sharing your code?

Hello @MaxChu719
Sorry I wrote the code for a project at a company, and thus I am not able to share it publicly.
I also want o say that it is trick but not that super difficult to implement. What you need to do is to look at the original code of Batch Normalization (https://github.com/keras-team/keras/blob/master/keras/layers/normalization.py#L16), and then extend it. The inputs should have both sides (left and right) for Siamese networks as well.


Variant of Bar Chart

I'm a bit new to D3 and trying to understand exactly how to make something like what is described in the SoF post below. I tried looking through bl.ocks.org but hadn't had much luck finding something simple to get started with. Any help is appreciated.
http://stackoverflow.com/questions/37842879/how-to-make-a-radial-bar-chart-d3-js

You can start from a Donut Chart

Modifying it to stagger the innerRadius and outerRadius, you can get this intermediate result:

From there you can modify the startAngle and endAngle of each slice such that the startAngle is fixed, and the endAngle varies from 0 to 2PI. The result is this Radial Bar Chart.

This is possible with D3, but I'm not sure it's a good visualization technique. The values for each slice to not correspond to the area they occupy on the screen. The slices that are farther from the center will occupy more area per unit of value, so perceptually it actually distorts the data, rather than presenting it clearly.

Please use Stack Overflow tag d3.js or the d3-js Google group to ask for help. These issues are for feature requests and bug reports only. Thank you!


Add opacity setting

Simple as that! Adds a setting 1-10 for opacity levels.

Merged into dev branch.


Any plan for update ? Renaming miis ?

I was wondering if you were planning into updating this, and if so, do you have an idea when ? It has been almost a year ahah.
Also I'm having a hard time with renaming existing Miis in Miitopia, what kind of data do your import/export deal with ? I though it was binary but when duplicating and only renaming a Mii from the Switch, the save data of the two miis exported from your save editor have too much difference, I couldn't isolate the name.
My issue is that I have miis with makeup and I'd like to rename them by editing the exported data, because else I'll need to redo entirely the makeup...
I see that you use VBS, so feel free to help me out with how the exported data is (binary ? hex ? encrypted ?), might get around myself.
Thanks for reading, have a nice day,

Hi, I will update save editor but I don't know when. For now, I work on an update for Tomodachi Life save editor.
Save data is editable in hexadeciamal.
Mii 1 name :  0x2FE8 |
+0x800
Mii 2 name : 0x37E8 |
You can edit name yourself in a hex editor waiting for the next update. I'll try to do this soon