Possible issues

I found this on Reddit but I decided to post here because my comment got too long.
Disclaimer: I'm making https://github.com/fjall-rs/lsm-tree, so I have some experience with LSM-trees.
I don't really know Go well so some stuff may be wrong, but reading through a bit of the code I feel like there are some questionable things I think:

The tombstone is a fixed value, so one could break the implementation by writing a "$tombstone" value manually. Also this makes tombstones unnecessarily large.
I don't understand the "granular page locking" stuff - you don't need locking on SSTables... they are immutable. I don't understand the idea of the "pager" and "pages" at all... you don't seem to use block-based SSTables, that's why I can't find index blocks, but that probably makes compression pretty ineffective compared to RocksDB. Are pages cached, if so, what's the cache size? Is it set correctly for RocksDB as well?
The Cuckoo filter seems to return null if it returns false... but Cuckoo filters are still a probabilistic data structure, or are you making sure it has a FPR of 0.0? Otherwise it may return a wrong result. How much memory does the Cuckoo filter use, considering you have to index every key?
I don't see any notion of "levels" in the tree, K4 seems to support range queries, but there seems to be a single level, so you are doing size tiered compaction. How many SSTables are usually kept around? Looking at the compaction, there's a timer which I don't think makes sense. When you have a burst traffic of writes you will end up with more SSTables and have to wait, possibly 1 hour, for the compaction to fix up your read performance. Compactions should operate on the current state of SSTables in the LSM-tree.
The flushes and compactions don't seem to fsync their data before appending the new SSTables.
Transactions are really just write batches?
The conclusion in the wiki is obviously written by an LLM, not to mention there are wrong statements (in point 4) like K4 having atomic transactions (as if RocksDB doesn't do that) and being able to recover SSTables from the WAL... which makes no sense? You recover memtables from a WAL (as you seem to do as well).
Also I think having to call RecoverFromWAL manually is a recipe for disaster. The readme says If you have a populated WAL file in the data directory but no data files aka sstables, but I don't understand that. What's the connection between having no SSTables and recovering a WAL? You always recover a WAL to restore the memtable(s), no matter if you have SSTables or not.
Benchmarks use HDD, which probably hides inefficiencies in the read path; also RocksDB is typically run on SSDs.
By default, RocksDB flushes writes to OS buffers... does K4 do that as well? If not, it should be disabled for RocksDB (manual_wal_flush = true) to make the comparison more fair.

https://github.com/fjall-rs/fjall good stuff.  I saw this as well out there, gave it some love as well.

If you have any more questions do let me know.  I am getting a coffee now, will work on the tombstone patch.  Cheers!

I just tried it in a new Go project:
package main

import (
	"fmt"
	"github.com/guycipher/k4/v2"
	"log"
	"time"
)

const (
	DB_PATH = "testdb"
)

func main() {
	numOps := 10000000

	db, err := k4.Open(DB_PATH, (1024*1024)*128, 3600, false, false)
	if err != nil {
		log.Fatalf("Error opening K4 database: %v", err)
	}
	defer db.Close()

	key := make([]byte, 20)
	value := make([]byte, 20)

	// Benchmark Put
	start := time.Now()
	for i := 0; i < numOps; i++ {
		key = []byte(fmt.Sprintf("key%d", i))
		value = []byte(fmt.Sprintf("value%d", i))
		if err := db.Put(key, value, nil); err != nil {
			log.Fatalf("Error putting key: %v", err)
		}
	}
}

is my code.
It ended up writing a 40 GB WAL, and 3 SSTables with 18 GB, 18 GB and 7 GB respectively, and taking about 100s. That's roughly a space amplification of 200. It also used more than 6 GB of RAM.
erd --human --hidden testdb

 7.0 GiB ┌─ sstable_2.sst
16.8 GiB ├─ sstable_1.sst
17.1 GiB ├─ sstable_0.sst
40.5 GiB ├─ .wal
81.5 GiB testdb

time ./main

real	1m43,356s
user	6m24,043s
sys	1m19,227s

My system is i9 11900k, Samsung 990 EVO.

Thank you! excellent run on great hardware.  I can see something I’ve been seeing more frequently is the size of the sstables are huge compared to the configured threshold.  In your example I can see the flush threshold of 128mb there should have been 340 ish sstables.  That’s a bug, most definitely.  When you write 6gb memory usage, that’s through the write operations?  That’s not too bad for the about of key values, in my mind.  Could be optimized for less usage I’d imagine.

When you write 6gb memory usage, that’s through the write operations?

It's about 4 GB, after 10 seconds the writes are "finished" and it goes into the 90 seconds of ???, and goes to about 6 GB. Without having checked, I would expect RocksDB to use maybe 100-200 MB here.

The WAL is sorta a given

I have written just 400 MB of data. That's why every database rotates & truncates the WAL at some point (normally when doing memtable flushes). It's not feasible to keep a WAL that large.

On close we flush memtable and wait for operations to finish that includes synchronization and background operations.  In this case stated it shouldn’t be that long. It’s taking that long cause of how large the sstables are, if they followed through with the threshold it would be faster on closure.  I am working on this bug currently.
Hm interesting.  I could truncate wal after each flush this could work.  Good idea !

Honestly @marvin-j97 im very appreciative eh.  Very.  Thank you for taking the time to do this.

Just noting this for the sstables flush size issue.
func (n *Node) Size() int {
	//size := len(n.key) + len(n.value) + len(n.forward)*int(unsafe.Sizeof(uintptr(0)))
	//if n.ttl != nil {
	//	size += int(unsafe.Sizeof(*n.ttl))
	//}
	//return size

	return int(unsafe.Sizeof(*n)) + len(n.key) + len(n.value)

}

Is giving a more consistent size of the skiplist nodes, thus a better flush guarantee from my tests.   Essentially the problem with to little sstables is from my tests currently because the skiplist size isnt be reported as the threshold.  This works better.  I am testing more and will commit shortly.

I'm gonna change pager size to 1024.  Honestly its vastly inefficient as encoded operations, encoded key values are rarely I mean based on the application hit that and if they did the pager will create and link overflow pages, on read its all constant time to gather the page and overflows, I dont see why this would be inefficient.  I think it would shrink the overall file sizes across the board.

Could things I noticed is that Go's Gob package which encodes the structures like operation, and keyvalue are not optimized for space, this is causing these structures to significantly grow in size after encoding.   To counter this yes, protobuff, msgpack, something like this could be used or a custom solution.

In 2.1.7 I tested 1 million key value pairs with your code.  I got back a memtable of 95.3 MB.  After the flush to disk the file was 1gb.  This is definitely not the pager, I am seeing these encoded structures span multiple pages.

Even with basic encoding and decoding methods not using gob though not fully optimized are still increasing each encoding up by a factor of approximately 371 times.  It's hard to get this down as these structures are complex.
package main

import (
	"fmt"
	"github.com/guycipher/k4/v2"
	"log"
)

const (
	DB_PATH = "testdb"
)

func main() {
	numOps := 1000000

	db, err := k4.Open(DB_PATH, (1024*1024)*5, 3600, true, false)
	if err != nil {
		log.Fatalf("Error opening K4 database: %v", err)
	}
	defer db.Close()

	key := make([]byte, 20)
	value := make([]byte, 20)

	// Benchmark Put
	for i := 0; i < numOps; i++ {
		key = []byte(fmt.Sprintf("key%d", i))
		value = []byte(fmt.Sprintf("value%d", i))
		if err := db.Put(key, value, nil); err != nil {
			log.Fatalf("Error putting key: %v", err)
		}
	}
}

real    0m12.808s
user    0m10.124s
sys     0m6.882s

This creates

Which is more acceptable.  So toying with the flush size is pretty important and seeing the outcome.   (1024*1024)*5 works well, the files are roughly 56mb.

In the case again of WAL, we want to be able to recover K4 or rebuild it on another server from the WAL so truncating it wont work. It's possible to add some sort of checkpointing but not sure yet.

That's what the SSTables are for. To rebuild an LSM-tree you send over the SSTables and the current WAL fragment.


WINkey+. is missing from Shortcut Guide

WINkey+. is missing from Shortcut Guide
With this Emoji's are shown 😎 and easy to insert in whatever text field
(Version 0.33.1)

This is already tracked in https://github.com/microsoft/PowerToys/issues/179


Share Sheet doesn't allow to use own BranchActivityItemProviderDelegate

I would like to map channel attribute when I use showShareSheet on BranchUniversalObject but I am not allow to do it because showShareSheetWithLinkProperties:andShareText:fromViewController:completion: method cannot pass delegate. The method on the bottom creates item providers using this:
UIActivityItemProvider *itemProvider = [self getBranchActivityItemWithLinkProperties:linkProperties];

And it uses the following method with a niled delegate:
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage campaign:(NSString *)campaign tags:(NSArray *)tags alias:(NSString *)alias {
    return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage campaign:campaign alias:alias delegate:nil];
}

BTW. There is no getBranchActivityItemWithParams method that set not-nil value to every parameter of BranchActivityItemProvider init.

You should use a BranchShareLink object, which is a newer and better way to share Branch objects.
You can set a delegate on the BranchShareLink and the delegate object will be called back so your app can override link settings like channel or the sharing text based on the activity that the user selects.
Here's some example code:
https://github.com/BranchMetrics/ios-branch-deep-linking/blob/master/Branch-TestBed/Branch-TestBed/ViewController.m#L342-L365
Be sure to set the delegate:
https://github.com/BranchMetrics/ios-branch-deep-linking/blob/master/Branch-TestBed/Branch-TestBed/ViewController.m#L303
Here's an example of the delegate methods. Both are optional:
https://github.com/BranchMetrics/ios-branch-deep-linking/blob/master/Branch-TestBed/Branch-TestBed/ViewController.m#L342-L365
You can post any questions about this here.

If you have questions about this you can reopen the issue and I'll be glad to help.


Add a --list-tests command line argument to describe the tests of a given specification

For instance, if one wants to know which are the titles, descriptions and IDs of all tests available in the Google Fonts specification, then it would possible to list that info with the following command:
fontbakery check-googlefonts --list-tests

Without this, one has to look at the FontBakery source code in order to figure out which are the available test IDs (or, alternatively, the IDs can be seen in the terminal output after running the full spec once).
Providing a --list-tests sounds reasonable. We may even think of a --list-specs as well in the future.

Did someone request this? If so I suggest a sooner milestone

Me and Lasse came up with this as an insight while talking to Marek at ATypI last week.


Excessive amount of portals in dom

Summary:
Hi, it's rather a question (not sure if an issue but wanted to bring your attention to this case), if portals should be created even when Modal has isOpen state set to false. We are having quite a big app with many items opening modals.  Version used is:  "react-modal": "3.6.1". Whenever we use modal and leave mounting / showing logic to be handled there - we end up with having an outrageous number of portals been created.

Is there a reason you create them on ''mount'' even though the  isOpen state is set to false?
I tried to handle this by doing conditional render on modal, but that is duplicating logic both in component and in modal.
Thanks!
Steps to reproduce:

Expected behavior:
I Would expect React Modal Portal to be created on Modal's Open event.
Link to example of issue:

Additional notes:

Same here

Hi @tomsonpl @adambartniak, can you make a reproducible example, please?

@tomsonpl Seems that everytime you create a  tag it adds a portal class for it.
This is the code I used before that had lots of portal classes, like in your case
                    <Modal
                        className="crm-modal"
                        isOpen={this.modalIsOpen}
                        contentLabel="Example Modal"
                        onRequestClose={this.closeActivityModal}
                    >

I am a modal

                        <button onClick={this.closeActivityModal}>close</button>
                        <form>
                            <input/>
                        </form>
                    </Modal>

and here is the same code that I updated so that it only shows the modal if it's supposed to be open. This only generates 1 portal class for each open modal. I wonder if there's any downside to it though.
                {this.modalIsOpen ?
                    (<Modal
                        className="crm-modal"
                        isOpen={true}
                        contentLabel="Example Modal"
                        onRequestClose={this.closeActivityModal}
                    >

I am a modal

                        <button onClick={this.closeActivityModal}>close</button>
                        <form>
                            <input/>
                        </form>
                    </Modal>)
                    : null
                }

@pixelplant this is exactly the case, and exactly how I tried to work around it. However it doesnt seem clear to have opening logic duplicated.                {this.modalIsOpen ? and                          isOpen={true}  while we could have it in isOpen={this.modalIsOpen} only.

pen modal. I wonder if there's any downside to it though. The functionality seems to be the same.

Do you have transition for modals? Does it work as expected?

@diasbruno  thanks, however this does not answer "WHY" ;p what is the upside of handling "OPEN state" inside modal,  against conditional rendering the whole modal in the first place.  It doesn't sound sane to render PORTAL x 50, when you can have just one.

Hello, @diasbruno the question is whether it is possible to conditionally render React.createPortal for projects with React v16 or above. The condition would be modal open state.
I see the argument behind backward compatibility and code coherence, but, to begin with, do we really need to keep backward compatibility for React lower than v16, I suggest major version bump and provide the best experience for developers using current React major version. Of course only when we establish that this is possible as asked above.
Considering using modals in lists, it is always possible to use less modals, or move them up the component tree, but that binds users to specifically think about optimization solely because or react-modal package. Furthermore, it almost always increases code complexity, so not always a good solution.
My point is to present my own use case issue and to suggest possible solution, your decision though. I will use react-modal anyway, because it is a great work :) Thanks!

Hello, @diasbruno just wanted to check in and see if this was anywhere in the pipeline, or if anything has changed between then and now. Thanks!

@VicFrolov No...sorry.

Hello @diasbruno any updates on this issue? 🤞

@zanderlan-n Are you adding a modal inside of a component that is created from a list?

This is not an issue.
My 2 cents is that the application has a modal inside of a component that is rendered from a list.
It's the only case where this is possible (if you have this number of modal in your application, than the problem is the application :joy:).
So you have a problem of coupling vs cohesion. If you have this scenario, the solution is to move the modal outside of the component that goes in a loop.

Also, each modal creates its own node, because we can have nested modals.

Couldn't you just create an abstraction over the modal and return null if the modal isn't opened. E.g.
import classNames from "classnames";
import ReactModal from "react-modal";

ReactModal.setAppElement("#root");

export const Modal = ({ children, isOpen, handleClose, className, style }) => {
  if (!isOpen) {
    return null;
  }

  return (
    <ReactModal
      isOpen={isOpen}
      onRequestClose={handleClose}
    >
      {children}
    </ReactModal>
  );
};

This way, you don't have to wrap your logic into those strange ternary operators. Cheers

@agjs This does the same thing we already do internally though.
But...making the modal's children dynamic is the way to go.
But...having too many portal elements doesn't cause any problem.


Use App configuration as default configuration for the project

Latest change still doesn't seem to work on my side. Create a fresh clone of the project directly via command line, checked out this branch, then opened in AS EE Canary 9, and after sync finished app-nia-catalog was still the first entry in the run configuration.

Can you try one more time?
Steps to reproduce:

Fresh clone of the project
Open Android Studio, File > New > Import project...
Your project should have 2 configurations, app and design catalog

Result with the latest changes:

Fresh clone, checkout this branch
Open project
While project is syncing, the 2 configurations are app and design catalog, with app selected
Once syncing completes, there are 3 configurations: app, design catalog and app-nia-catalog, with app-nia-catalog selected

Just retested this and had the same result as @alexvanyo. app-nia-catalog is the default run configuration.

Closing due to inactivity


fix: Fix some typos

What's the purpose of this pull request?
This PR intends to fix typos I've found scattered across the codebase.
How it works?
I've run cspell "**" -e "node_modules" > "spell.txt" across the codebase.

cspell is an npm package I've installed with yarn.
The "**" arg tells it to search across all codebase.
The -e "node_modules" excludes the node_modules folder from the analysis.
the > "spell.txt" saves the output in a file called spell.txt which I manually parse and analyze afterwards to search and destroy typos.

How to test it?
Just renaming variables or editing comments. Nothing should have changed at all.
References
cspell
Code Spell Checker

What a great tool! 🚀🚀🚀


Style/AsciiComments default Enabled is true

I know that you can change it to be disabled, but it seems a bit odd that Style/AsciiComments is enabled by default. I only noticed when working on a Japanese project, and I put Japanese in a comment.
I understand wanting this for identifiers, constants, etc., but why for comments?
If it's to enforce English comments, I don't think it should be on by default. It sends the message that RuboCop is, by default, for English speakers and not for the global audience.
If it's to enforce Ascii encoding for the file, that is rare nowadays (since Ruby v2), so it seems like AsciiComments should still be defaulted to disabled (since the majority of Rubyists now have source files defaulted to UTF-8).
Thanks for the consideration, and I understand if it will remain defaulted to enabled.

I agree. This also precludes emojis in comments.

#72 for historical context.

Yeah, the idea was mostly to make sure that people stick to English in comments, with the assumption they'd likely have an international team working on the codebase. The cop was inspired partly from my own experience working in German/Austrian company where many people didn't know English yet the German and Austrian devs would often use German for identifiers and comments making it hard for people like me to understand what they meant. :-) OSS libraries are commonly documented in English as well.
I'm fine with retiring this cop, as agree it's somewhat controversial, plus detecting what's really English is pretty complex. Still, this can't happen before RuboCop 2.0. I guess we should also change the cop's name and improve it's documentation.

I guess in a somewhat related note the enabled-by-default Style/NumericLiterals requires numbers to be grouped by 3s by default:
100_000

But Japanese (and probably Chinese as well?), like to group it in 4s:
10_0000

If want to make it more international-friendly, maybe either turn this off by default or add a groupby option to the cop.
Actually, I ran into this when testing with Chinese phone numbers, which are grouped by 4 in mainland China:
phone = 12_3456_7890


Implement Measurement

Fixes #19

@rultor merge

@rultor merge

@suseika OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@suseika Done! FYI, the full log is here (took me 1min)


How to make the chatbot remember?

Hi i am using your chatbot but it only uses the engrams. Everything i say it does not save it just follows the engrams conversation how do i make it remember the conversation and create a engram so i can train it through talking? Like cleverbot?

Can you confirm that your responses to chatterbot are being saved and that the flag for logging is set to true? (Logging is enabled by default).

Looking into this a bit more I realized that there was an issue with common responses not being returned. The frequency at which a statement is received by the chat bot is now taken into consideration when returning responses such that more common statements are returned with precedence. This change was made for #31.


fix: 管控区域article样式问题修复(closed #2420)

Reviewed, transaction id: 17281
PR
CheckList（PR Assigners）
确认已完成以下操作：

[ ] 已将分支与当前合入分支同步
[ ] 已在关联 Issue 中补充「功能自测」部分内容
[ ] 已更新关联 Issue 的状态 backlog -> todo -> for test -> tested（需通过测试同学测试） -> done
[ ] 将 PR 添加上 pr/reviewable

CheckList（PR Reviewers）
确认已完成以下操作：

[ ] 检查关联 Issue 「功能自测」部分内容
[ ] 必要时打回 pr/reviewable，要求重新修改
[ ] 及时 Approve

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Please upload report for BASE (v2.4.7-dev@a5e8332). Learn more about missing BASE report.

Additional details and impacted files
@@              Coverage Diff              @@
##             v2.4.7-dev    #2421   +/-   ##
=============================================
  Coverage              ?   75.16%
=============================================
  Files                 ?      405
  Lines                 ?    29104
  Branches              ?        0
=============================================
  Hits                  ?    21876
  Misses                ?     7228
  Partials              ?        0

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


_includes/head.html does not include header

Adding _includes/head.html file does not add anything to the header.
I also modified index.md
---
layout: home
---
<head>{% include head.html %}</head>

Still no luck. It is said in the documentation, that themes out of the box provide this functionality. Is there something going wrong that I can't see?

Hi! I would need to look at the content of your _includes/head.html file to see exactly what you are trying to do, but here are a few thoughts.
First, you mention you're trying to add a header, but what you seem to be trying to add is an html head. And you are adding it to the content of index.md, but in doing so you're placing it inside the html body. This will not work.
Second, the theme already includes an html head (correctly placed outside the body). You can see it in the _layouts/default.html file, which specifies the base layout of every webpage. Take a look:
https://github.com/piazzai/hacked-jekyll/blob/master/_layouts/default.html
The homepage replaces {{ content }} on line 25 with the code included in _layouts/home.html. This code reads the information provided as part of the _data/json.yml file to render the json block. It ignores the content of index.md. The only thing it reads from index.md is the front matter. This is why anything you add there will never show up.
If you show me the content of your _includes/head.html file, I'll be able to tell you how to best achieve what you're trying to achieve.


fresh install: some vars in env files ignored

Context

I am freshly installing a new server. However, a few parts of the env-mailserver file I am trying to use seem to be ignored. sasl and tls and postmaster
This makes me wary on what other things are also wrong perhaps.

1- My tls configuration is not working. So I had to adjust by hand (see below).
2- I do not know if the sasl config breaks things.
3- lot of errors since the postmaster address is not present in the config
Expected Behavior

The mailserver should start with the appropriate variables as given in the env-mailserver.
Actual Behavior

the postfix main.cf and master.cf doe not hold the right variables.
Here is the dir with the docker-compose.yml file:
root@mail [ ~/containers/base/tomavmail ]# ls -alll
-rw-r----- 1 root root  1279 Feb 10 22:18 docker-compose.yml
-rw-r----- 1 root root   445 Feb 10 14:52 .env
-rw-r----- 1 root root 15162 Feb 10 22:17 env-mailserver
-rwxr-x--x 1 root root  6433 Feb 10 14:50 setup.sh

Variables that are wrong for instance:
egrep "ssl|sasl" /var/lib/docker/volumes/tomavmail_etc/_data/postfix/main.cf
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
and also
SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_type = dovecot
Below you can see how the variables in the env-mailserver file are different from those in main.cf
root@mail [ ~/containers/base/tomavmail ]# egrep -v "#" env-mailserver | egrep [A-Z]
OVERRIDE_HOSTNAME=
DMS_DEBUG=0
ONE_DIR=1
<EMAIL_ADDRESS>PERMIT_DOCKER=
TLS_LEVEL=
SPOOF_PROTECTION=1
ENABLE_SRS=0
ENABLE_POP3=1
ENABLE_CLAMAV=1
ENABLE_FAIL2BAN=1
ENABLE_MANAGESIEVE=
POSTSCREEN_ACTION=enforce
SMTP_ONLY=
SSL_TYPE=manual
VIRUSMAILS_DELETE_DELAY=
ENABLE_POSTFIX_VIRTUAL_TRANSPORT=
POSTFIX_DAGENT=
POSTFIX_MAILBOX_SIZE_LIMIT=
POSTFIX_MESSAGE_SIZE_LIMIT=60240000
REPORT_RECIPIENT=1
<EMAIL_ADDRESS>REPORT_INTERVAL=daily
ENABLE_SPAMASSASSIN=0
SA_TAG=2.0
SA_TAG2=6.31
SA_KILL=6.31
SA_SPAM_SUBJECT=***SPAM*****
ENABLE_FETCHMAIL=0
FETCHMAIL_POLL=300
ENABLE_LDAP=
LDAP_START_TLS=
LDAP_SERVER_HOST=
LDAP_SEARCH_BASE=
LDAP_BIND_DN=
LDAP_BIND_PW=
LDAP_QUERY_FILTER_USER=
LDAP_QUERY_FILTER_GROUP=
LDAP_QUERY_FILTER_ALIAS=
LDAP_QUERY_FILTER_DOMAIN=
DOVECOT_TLS=
DOVECOT_USER_FILTER=
DOVECOT_PASS_FILTER=
DOVECOT_MAILBOX_FORMAT=maildir
ENABLE_POSTGREY=1
POSTGREY_DELAY=300
POSTGREY_MAX_AGE=35
POSTGREY_TEXT=Delayed by postgrey
POSTGREY_AUTO_WHITELIST_CLIENTS=5
ENABLE_SASLAUTHD=0
and some more

Possible Fix

Steps to Reproduce

Perhaps this has to do with the volumes I have enabled, the variables in the yml file or some other logical error since some variables are in the yml file and others in the env-mailserver file?
my yml file
version: '2'

services:
  mail:
    image: tvial/docker-mailserver:latest
    hostname: mail
    domainname: hansbees.net
    container_name: mail
    ports:
   #receiving email from other mailservers
    - "25:25"
     # SSL & TLS Client email submission (SMTP)
    - "465:465"
    - "587:587"
     # StartTLS & TLS/SSL IMAP client
    - "143:143"
    - "993:993"
     # POP3 & TLS/SSL POP3 client
    - "110:110"
    - "995:995"
     # Manage Sieve port
    - "4190:4190"
    volumes:
    - maildata:/var/mail
    - mailstate:/var/mail-state
    - Tconfig:/tmp/docker-mailserver/
    - etc:/etc
    - log:/var/log
    - ssl:/tmp/ssl:ro
    env_file:
    - .env
    - env-mailserver
    environment:
    - ENABLE_SPAMASSASSIN=1
    - ENABLE_CLAMAV=1
    - ENABLE_FAIL2BAN=1
    - ENABLE_POSTGREY=1
    - ONE_DIR=1
    - DMS_DEBUG=0
    - PFLOGSUMM_TRIGGER=daily_cron
    - LOGWATCH_INTERVAL=daily
    - LOGROTATE_INTERVAL=weekly
    -<EMAIL_ADDRESS># If you need SSL connection, you can provide your own certificates
    - SSL_TYPE=manual
    - SSL_CERT_PATH=/tmp/ssl/fullchain.pem
    - SSL_KEY_PATH=/tmp/ssl/privkey.pem
    cap_add:
    - NET_ADMIN
    - SYS_PTRACE
    restart: always

volumes:
  maildata:
  mailstate:
  Tconfig:
  etc:
  log:
  ssl:

Your Environment

Amount of RAM available:
Mailserver version used: latest
Docker version used: Docker version 18.09.9, build 039a7df
docker-compose: docker-compose version 1.25.3, build d4d1b42b
Environment settings relevant to the config:
Any relevant stack traces ("Full trace" preferred):

I have been bughunting and this is the result so far:
After a new setup of the container the ssl config did work fine. So that part apparently was a mistake I made somewhere.
I am not done with the sasl part yet. Apparently sasl is always set to yes in main.cf which seems odd to me.
the start-mailserver.sh script always runs the function:
_register_setup_function "_setup_postfix_sasl"

and this function always does this:
    # cyrus sasl or dovecot sasl
    if [[ ${ENABLE_SASLAUTHD} == 1 ]] || [[ ${SMTP_ONLY} == 0 ]];then
        sed -i -e 's|^smtpd_sasl_auth_enable[[:space:]]\+.*|smtpd_sasl_auth_enable = yes|g' /etc/postfix/main.cf
    else
        sed -i -e 's|^smtpd_sasl_auth_enable[[:space:]]\+.*|smtpd_sasl_auth_enable = no|g' /etc/postfix/main.cf
    fi

Since my SMTP_ONLY is 1, it will always add  smtpd_sasl_auth_enable = yes to main.cf.
Perhaps this is deliberately so, or a bug I dont know.

I can confirm this. I just noticed, that at least POSTMASTER_ADDRESS= in env-mailserver seems to be ignored.

I'm not sure I follow. Are you using SMTP_ONLY or not? You say it is 1, but in your configuration above it is blank (meaning 0).
The way I think it works we are always using authentication (sasl), either with Dovecot which is the default or with Cyrus which can be enabled with ENABLE_SASLAUTHD, so smtpd_sasl_auth_enable should be yes except when you are using SMTP_ONLY and have not set ENABLE_SASLAUTHD.
I think the code is correct. It can be rewritten as:

if ENABLE_SASLAUTHD then
  yes
else if not SMTP_ONLY then
 yes
else (SMTP_ONLY and not ENABLE_SASLAUTHD)
 no

I'm not sure I follow. Are you using SMTP_ONLY or not? You say it is 1, but in your configuration above it is blank (meaning 0).
The way I think it works we are always using authentication (sasl), either with Dovecot which is the default or with Cyrus which can be enabled with ENABLE_SASLAUTHD, so smtpd_sasl_auth_enable should be yes except when you are using SMTP_ONLY and have not set ENABLE_SASLAUTHD.
I think the code is correct. It can be rewritten as:

if ENABLE_SASLAUTHD then
  yes
else if not SMTP_ONLY then
 yes
else (SMTP_ONLY and not ENABLE_SASLAUTHD)
 no

For clarity: I am not using smtp only. My confusion comes form the fact that I disable saslauth, and in the resulting config it is enabled.
So in env-mailserver I have set:
ENABLE_SASLAUTHD=0
and in /etc/postfix/main.cf it says
smtpd_sasl_auth_enable = yes
If the above is how it should be, it would be less confusing the add a line like:
# ---------------- SASL section ----------------------------------------------------------------------------------------------
#  SASL is always used, but set ENABLE_SASLAUTHD for Cyrus

# -----------------------------------------------------------------------------------------------------------------------------

Or something like that. Now it confused the heck out of me.

Yes, the documentation could be better. See http://www.postfix.org/SASL_README.html for the background.

This issue was closed due to one or more of the following reasons:

Age
Contributor inactivity
The issue seems to be resolved

If you think this happened by accident, or feel like this issue was not actually resolved, please feel free to re-open it. If there is an issue you could resolve in the meantime, please open a PR based on the current master branch so we can review it.


Css3 parser tryout

This PR is a css3 parser created as much as possible according the specs to gain more knowledge about the css specification. Main goal would be fill in the blanks in the current css3 parser that we current have (new_parser). This PR tries to follow the specifications as close as possible.
Main entrypoints are the parse_* functions. There are multiple depending on what you like to parse (i'm not 100% sure how this actually works).
The consume_* functions are the parts that will consume tokens and return css structures like Rules, QualifiedValues etc.

Old tryout. Closing in favor of a new setup


Use nx mode to avoid remap keys

This PR try to use 'nx' mode for feedkeys to avoid remap keys. So scroll keys won't break with user's mappings.

@glepnir Seemed there's something unexpected in this PR. You had merged this PR, but ths latest code doesn't contain changes of this PR.
Is it because I deleted the fork after your merge?


Header and Footer

Create a header and a footer
Add style

Hello @Bhekisile, good job done, so far. 👍
I think 🤔 we need to make it a little more responsive, mobile-first.


Add NS_SWIFT_UNAVAILABLE to deprecated APIs that only differ in completionHandler: vs completion:.

This causes the APIs to be ambiguous when used from Swift with the normal Swift trailing closure or async syntaxes.
Fixes https://github.com/project-chip/connectedhomeip/issues/24359

Fast-tracking platform-specific change with platform owner review.


HBASE-25720 Sync WAL stuck when prepare flush cache will prevent flus…

…h cache and cause OOM

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
1m 21s
Docker mode activated.


Revert "[feat] Suggest props destructuring if possible"

Reverts sveltejs/kit#6069. Unfortunately this creates buggy code, because the destructured values aren't first assigned until after the


Remove function next_address from AddressGenerator trait

Remove function next_address from AddressGenerator trait.
Instead, only functions contract_addres or predictable_contract_address should be implemented when customizing AddressGenerator.

Will be fixed in #78


Delete chat history when a contact is erased

When I deleted an account, then added the account again to continue my bug testing, the chat history for the deleted account still appeared.
THE PROBLEM:
In the community of users I work with (human rights activists and journalists), conversations being stored on a user's machine can be a matter of life and death if a machine is seized by police, governments, or criminals. I assume that most of our users will choose not to save their chat histories as a result, but in case they do, we should protect their contacts by deleting chat history along with a deleted contact.
RECOMMEND:
When a user deletes a contact, prompt if they would like the chat history for that contact erased as well.
I discussed this on the Jitsi mailing lists and the link to that discussion is:  http://lists.jitsi.org/pipermail/users/2014-June/007351.html
(Issue migrated from https://trac.jitsi.org/ticket/1291)

Hi
This issue or lack of feature still exists today 10 May 2016.  Can someone please just put in the feature to delete conversations? as i have to manually go in the /.jitsi/history_ver1.0/recent_messages folder and delete the .xml file.
Whats the use of a privacy app if we cannot delete history conversations?  This should have been the FIRST thing/feature developed on this app.
Can someone please respond to this? or show us how to delete conversations if the feature already exists?

@Beast141 Glad to mentioning it.
I'd like to add the "delete conversations" and "remove conversations after deleting the contact" badly because I was testing my own XMPP server and I created A LOT of users and try to text myself. My whole conversation list is a mess, I don't want to neither go to .jitsi to remove the conversation manually nor, the simplest way, re-install the entire software. There's still got important chat log and I don't want to remove it.
Now my family and friends are using Jitsi and they are all asking me about this feature, I searched the Internet for almost 3 hours and no answers. Some of them are not even computer geek enough to go to ".jitsi" folder and remove the chat log.
It is extremely secure to chat with OTR encryption but the weakest way not to remove the conversation, isn't it?


Release/aa hc snap frontend wallet

Release fronted web template with snap versioning to 1.1.2

Closing as snap version hardcoding is not good idea for publishing package and using on UI


Corrects slapp.command to slapp.dialog

Thanks for the PR @zachsirotto!
Would you mind making the change in the source code, here: https://github.com/MissionsAI/slapp/blob/fecf3d4d7b8ca62a329c6e8b686fac66e9c91737/src/slapp.js#L1001-L1004?
The README.md file is actually the result of the source file being compiled, so if I were to merge the change as-is, the improvement would vanish the next time we compiled.

Pull Request Test Coverage Report for Build 398

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 96.875%

Totals

Change from base Build 374:
0.0%

Covered Lines:
568

Relevant Lines:
568

💛  - Coveralls

Thanks for the PR @zachsirotto!
Would you mind making the change in the source code, here:
slapp/src/slapp.js
Lines 1001 to 1004 in fecf3d4
*     // "/acommand"
*     slapp.command('my_callback_id', (msg, submission) => {
*       submission.prop_name_1
*     }

?
The README.md file is actually the result of the source file being compiled, so if I were to merge the change as-is, the improvement would vanish the next time we compiled.

done.

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

Closing due to stale PR.


Unable to connect

Cannot connect redis_om with django, was able to successfully connect redis-py with django using:
redis.StrictRedis(host='<IP_ADDRESS>', port=6379, db=0)
but when tried to connect the redis-om-model with django and fetched the existing data using:
`redis_om_conc = get_redis_connection(
url="redis://<IP_ADDRESS>:6379/0",
decode_responses=True
)
class GameList(HashModel):
class Meta:
database = redis_om_conc
game_id: int
game_name: str
game_code: str
display_platform: int
vendor: str
vendor_code: str
vendor_id: int
languages: str
external_game_id: str

GameList.get("01FVF51D2K8WWTR2BTME97SWZ1")`
it throws an error as:
`NotFoundError                             Traceback (most recent call last)
Input In [12], in
----> 1 GameList.get("01FVF51D2K8WWTR2BTME97SWZ1")
File ~/Projects/Feeder/cron-env/lib/python3.8/site-packages/redis_om/model/model.py:1324, in HashModel.get(cls, pk)
1322 document = cls.db().hgetall(cls.make_primary_key(pk))
1323 if not document:
-> 1324     raise NotFoundError
1325 try:
1326     result = cls.parse_obj(document)
NotFoundError:`

Getting the Same Problem.

I think, at the moment, it is not possible to use this package in django because django migrations and redis-om migrator are two different things, that's because HashModel is not a django model to apply migrations. So when you run:
python manage.py makemigrations
python manage.py migrate

It will create an empty migration file. That's why you are getting:
    raise NotFoundError
aredis_om.model.model.NotFoundError


Set NOMS API timeout to 2 seconds

The timeout needs to be stricter than the timeout in PVB public.

https://github.com/ministryofjustice/prison-visits-public/pull/91


Cleanup BaseResult

See comment https://github.com/sigstore/model-transparency/blob/laurentsimon-patch-1/model_signing/model.py#L45
We need to provide a verbose parameter. When verbose is disabled, errors will be generic and not leak information (paths, etc).
We also need to expose this in the CLI and the main model.verify / model.sign API.

I think we can close this since we no longer use that class/file.


support alternate syntax for protobuf field numbering

Current implementation
Old parser allows this syntax
!table table:
    field1 = 1 <: type

the = 1 is used for protobuf field numbering. This adds a bit of confusion as it looks like it could be the default value of the field.
Suggested implementation
Add support for the following syntax:
!table table:
    field1 [1] <: type

which should be less confusing.
Also, deprecate and eventually remove the old syntax.

    !type Foo:
        name <: string:
            @proto_field_num = "1"
        id <: string:
            @proto_field_num = "2"


Make MouseMultiCursor toggle cursors

It is useful to be able to use mouse not only for adding new cursors but also for removing them. So let's modify MouseMultiCursor behavior: if a cursor already exists at the mouse click location, remove it.

Hi
Sorry this does not seem to work on my Windows system.
OS: Windows 10
Version: 2.0.13
Commit hash: 68d88b57
Compiled on April 20, 2024
Kind Regards Gavin Holt

Which is not surprising: 2.0.13 was released 4 months before this was implemented.
You'd need to compile newest micro from source.

Compiled on April 20, 2024

Hmm, 2.0.13 but compiled on April 20?
Are you maybe using a nightly build? There is an issue with nightly builds, which I mentioned today in https://github.com/zyedidia/micro/discussions/3276#discussioncomment-9284693


How to improve the synthesized results?

I have trained the model for 200k steps, and still, the synthesised results are extremely bad. The sampling rate I have used is 22050 Hz and the batch size used is 16.

This is how my loss curve looks after 200k steps. Can you help me with what can I do now to improve my synthesized audio results?

@sanjeevani279  I have same problem with 22050 hz, while 1600hz is ok. Did you resolve this problem ?

@chazo1994 Are you using 1600Hz and the batchsize is 16? How is the synthesis effect?

@chazo1994 Are you using 1600Hz and the batchsize is 16? How is the synthesis effect?

@Summerxu86  I train two model 22050khz and 16khz, both use batchsize 48. Model 16k is faster convergence, and the synthesized audio at 200k step of model 16khz is much better thang model 22k.

Do you use the US or EU Libritts dataset? I trained a US model, and the performance is still a bit different from the original model. Aligned with an MFA acoustic model with apra2.0.0a?

@chazo1994 Are you using 1600Hz and the batchsize is 16? How is the synthesis effect?

@Summerxu86 I train two model 22050khz and 16khz, both use batchsize 48. Model 16k is faster convergence, and the synthesized audio at 200k step of model 16khz is much better than model 22k.

Do you use the US or EU Libritts dataset? I trained a US model, and the performance is still a bit different from the original model. Aligned with an MFA acoustic model with apra2.0.0a?

@chazo1994 Are you using 1600Hz and the batchsize is 16? How is the synthesis effect?

@Summerxu86 I train two model 22050khz and 16khz, both use batchsize 48. Model 16k is faster convergence, and the synthesized audio at 200k step of model 16khz is much better than model 22k.

What vocoder did you use? in the case of 16k and 22050? Did you use a different pre trained vocoder for each sampling rate?


Fix OpenAPI.SecuritySchemeObject typing

Coverage remained the same at 97.643% when pulling 418af50795b97d55c5a2335ae5dd6b2245925d0e on MugeSo:fix-security-scheme-object-typeing into a8f5935ce254caa58d8a003bc0e5c659166c7c5e on kogosoftwarellc:master.

Coverage remained the same at 97.643% when pulling 418af50795b97d55c5a2335ae5dd6b2245925d0e on MugeSo:fix-security-scheme-object-typeing into a8f5935ce254caa58d8a003bc0e5c659166c7c5e on kogosoftwarellc:master.

published as v0.32.1


switching input method for the fit test from CopyIn to SlurpIn…

...MatriplexSym::Subtract now vectorizes

Code performs best when MPLEX_USE_INTRINSICS is defined
Testing has not been performed with USE_CUDA, it may well be broken in SlurpInTracksAndHits

Benchmarking results: http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/
All good, especially this one (as expected):
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/mic_vu_fitspeedup.png
which is much improved on top of:
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR47/mic_vu_fitspeedup.png
Merging.

3 PR merged, what a glorious day :-)

Here's what I'm getting for my next PR (with 48 merged):
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_vu_fitspeedup.png
That's all from avoiding doubles and using "const" to minimize temporaries.
-dan

On May 13, 2016, at 16:37, cerati<EMAIL_ADDRESS>wrote:
Benchmarking results: http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/
All good, especially this one (as expected):
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/mic_vu_fitspeedup.png
which is much improved on top of:
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR47/mic_vu_fitspeedup.png
Merging.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub

whoa! that's totally awesome.
On Sat, May 14, 2016 at 6:56 PM, Dan Riley<EMAIL_ADDRESS>wrote:

Here's what I'm getting for my next PR (with 48 merged):
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_vu_fitspeedup.png
That's all from avoiding doubles and using "const" to minimize temporaries.
-dan

On May 13, 2016, at 16:37, cerati<EMAIL_ADDRESS>wrote:
Benchmarking results:
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/
All good, especially this one (as expected):

http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/mic_vu_fitspeedup.png

which is much improved on top of:

http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR47/mic_vu_fitspeedup.png

Merging.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/cerati/mictest/pull/48#issuecomment-219231052

Just poking around the other benchmarks, it seems that some have regressed,
e.g.:
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_th_speedup.png
and this also seems to not achieve the 2x speedup we saw before for CEST:
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_vu_time.png
On Sat, May 14, 2016 at 8:29 PM, Kevin McDermott<EMAIL_ADDRESS>wrote:

whoa! that's totally awesome.
On Sat, May 14, 2016 at 6:56 PM, Dan Riley<EMAIL_ADDRESS>wrote:

Here's what I'm getting for my next PR (with 48 merged):
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_vu_fitspeedup.png
That's all from avoiding doubles and using "const" to minimize
temporaries.
-dan

On May 13, 2016, at 16:37, cerati<EMAIL_ADDRESS>wrote:
Benchmarking results:
http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/
All good, especially this one (as expected):

http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR48/mic_vu_fitspeedup.png

which is much improved on top of:

http://uaf-6.t2.ucsd.edu/~cerati/mictest/2016-05-13-PR47/mic_vu_fitspeedup.png

Merging.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/cerati/mictest/pull/48#issuecomment-219231052

On May 14, 2016, at 14:39, Kevin McDermott<EMAIL_ADDRESS>wrote:
Just poking around the other benchmarks, it seems that some have regressed,
e.g.:
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_th_speedup.png

That one is just noisy--it moves around a lot from run to run, especially at high
thread counts (> 120).

and this also seems to not achieve the 2x speedup we saw before for CEST:
http://www.lepp.cornell.edu/~dsr/mic-track/2016-05-13-std-math/mic_vu_time.png

That's still slightly better than PR#48, so there's no recent regression.  Before
that, the history is complicated by the effects of the coordinate changes.
-dan

I was curious about the cause of the significant performance gain I saw, so I went through the (many, many small) changes to isolate the cause (and convince myself it was real), and the answer was a big surprise to me--it wasn't at all what I would have guessed.
Adding const, being careful about inadvertent doubles, and moving temporaries inside loops all made little difference.
The actual culprit is in mkFit/PropagationMPlex.cc, specifically lines like
  const float& xin   = inPar.ConstAt(n, 0, 0);
  const float& yin   = inPar.ConstAt(n, 1, 0);
  const float& zin   = inPar.ConstAt(n, 2, 0);
  const float& ipt   = inPar.ConstAt(n, 3, 0);
  const float& phiin = inPar.ConstAt(n, 4, 0);
  const float& theta = inPar.ConstAt(n, 5, 0);

and the improvement came from changing the "const float&" to "const float".
The reason, apparently, is that while inPar is aligned, the individual elements aren't, so using a reference forces the compiler into unaligned accesses.  In optrpt (turned up to level 5), the version with the references has a bunch of
remark #15389: vectorization support: reference xin has unaligned access   [ PropagationMPlex.cc(575,18) ]
remark #15389: vectorization support: reference yin has unaligned access   [ PropagationMPlex.cc(575,18) ]
remark #15389: vectorization support: reference pxin has unaligned access  [ PropagationMPlex.cc(586,22) ]
that aren't in the "const float" version, followed by
remark #15415: vectorization support: gather was generated for the variable pxin: masked, strided by 1   [ PropagationMPlex.cc(585,22) ]
remark #15415: vectorization support: gather was generated for the variable pyin: masked, strided by 1   [ PropagationMPlex.cc(585,32) ]
remark #15415: vectorization support: gather was generated for the variable pzin: masked, strided by 1   [ PropagationMPlex.cc(592,22) ]
and when we get to the vectorization report, the version with references has
remark #15301: SIMD LOOP WAS VECTORIZED
remark #15450: unmasked unaligned unit stride loads: 3
remark #15456: masked unaligned unit stride loads: 39
remark #15462: unmasked indexed (or gather) loads: 14
remark #15475: --- begin vector loop cost summary ---
remark #15476: scalar loop cost: 679
remark #15477: vector loop cost: 361.370
remark #15478: estimated potential speedup: 1.620
remark #15487: type converts: 11
remark #15488: --- end vector loop cost summary ---
while removing the references (with no other changes) gives
remark #15301: SIMD LOOP WAS VECTORIZED
remark #15475: --- begin vector loop cost summary ---
remark #15476: scalar loop cost: 649
remark #15477: vector loop cost: 258.310
remark #15478: estimated potential speedup: 2.070
remark #15487: type converts: 11
remark #15488: --- end vector loop cost summary ---
The compiler does end up allocating a bunch more stack space for the temporaries, but it can make sure they're properly aligned, and that gives a significant speedup in the propagation loop vectorization.
If I then add on all the other changes (const, avoiding doubles), we get to
remark #15301: SIMD LOOP WAS VECTORIZED
remark #15475: --- begin vector loop cost summary ---
remark #15476: scalar loop cost: 582
remark #15477: vector loop cost: 247.810
remark #15478: estimated potential speedup: 1.920
remark #15487: type converts: 1
remark #15488: --- end vector loop cost summary ---
where the type conversions are down significantly (I don't know why there's still 1, there aren't any reported), and the loop is a few percent faster, but the vector speedup is actually a little less because the scalar loop cost went down a lot more than the vector cost.
I changed the "float&" references to "float" variables because I suspected the compiler could do better managing the lifetimes of temporaries instead of always going back to the source parameter inPar, but I was not expecting anything this dramatic.  I'm going to have to reconsider how I think about temporaries, and how they interact with vectorization.
-dan

This is very interesting.  Do we have other places in the optrpts that point to similar unaligned accesses?
Can we say we aren't really hitting the cache limit then if the tradeoff between unaligned accesses and temporaries is this dramatic?

Can we say we aren't really hitting the cache limit then if the tradeoff between
unaligned accesses and temporaries is this dramatic?

You can see cache / memory b/w limitations when we run two threads on the same
core. So if you want to see impact on this, compare slopes on mic threading plot
between 60 and 120 threads.
Temporaries don't necessarily impact cache ... especially if they are short
lived enough to just stay in the registers. With two threads per core pressure
on registers increases as well.


stdlib

We should have a sort of stdlib file which could include the XIsZero stuff, some macros, etc.

Depends on #40

we got started with the stdlib, just need to keep adding stuff


fix the  mismatch of upload url between frontend and backend

This is a pr for the issue

Codecov Report

Merging #6226 (c1496d8) into dev (259ec90) will increase coverage by 0.00%.
The diff coverage is 24.35%.

:exclamation: Current head c1496d8 differs from pull request most recent head 715a8f9. Consider uploading reports for the commit 715a8f9 to get more accurate results

@@            Coverage Diff            @@
##                dev    #6226   +/-   ##
=========================================
  Coverage     39.16%   39.16%
- Complexity     3254     3262    +8
=========================================
  Files           638      638
  Lines         25246    25290   +44
  Branches       2737     2748   +11
=========================================
+ Hits           9887     9905   +18
- Misses        14480    14502   +22
- Partials        879      883    +4

Impacted Files
Coverage Δ

...scheduler/api/service/impl/ProjectServiceImpl.java
77.90% <0.00%> (-0.59%)
:arrow_down:

...e/dolphinscheduler/common/model/DependentItem.java
0.00% <0.00%> (ø)

.../dolphinscheduler/dao/entity/WorkFlowRelation.java
0.00% <0.00%> (ø)

...lphinscheduler/service/process/ProcessService.java
33.73% <ø> (ø)

...r/api/service/impl/WorkFlowLineageServiceImpl.java
36.08% <28.35%> (-16.30%)
:arrow_down:

...rver/master/processor/queue/TaskResponseEvent.java
100.00% <0.00%> (+6.45%)
:arrow_up:

...er/master/processor/queue/TaskResponseService.java
55.29% <0.00%> (+15.29%)
: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 259ec90...715a8f9. Read the comment docs.

LGTM


Fire Google Analytics events for key user interactions

Generate an event

[ ] if a healthcare worker clicks on the link to add/remove/update a donation site
[ ] if a user navigates to the large donation link
[ ] if a user navigates to the general getusppe.org link
[ ] if a user goes to our Facebook page
[ ] if a user clicks on a map cluster
[ ] if a user clicks on a map marker

Tackling this one. Any guidelines for event naming, or should I just pick something succinct and clear for each?

Here's an example of the events I setup:

Click on state filter (Category: filters Action: states Label: name of state)
Click on use my location (Category: map, action: center, label: user-location
Each event has a category, action, label, and value (not using that).

Succinct and clear is a good principle. Some more guidance:

Don't have whitespace in any of your strings for category, action, or label. I would suggest using camelcase since we are using JS.
Use category to describe the part of the product where the event is generated
When possible have action be a verb (but in cases where its easier to program it with a non-verb that's fine)

Some other tips:

get access to google analytics from @r-pop so you can make sure your events are firing
there is chrome extension called Google Analytics debugger which will print to console.log when you fire events which is useful for test
make sure to turn off your adblocker when testing :)

:+1: sounds good, thanks.
I'm just running against my own GA account locally for testing so don't really need access to the official account (@r-pop) but of course it wouldn't hurt for confirming functionality after it's done

Submitted PR @saikatbhadra. Not entirely sure on the event attributes I went with, it depends a bit on how descriptive things need to be. I used naming conventions that followed the code (i.e. noDonations and largeDonation).
Super quick to change the categories or labels (obviously) so just let me know.


[dask] allow tight control over ports

In https://github.com/microsoft/LightGBM/pull/3823, @jmoralez proposed a change for the Dask module that would speed up training by taking a bit of setup overhead that is O(n_workers) and make it O(1). That discussion led to a conversation about how to give tight control over the ports used by LightGBM, for users who are using a cluster of machines whose communication is limited by firewall rules.
I promised to go do some research in LightGBM's source code and come back with a proposal. This PR is that proposal.
Proposed Changes
This PR proposes that lightgbm.dask should handle ports as follows.
If no network params are given in params (the default)
model = DaskLGBMRegressor()
model.fit(data, labels)

LightGBM chooses ports randomly. As of this PR, it will use the current approach on master (searching 1000 ports starting with the default value of local_listen_port), but after this PR we should replace that with @jmoralez 's proposal in #3823.
If machines is provided in params
machines = "<IP_ADDRESS>:15000,<IP_ADDRESS>:15001,<IP_ADDRESS>:15000,<IP_ADDRESS>:15005"
model = DaskLGBMRegressor(
    machines=machines
)
model.fit(data, labels)

LightGBM respects machines and does not do any searching. This gives people who are in a constrained environment total control over the ports used, without needing to invent a new parameter specific to the Dask interface.
This can work for cases where you run multiple Dask worker processes on the same host. For example, for a FargateCluster with n_workers=4, nprocs=2, you might use machines like this:
<IP_ADDRESS>:15000,<IP_ADDRESS>:15001,<IP_ADDRESS>:15000,<IP_ADDRESS>:15005

In a follow-up PR after this, to make this easier, I'd propose adding a function dask_collection_to_machines_param(), which takes in your training data and a list of ports that you've allowed in your firewall settings, and returns a machines string you can put into params.
def dask_collection_to_machines_param(
    data: Union[dask.DataFrame, dask.Array],
    allowed_ports: Set[int]
) -> str:

If local_listen_port is provided in params
model = DaskLGBMRegressor(
    local_listen_port=16000
)
model.fit(data, labels)

Create machines by looking at which worker addresses have a piece of the training data, and assume that each of them will use the same port (local_listen_port). This will only work in the case where you have 1 Dask worker process per physical host.
How this PR improves lightgbm.dask
This gives an official answer to the question "how I should I used distributed LightGBM training with Dask if my Dask cluster is constrained by firewall rules?", while also making it possible to take advantage of the speedups from #3823 .
It does this in a way that only uses existing LightGBM network parameters, and which doesn't require any notes in documentation that say "hey this parameter has a slightly different meaning in Dask than everywhere else".
How LightGBM's network setup works
This is optional background that will help explain the proposal I'm making. Everything below refers only to the socket-based build of LightGBM.
notes on how the code in src/network works
Each worker runs Network::Init() initialize a LightGBM network. The following happens when that method is called.

"What is my ID (rank) and what other workers are in this network?" --> Create a Linkers

"My ID will be an integer corresponding to my place in the machines list" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/linkers_socket.cpp#L42
"I can open a TCP listener socket to accept connections from other workers" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/linkers_socket.cpp#L51-L52
"I'll set up some data structures to store information about the other workers in the network" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/linkers_socket.cpp#L54-L60
"I need to establish a socket connection with each other worker in the network" --> call Linkers::Construct() to set up these connections

"Since these are two-way communications, I'll just initiate communications with all workers that have a rank greater than mine. I know from machines which IP addresses to look for and what local_listen_port they'll be listening on. The workers with rank less than me will initiate communications with me. Each time I communicate successfully, I'll save that new TCP socket so I can use it during training to talk to that specific worker" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/linkers_socket.cpp#L196-L216

"Ok, now that I have sockets to talk to all the other workers, I can destroy the listener socket. I'm not accepting any more new connections" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/linkers_socket.cpp#L65-L66

"Now that I know how to talk to other workers, I should also set up some space in memory to store data I want to send to them and data I receive from them" --> https://github.com/microsoft/LightGBM/blob/75b9b0d3c8081cbe8ddedaac08c4213df55efe29/src/network/network.cpp#L37-L40

You can learn more about this from https://lightgbm.readthedocs.io/en/latest/Parallel-Learning-Guide.html#preparation, https://lightgbm.readthedocs.io/en/latest/Parallel-Learning-Guide.html#id1, and https://lightgbm.readthedocs.io/en/latest/Parameters.html#network-parameters.

Notes for Reviewers
I'll devote a section to this topic in the documentation introduced for #3814 .
The one Dask unit test that's failing will pass if #3993 is accepted and merged.

I thought I left a comment on here but I guess I navigated away before sending it haha.
@jmoralez @ffineis if you have time and interest, I'd really appreciate your feedback on this PR.

I tested this on a FargateCluster on AWS tonight using dask-cloudprovider: https://github.com/jameslamb/lightgbm-dask-testing/blob/main/notebooks/aws.ipynb
I tried all three possible configurations described above, and all three trainings succeeded. So I'm confident this will work on either LocalCluster (what we use in tests) or a true distributed cluster.

I thought I left a comment on here but I guess I navigated away before sending it haha.
@jmoralez @ffineis if you have time and interest, I'd really appreciate your feedback on this PR.

Hey I think these three options make sense and that they're easy to understand! Nice work! Really, I don't have much to add.

@jameslamb I haven't looked at the diff yet, just read the detailed explanation you've provided.
I think I found one inconsistency.

If no network params are given in params (the default)
LightGBM chooses ports randomly.

It does this in a way that only uses existing LightGBM network parameters, and which doesn't require any notes in documentation that say "hey this parameter has a slightly different meaning in Dask than everywhere else".

Default value of the local_listen_port is 12400 and not "any random value starting from 12400 (or even simply 'any random value' after #3823)". And some users which are fine with default port and are under firewall constraints don't expect that ports will be random, they expect all ports on all machines will be exactly 12400 (default value). So, I still think that we need some clarification of this inconsistency in Dask docs.
Refer to https://github.com/microsoft/LightGBM/pull/3823#pullrequestreview-582342932.

@jameslamb I haven't looked at the diff yet, just read the detailed explanation you've provided.
I think I found one inconsistency.

If no network params are given in params (the default)
LightGBM chooses ports randomly.

It does this in a way that only uses existing LightGBM network parameters, and which doesn't require any notes in documentation that say "hey this parameter has a slightly different meaning in Dask than everywhere else".

Default value of the local_listen_port is 12400 and not "any random value starting from 12400 (or even simply 'any random value' after #3823)". And some users which are fine with default port and are under firewall constraints don't expect that ports will be random, they expect all ports on all machines will be exactly 12400 (default value). So, I still think that we need some clarification of this inconsistency in Dask docs.
Refer to #3823 (review).

ok, fair enough. I just added a warning in https://github.com/microsoft/LightGBM/pull/3994/commits/deeab63f6e9841c5be643cf9cee07454e2ff5e2b.
This isn't a LightGBM branch so you won't be able to see RTD builds, but this worked fine for me running cd docs/ && make clean html locally.

@jameslamb Thank you! I just thought about it a little bit more and come up to that it probably will be easier to just write default = 12400 (random for Dask-package) because right now users must read docs very carefully in two places and we must duplicate this warning in multiple (at least 3) places after implementing #3846 and #3847.
Refer to
https://github.com/microsoft/LightGBM/blob/7880b79fde36873b95839c0029ea9d649397da51/include/LightGBM/config.h#L98
for how to set custom default value in params docs.

@jameslamb Thank you! I just thought about it a little bit more and come up to that it probably will be easier to just write default = 12400 (random for Dask-package) because right now users must read docs very carefully in two places and we must duplicate this warning in multiple (at least 3) places after implementing #3846 and #3847.
Refer to
https://github.com/microsoft/LightGBM/blob/7880b79fde36873b95839c0029ea9d649397da51/include/LightGBM/config.h#L98
for how to set custom default value in params docs.

ok sure, no problem. Done in https://github.com/microsoft/LightGBM/pull/3994/commits/0c81f6012c794d657b4ef4022e102c322621003c

Sorry for being late to the party, I've had a lot of stuff at work.

Default value of the local_listen_port is 12400 and not "any random value starting from 12400 (or even simply 'any random value' after #3823)". And some users which are fine with default port and are under firewall constraints don't expect that ports will be random, they expect all ports on all machines will be exactly 12400 (default value)

I agree with @StrikerRUS here and I really like the proposal of including the machines argument because I think it makes it very easy for the user to be explicit about the desired distributed training configuration. Right now I think when machines is specified it isn't being verified that the ports are actually open, so I think we could add something like:
def _check_port_is_open(port: int) -> int:
"""Check that port is open on the machine or find a random open one if port is 0."""
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
              s.bind(('', port))
              port = s.getsockname()[1]
    except OSError:
        # handle port already in use
    return port

to _machines_to_worker_map and that way for machines="ip1:12600,ip2:12700" the function would check that 12600 is available in ip1 and 12700 is available in ip2. And using random ports for training could be achieved with machines="ip1:0,ip2:0". This wouldn't change LightGBM's default behavior in the dask interface and should only be documented in the machines argument.

No problem @jmoralez , thanks for all your help so far with the Dask package.

Right now I think when machines is specified it isn't being verified that the ports are actually open, so I think we could add something like...

I'm against adding additional code for this in the Python package. You'll already get the informative error "Binding port 12345 failed" if one of the ports you chose is not open. https://github.com/microsoft/LightGBM/blob/5005b7beb6e30229c787abecab962ce12dff58c0/src/network/linkers_socket.cpp#L131.

And using random ports for training could be achieved with machines="ip1:0,ip2:0"

I don't want to encourage or support this pattern. If the communication between workers is not governed by strict firewall rules,  lightgbm.dask should "just work",  just like every library in the Dask ecosystem works without you ever needing to think about IP addresses or ports.
The "list IPs explicitly with machines" approach is fragile because if any of those machines don't also have a piece of the training data, training will fail. And because those values have to be recomputed each time you connect to a new cluster, or whenever a Dask worker is restarted. It's worth paying the price of that fragility in exchange for being compliant with your organization's networking constraints, but I wouldn't encourage anyone who is comfortable with getting random ports to use machines.
So I'm against adding a 4th option that is like "if you use :0 in machines, lightgbm.dask will search randomly for ports". I think the 3 options explained in this pull request's description are sufficient.


Improve type hints nullable parameters

Improve type hints for arguments that are nullables and fix flake8 pre-commit hook.
Changes proposed in this pull request:

Update pre-commit configuration with the latest version of flake8 to prevent errors
Improve type hints for parameters that are nullables

coverage: 94.15% (+0.003%) from 94.147%
when pulling b2de340dd26a9feb97b71885a91d356c2e433895 on druizz90:improve-type-hints-nullable-strings
into be9b2802890f347f3fdb653e4b299964b9de042f on spec-first:main.

Thanks @druizz90!


feat: using ts aliases inside the packages/*

Describe the feature you'd like to request
I often use TypeScript aliases generally to have cleaner imports.
I tried to use this code inside the packages/api inside the tsconfig.json:
"compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@/*": ["./*"]
    }
  }

And imports some routers into my root.tsx's appRouter like:
import { authRouter } from "@/router/auth";
import { createTRPCRouter } from "@/trpc";

export const appRouter = createTRPCRouter({
  auth: authRouter
});

When I hover appRouter it seems that the types are there.
But when I go into my api/trpc/[trpc] file in the nextjs app, appRouter appears as any.
When I tried to remote the aliases it all works fine and the types are inferred correctly.
Describe the solution you'd like to see
Is there a way that you would fix that? or this is just a TypeScript limitation?
Additional information
No response

Also experiencing this... question is why?
Although I also don't really see the need for aliases in the packages?

@juliusmarminge As I use the in the nextjs package to reference to files with absolute paths, it would be useful aldo in the api package. For example, I have some "helper" functions that I reuse both inside routers and some inside nextjs' getServerSideProps. Of course aliases are to get absolute paths only inside each package.
If you managed to do it, could you share how?

Took another look just now - and I think it has to do with the transpilation and that there are conflicts introduced when importing the api package if it uses path aliases. There might be some workaround you can do.
Generally though packages shouldn't become large/deep enough that path aliases will make much sense imo. Aliases in the apps is enough for me at least?

@juliusmarminge As I use the in the nextjs package to reference to files with absolute paths, it would be useful aldo in the api package. For example, I have some "helper" functions that I reuse both inside routers and some inside nextjs' getServerSideProps. Of course aliases are to get absolute paths only inside each package. If you managed to do it, could you share how?

Not sure I quite understand this - what are these functions? Can you not put them into some @acme/shared package if it's reused across multiple stuff? What's the goal here?

@juliusmarminge About the functions that I use both in the api and in the nextjs app, I I currently have them in my @acme/api package in a "helpers" folder. I already have a @acme/shared folder where I keep some pure reusable functions and I'm not sure if I would like to put there some server functions. I thought also about putting the functions in the concerning router file and then exporting it from there, but I didn't liked it that much.
An example for a helper function would be getPosts. I would use that function both in a router and in a gSSP. Where would you suggest putting that function? Is it fine exporting that from the @acme/api? Or should that be in a shared package?
Also I wanted to avoid importing @acme/db from the nextjs app directly, so that everything will pass through the @acme/api. Therefore I export from the api as a "helper" function all the db calls I need in the nextjs' gSSP. Is that something useful in your opinion? or is pretty useless?
The point about the helpers function in the end was because in my @acme/api package then I wanted to reference with aliases the helpers function in the routers so that was a bit better looking and a bit easier to move files around. Anyway yeah I agree that it's not really necessary.
Thanks for your time!

@juliusmarminge About the functions that I use both in the api and in the nextjs app, I I currently have them in my @acme/api package in a "helpers" folder. I already have a @acme/shared folder where I keep some pure reusable functions and I'm not sure if I would like to put there some server functions. I thought also about putting the functions in the concerning router file and then exporting it from there, but I didn't liked it that much. An example for a helper function would be getPosts. I would use that function both in a router and in a gSSP. Where would you suggest putting that function? Is it fine exporting that from the @acme/api? Or should that be in a shared package? Also I wanted to avoid importing @acme/db from the nextjs app directly, so that everything will pass through the @acme/api. Therefore I export from the api as a "helper" function all the db calls I need in the nextjs' gSSP. Is that something useful in your opinion? or is pretty useless?

No, that's totally valid and a pattern we encourage in trpc for reusability. A lot of people just exploit createCaller for this but there are some downsides to that. Extracting logic is in most cases better but ofc - it depends.
What I'm still curious about is why you need path aliases for that? The next.js app is probably doing something like this:
// apps/nextjs/src/pages/posts/index.tsx - or whatnot
import { getPosts } from "@acme/api/shared";

and in the post router it would be like
// packages/api/src/router/post.ts
import { getPosts } from "../shared"; // <-- is it here you would like aliases?

@juliusmarminge

// packages/api/src/router/post.ts
import { getPosts } from "../shared"; // <-- is it here you would like aliases?

Yes it would be there.
I understand your point that a package should not be that big to need aliases. In the end it was just a cool thing to have particularly when moving things around. But I guess that's not a big deal as you pointed out when building a package.
One last question: would you recommend exporting all the "shared" functions with a barrel file and then import (for example from @acme/api) or you would import them singularly like @acme/api/src/shared/myFunction?

personal preference really. the reason the transformer is its separate entrypoint is it needs to run on the client and we can't import runtime client-code from the same place we export the router from

Okay I will think about that. I think I can close this one now. Thank you so much for your help!

Hey guys, you ever found a solution to this? I realise it's not very important, just asking incase either of you came up with anything before I give up on it.

I'd be open to explore using the newly supported node imports

That's what I found as well, but didn't quite get it to work. Gonna look into those a bit more and get back to you!

https://github.com/vercel/turbo/discussions/4304 I tried this with no luck.
long story short anything i import in a package based on path alias it comes back as any in any app that uses it. Works fine in the package code.
For instance if i set up a path alias in the api package, and I use that path alias to import publicProcedure, when I import the router that is using the public procedure it is imported as any.


added doc/tags to gitignore

May be you @mingtang  should try the https://github.com/phpvim/phpcd.vim . A new phpcomplete extended version based on the PHP's Reflection.


Connecting the ADXL345 accelerometer to the Raspberry Pi 3

Great blog post, worked effortlessly and no issues.  Thank you.

Awesome you like it!

Just a question before I choose which accelerometer to buy. The ADXL345 isn't an analog accelerometer? That way don't I need an A/D converter for it to work on my raspberry pi 3 model B?

Its digital.  Works with  I2C or SPI  just hook up on the correct GPIO pins.
http://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf

Oh, my mistake. That's good then! Thanks
2017-07-06 16:48 GMT-03:00 Bret Askeland<EMAIL_ADDRESS>
Its digital. Works with I2C or SPI just hook up on the correct GPIO pins.
http://www.analog.com/media/en/technical-documentation/
data-sheets/ADXL345.pdf
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/anstack/anstack.github.io/issues/3#issuecomment-313500282,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AckjssG55TYNfDxtcNQ6-rf6v8FoTKoRks5sLToSgaJpZM4JFkDb
.

Hola, seguiste trabajando con este acelerometro? Vi que pusiste que el siguiente blog del acelereometro seria trabajarlo en tiempo real pero no he podido encontrar ese blog. Quitame la duda y muchas gracias!

Hey, I have been working with It. I might be able to help you, what do you
want to know?
Em 26 de out de 2017 3:17 AM, "Haroldo Vélez"<EMAIL_ADDRESS>escreveu:

Hola, seguiste trabajando con este acelerometro? Vi que pusiste que el
siguiente blog del acelereometro seria trabajarlo en tiempo real pero no he
podido encontrar ese blog. Quitame la duda y muchas gracias!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/anstack/anstack.github.io/issues/3#issuecomment-339553882,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AckjsmkPEGnFP3fZPQL8ZAYms2IuxXijks5swBXRgaJpZM4JFkDb
.

Yeah, I did some more research about it but didn't have the chance to write all down. @pimyride94 @Haroldov we can sync if you want to write about it.

@ccamacho @pimyride94  i want to know  what is  the use of the BW_RATE in the class code.

Its how frequent you will get the accelerometer measurements. More info here: https://www.dimensionengineering.com/info/accelerometers

@ccamacho yes but I couldn't implement this rate in the code. Can you help me with this?

@kacunar those values represent registers rate codes, you can check the accelerometer specification at https://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345.pdf
In any case, I'll give you an example, the 1600HZ rate (in the code) corresponds with a 1111 rate code (base 2), which is what you have in the code 0x0F (base 16).

@ccamacho yes I know. But when I run my code, I only get one measurement. why the accelerometer dont give me measurements with this frecuency??

Well, you have tô make a code tô give you multiple readings, such as a
"while" iteration. For example:
while true:
x, y, z = Get.adxl345.readings
time.sleep(0.1)
This Will give you the Axis values each 0.1 Second. The rate you specify is
the ability tô read and not How many times It Will give you a value per
second
Hope this helps
Em 27 de out de 2017 8:15 PM, "Kevin Acuña"<EMAIL_ADDRESS>escreveu:

@ccamacho https://github.com/ccamacho yes I know. But when I run my
code, I only get one measurement. why the accelerometer dont give me
measurements with this frecuency??
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/anstack/anstack.github.io/issues/3#issuecomment-340110419,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ackjsr54NP8VlpCBPkIKMGGlbZkSxudzks5swlYegaJpZM4JFkDb
.

@pimyride94 ohhh ok, thank you. This is how i have the code now. But i have errors with the rate because the code is large. So when  I want 10 seconds of measure with a sampling frecuency of 1 HZ , the raspberry give me  10 measurements but it takes more than 10 seconds.

So maybe you Will need tô separate the while iteration from the rest of the
code. Make the while and create a variable tô count, like "i". So each time
a while loop occurs the variable increases by one. Then inside the
iteration you ask, is i < 10, If thats true use break, and It Will get out
of the while loop. Also inside the iteration you can store the readings in
an array tô work with them as you wish later on the code and It Will last
10 second tô get all 10 readings. But as you Said, the rest of the code
Will take more time to complete
Em 27 de out de 2017 9:04 PM, "Kevin Acuña"<EMAIL_ADDRESS>escreveu:

@pimyride94 https://github.com/pimyride94 ohhh ok, thank you. This is
how i have the code now. But i have errors with the rate because the code
is large. So when I want 10 seconds of measure with a sampling frecuency of
1 HZ , the raspberry give me 10 measurements but it takes more than 10
seconds.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/anstack/anstack.github.io/issues/3#issuecomment-340117334,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AckjsqHN676HaNG8XcjLmw78Qnp0Yxaxks5swmGAgaJpZM4JFkDb
.

@pimyride94 thank you


Bigger brush sizes

For the bigger maps the max brush size seems too small for working quickly. Maybe try 4x it see how performance is on a 1280 map size for instance. Not a huge deal but would speed up work flow a bit.

I kept is as 200 for max for now, I think that bigger than that it would lag.
Tho, I've added a brush multiplier in the settings so it's easier to sculpt.


Use oauthAccessToken instead of IDToken when returnIDPCredential is yes

Another fix for #2522

I need to get confirmation from our tech lead and see if this is the right fix before submitting.


Do delay-bind scriptblocks / scriptblocks in calculated properties run in a child variable scope by design?

The current behavior may well be by design, but it would be helpful to understand why  - and document it.

Script blocks passed to dedicated [scriptblock]-typed parameters such as in the context of  ForEach-Object and Where-Object  run directly in the caller's scope.

Delay-bind script-block arguments / script blocks in calculated properties, by contrast, run in a child scope, so that direct attempts to modify variables in the caller's scope create new local instances instead.

Contrast the following two commands:
# $i in the script block is the *caller's* $i, so modifying it works across invocations.
PS> $i = 0; 'a', 'b' | ForEach-Object { (++$i) }
1
2

# The script block runs in a *child* scope, so modifying $i modifies a local copy that
# goes out of scope with the script block.
PS> $i = 0; 'a', 'b' | Select-Object { (++$i) }

 (++$i)
--------
       1
       1

Note how $i didn't increment across calls.

If you do want $i to increment across calls, you currently need a somewhat obscure workaround based on [ref]:
PS> $iRef = [ref] 0; 'a', 'b' | Select-Object { (++$iRef.Value) }

 (++$iRef.Value)
-----------------
                1
                2

Changing the behavior to consistently execute script blocks in the caller's would be a breaking change, though presumably of type Bucket 3: Unlikely Grey Area.
Environment data
Written as of:
PowerShell Core v6.1.0-preview.3

This behavior is so subtle that people might have been implicitly taking advantage of the fact that delay-bind scripts doesn't pollute the caller's scope.
My understanding is that pipeline-extraction scripts (ValueFromPipeline(ByPropertyName)) are mapping that are supposed to be pure (free of side-effect), while clearly ForEach-Object is more on the side of imperative paradigm, resembling the foreach statement. The choice for Where-Object is somehow arbitrary, but is useful for the case
$i = 0;
Get-Items | Where-Object { (++$i) % 2 }

One might ask why such usage wouldn't benefit the pipeline-extraction scenario, i.e., what's wrong if we execute the extraction scripts in the caller's scope. The answer is that there might be multiple parameters delay-bound. If the extraction script blocks have side effects, the order of extraction would affect the result. E.g., consider
# Imaginary
$i = 0;
Get-SomeItem | Use-SomePipeline -IndexMod2 { <# ??? #> } -IndexMod3 { <# ??? #> }

# Currently possible version
$i = [pscustomobject]@{ 'Value' = 0 };
Get-SomeItem | Use-SomePipeline -IndexMod2 { <# ??? #> } -IndexMod3 { <# ??? #> }

It is impossible to write the script correctly without knowing the order of delay-binding -- should I increase $i in the script for IndexMod2 or IndexMod3? I'm not sure whether PowerShell has the order of which parameter is bound before which documented. If that's undocumented, that's undefined to me, and if the extraction scripts had side effects, the whole script wouldn't be useful because of undefined behavior.
The invocation order for ForEach-Object and Where-Object is clear, so it makes sense to allow execution in the caller's scope.

clearly ForEach-Object is more on the side of imperative paradigm

Agreed. For Foreach-Object and Where-Object, running in the caller's scope allows us to do more than just writing results to the pipeline.
Also, Foreach-Object has -Begin, -Process and -End three script blocks, and they need to run in the same scope.
As for delay-bind script blocks in parameter binding, the purpose is simply to do some quick transformation/calculation on the value from pipeline, and it makes sense to isolate the execution to not pollute the caller's scope.

This behavior is so subtle

The behavioral distinction is indeed so subtle that it invites everlasting confusion.
Even if you understand the rationale - and the multiple-delay-bind-script-block scenario is a good argument for the distinction in principle, but, due to its exoticness, to my mind not in practice - remembering it is a challenge.

it makes sense to isolate the execution to not pollute the caller's scope.

To paraphrase a common saying: One person's pollution is another person's treasure.
Given:
PS> $i = 0; 'a', 'b' | ForEach-Object { (++$i) }
1
2

why shouldn't a delay-bind script block with Rename-Item work the same?
# Does NOT works as intended, because a *local* $i variable is created on every invocation.
PS>  $i = 0; $null = New-Item -Force tf-a, tf-b; Get-Item tf-? |
           Rename-Item -NewName { '{0}-{1}' -f ++$i, $_.Name  } -WhatIf
What if: Performing ... "Rename File" on target "Item: .../tf-a Destination: .../1-tf-a".
What if: Performing ... "Rename File" on target "Item: .../tf-b Destination: .../1-tf-b".

That is not a hypothetical example, by the way: it's a real-world scenario for renaming files with sequence numbers that I've come across multiple times on Stack Overflow.

P.S.: The flip side of this issue is that it's currently extremely cumbersome to implement your own cmdlet / advanced function that processes a given script block in the caller's scope ("dot-sourced") with $_ support, the way that ForEach-Object  / Where-Object / Measure-Command do - see #3581

Yeah, I've hit that one too @mklement0. Takes me a few attempts to realize what I'm doing wrong, and thankfully the solution is relatively easy -- just scope-bind the variable properly (either to $script: or $global: usually works OK.) 😄

the solution is relatively easy -- just scope-bind the variable properly (either to $script: or $global: usually works OK.) 😄

@vexx32 Would you please be able to expand on this?  Pretty sure I'm up against this issue, so wanted to explore your suggestion further.

@mklement0's not-working example was:
$i = 0
$null = New-Item -Force tf-a, tf-b; Get-Item tf-? |
    Rename-Item -NewName { '{0}-{1}' -f ++$i, $_.Name  } -WhatIf

In that case you can workaround it with something like:
$script:i = 0
$null = New-Item -Force tf-a, tf-b; Get-Item tf-? |
    Rename-Item -NewName { '{0}-{1}' -f ++$script:i, $_.Name  } -WhatIf

Generally you should only run into this kind of issue if you've a need to set or change the variable value from inside the delay-bind scriptblock. 🙂

Thanks, @vexx32. Note that there's also the more obscure [ref]-based workaround from the OP, which, however, does have that advantage that it predictably targets the parent scope, whatever it may be (you could alternatively implement this via Get-Variable / New-Variable -PassThru in the calling scope):
[ref] $iRef = 0; $null = New-Item -Force tf-a, tf-b; Get-Item tf-? |
           Rename-Item -NewName { '{0}-{1}' -f ++$iRef.Value, $_.Name  } -WhatIf


Add sexual harassment story

I think Misrepresentation could be a good fit here as an additional category?

Changed; but as I think about it — what is the difference between Inaccuracies and Misrepresentation? Does it make sense to have both?

In my mind, Inaccuracies are statements that are factually incorrect and easy to verify as such, and Misrepresentation is when an individual or organization is falsely represented in a way that might be damaging (as in defamation). These seem sufficiently different to me? As of now we have entries that are inaccuracies but not misrepresentation as well as entries that are misrepresentation but not inaccuracies.

Sounds good. Merge is pending your approval.


External collaborator teams

It is (probably) not possible to make a team under UU with people who do not have a solis ID.
It should be made clear how external collaborators are given access to repos in the documentation.

Indeed not possible. It is mentioned here, but it makes sense to create a separate page about working together in teams and add more elaborate instructions

I think in general it is nice to have these types of things explained concisely in our own resources rather than referring to the github documentation; the docs can be a bit technical and lack opinion/advice on how to do it.


[Bug] out of memory int16Array@[native code]

Describe the Bug
When trying to load large CTA's using the Nifti volume loader on mobile i get the following error.
The same setup works just fine for NCCT nifti images that are significantly smaller, and works just fine loading the CTA on desktop.
out of memory
int16Array@[native code]
This only happens on mobile and with CTA's.
Steps to Reproduce
Try to load a large (120mv +), compressed CTA  on mobile using the nifti volume loader.
The current behavior
The client  retreives all of the image, but once loading it - the error appears.
The expected behavior
To render the image after retrieving it.
OS
IOS 17.1.1
Node version
v18.19.1
Browser
Chrome or Safari (tested both)

I have the same problem. IOS17, Out of memory, CTA images. Hope somebody to fix it quickly.

Cornerstone3D 2.0 has been released. It comes with:

New Segmentation Architecture: Segmentations are now treated as first-class data structures, not just tools. This allows for greater flexibility and support for advanced visualization, such as multi-representational views, viewport-specific customizations, and easier management within MPR layouts.

Introduction of VoxelManager: A more memory-efficient and streamlined approach to voxel data handling, replacing traditional scalar arrays with a unified, image-based system. This change reduces memory usage, enhances data clarity, and simplifies data access across stacks and volumes.

For more details on these updates and to guide you through the migration, please refer to our Migration Guide.


Remove all references to patch_network_get

Now that we move to socket.getfqdn in favor of bind_address, mocking network_get would eventually become unnecessary.
Depends on:

#293
all libs to drop bind_address
fetch-lib

I think this issue is no obsolete in view of merged PR 331 and  Issue 329, hence I think this issue may be closed.


Upgrade package.json to the new 'exports' definition

When I'm using the package on an ESM project, I get an error:
Failed to generate manifest from function source: SyntaxError: Named export 'uchar' not found. The requested module 'struct-buffer' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'struct-buffer';
const { StructBuffer, uchar, ushort } = pkg;

I believe that the package.json definition is not aligned with conditional exports.
"exports": {
  "require": "./dist/umd/struct-buffer.js",
  "import": "./dist/esm/struct-buffer.js"
},

import * as m from "struct-buffer";
const { StructBuffer, uchar, ushort, pack } = m.default;


400 bad request and no memories when syncing local files

[ ] Sometimes 400 bad request when syncing local files
[ ] Updated and new memories response is empty even with YT video audio of more than 20 minutes

The reason for this 400 is that timestamp of the files is in the future

@mdmohsin7 was it resolved with your last PR ? 😌

@mdmohsin7 was it resolved with your last PR ? 😌

It still happens sometimes, the invalid timestamp issue, but not as frequently as it used to be

not a priority for now, moving to the backlog


amplify api update results in error: Cannot redefine property: flatMap

amplify api update results in error: Cannot redefine property: flatMap
When running
amplify api update
I get
TypeError: Cannot redefine property: flatMap
    at Function.defineProperty (<anonymous>)
    at Object.<anonymous> (/usr/local/Cellar/node/9.11.1/lib/node_modules/@aws-amplify/cli/node_modules/aws-appsync-codegen/src/utilities/array.ts:9:8)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/local/Cellar/node/9.11.1/lib/node_modules/@aws-amplify/cli/node_modules/aws-appsync-codegen/src/compiler/legacyIR.ts:10:1)

@jeanpaulcozzatti Did you change update node after creating the project?

That happened to me and after running amplify configure project and confirmed default values the problem was solved.

@jeanpaulcozzatti Please feel to re-open this issue if the problem still persists.


Document metadata limiting compression on per route basis

Document metadata for compression of the responses coming from services on a per route basis. Allowing the service to delegate compression of certain paths to the API ML.
Linked to: https://github.com/zowe/api-layer/issues/1616

Do you think it makes sense to remove the "enable compression" part from v 1.15 in this PR? Or should we do another one?

@achmelo I would do it in another one


FORGE_SERVER description

Is this the 'name' (like 'breezy-hurricane' or whatever random name forge might assign)?  Or an IP address?  Or something else?

So... setting the FORGE_SERVER to the IP of the forge server in question, I still get
Laravel\Forge\Exceptions\NotFoundException

  The resource you are looking for could not be found.

I can't get much useful debugging from github action runners, but it is in the FindServer code
composer/vendor/mehrancodes/veyoze/app/Services/Forge/Pipeline/FindServer.php(30): Laravel\Forge\Forge->server()

The 'FORGE_SERVER' needs to be the server's ID in Forge (54183, for example - can get from the URL if nothing else)
So.. now it can't make a site.   Still digging through
 INFO    Start finding the server.
  INFO    Finding the associated site.
  INFO    ---> Site not found.
  INFO    Creating a new site.
  INFO    ---> Enabling site isolation.
[2023-10-20 17:53:26] development.ERROR: The given data failed to pass validation. {"exception":"[object] (Laravel\\Forge\\Exceptions\\ValidationException(code: 0): The given data failed to pass validation. at /composer/vendor/laravel/forge-sdk/src/MakesHttpRequests.php:106)

Thanks for addressing this issue on the https://github.com/mehrancodes/veyoze/issues/25.
I'm considering refining the documentation this week. Additionally, I'll be working on improving the clarity of error messages for better troubleshooting.
Also you can refer to this working sample for Laravel that includes two workflows for provision and teardown processes.

@mgkimsal, could you please review my recent PR focused on enhancing Forge ValidationException error clarity? Which is related to this issue. I'd appreciate your insight and am open to adding you as a contributor.

Check out the latest release! Please try the provision command again to help pinpoint the issue with the Forge Site creation. 🛠


[DOC] AWS EMR instructions for RAPIDS Accelerator disables all V1 readers

The AWS EMR instructions for adding the RAPIDS Accelerator tells the user to explicitly disable all Spark DataSource V1 readers by setting spark.sql.sources.useV1SourceList to "".  That causes the CPU to plan some queries suboptimally, since not all predicate pushdowns are supported on V2 datasources as they are on V1.  The NDS benchmark is significantly slower when using Parquet with datasource v2, which is why we've been explicitly overriding this config to use V1 for Parquet when testing NDS on AWS EMR.
We should work with the AWS EMR team to update the documentation so it no longer recommends overriding the spark.sql.sources.useV1SourceList setting.

FYI @kevnzhao

The recommended config in AWS EMR doc is not up to date. We'll update our doc to remove config spark.sql.sources.useV1SourceList: "".

this can be closed.