:wrench: ~/. dotfiles for Arch Linux
A curated list of awesome QR code libraries, software and resources
:octopus: Quickly apply git commands to all your repos
klavaro stat files
:sauropod: Missing technology
:package: AUR package for gifify
:package: AUR package for gitdns
:package: AUR package for gitkv
:package: AUR package for memoize
issue openedphotoprism/photoprism
Removing picture from album does not update the album cover
If one removes from an album the picture used by its cover, the cover does not get updated to use a different picture from the album. Bug or feature?
created time in 4 hours
push eventaureooms/aureooms
commit sha 4dbe7a59c1b285366facecd9ac954d6aaf26ea4c
Add peertube.
push time in 4 hours
startedthchang/DelaunayFan
started time in 5 hours
push eventaureooms/aureooms
commit sha 8d752e1eebc83a2f1e06b0ee63eaea519432525f
Remove comments.
commit sha 132f29e1624d8fdc90cdf5b424e99a0c043e6cec
Add cool stuff.
push time in 10 hours
startedsdassow/awesome-veganism
started time in 12 hours
issue commentaureooms/ovh-dns
Ah I see. The record type is hardcoded in ovh-dns. Have you tried to use ovh-api-client directly? Can you try to use it and tell me if it works. Then a record type option could be added here if it makes sense.
comment created time in a day
issue commentaureooms/ovh-dns
Hi! What have you tried and what is the error?
comment created time in a day
startedGideonWolfe/Chameleon
started time in a day
startedGideonWolfe/Zathura-Pywal
started time in a day
startedGideonWolfe/pTable
started time in a day
startedGideonWolfe/vim.reaper
started time in a day
push eventaureooms/js-avl-tree
commit sha 7c1e3c90b4b9bdc85f855316dc3a03011b334bb8
:books: docs(README): Fix header image attribution.
push time in a day
startedheadcrab-rs/headcrab
started time in a day
issue commentphotoprism/photoprism
Maybe the items didn't react anymore when the backend sent updated metadata.
Let's say you have a component that renders something related to a photo by receiving a Photo instance as a prop with key photo. If I understand Vue reactivity correctly (v2), you need the photo prop to change to trigger a render (meaning photo must be a new instance of Photo when, for instance, the metadata changes), or you can avoid creating a new Photo instance and changing the photo prop by instead updating some of the properties of the existing instance which you watch with a deep watcher. Am I correct?
comment created time in a day
startedjaedle/mirror-to-gitea
started time in 2 days
startedPaddlePaddle/PaddleOCR
started time in 2 days
startedgtank/cryptopasta
started time in 2 days
push eventaureooms/dotfiles
commit sha 9bf03f848658359103f099f21cf24d895623334a
:art: style(menu.pdf.arxiv): Run shellcheck.
push time in 2 days
push eventaureooms/geez
commit sha e15c267de89fab489ea78e3f8489102e4ae38599
:books: docs(README): Fix license badge.
push time in 2 days
push eventaureooms/geez
commit sha fc3061251a73862757243b123d6fd9dddf67cdda
:books: docs(README): Add emojis and badges.
push time in 2 days
push eventaureooms/js-library
commit sha d26a7292effc97dbdce917d24244b4cd0a3d5932
:books: docs(README): Properly link and attribute header image.
push time in 2 days
push eventaureooms/dotfiles
commit sha 2016f00f90628fde3dd65c956782476c39c0b916
:books: docs(README): Multiple improvements. - Clean up style. - Split hardware stuff and add thermald. - Add Chris Down's dotfiles link.
push time in 2 days
push eventaureooms/js-sat
commit sha b4b231943b2b581ee68d447ed23c1458b098e818
:books: docs(README): Add emoji heading and section logos.
commit sha 782fd81c87b8b443877d3907ded8c8a6a56a9b31
:books: docs(README): Properly link and attribute header image.
push time in 2 days
push eventaureooms/eightfold
commit sha 5097ea0ff30c64b0214f4b3596dc376ff397b0b5
:bug: fix: Properly link and attribute header image.
push time in 2 days
push eventaureooms/texshake
commit sha 768a12f13fa22798073c228e9e64f0c21a3962cf
:books: docs(README): Properly link and attribute header image.
push time in 2 days
push eventaureooms/js-data-structures
commit sha 5f22eae2e6c03dbcaa7dc7ccca87f66ac19551b9
:books: docs(README): Properly attribute header image.
push time in 2 days
push eventaureooms/js-algorithms
commit sha 4bce9084fceba9ca984e52fc2cea26290e3ac9fd
:books: docs(README): Add GitHub issues badge.
commit sha f784cc380043802c09dbd6197ca57959a0b8131c
:books: docs(README): Properly link and attribute header image.
push time in 2 days
push eventaureooms/js-itertools
commit sha 550acb1938e8d6603e9233aa97dd642d360837b9
:books: docs(README): Fix attribution and linking of header image.
push time in 2 days
push eventaureooms/dotfiles
commit sha 63f5213c8b50577470dc4a27a6ed7a9ef86a0341
:books: docs(README): Add some explain xkcd links in credits.
push time in 2 days
startedTeamMeow/vscode-math-to-image
started time in 2 days
push eventaureooms/dotfiles
commit sha d85eb9f9a86235f4b9483138d7cdf7ef53e4bf8f
:books: docs(README): Improve header image. Attribute and link. Reduce size and center.
push time in 2 days
push eventaureooms/dotfiles
commit sha 5a38eaf335cd6d169a8eaa4b42639be00c69629e
:bug: fix(menu.pdf.arxiv): Escape filenames.
push time in 2 days
startedgbv/image-attribution
started time in 2 days
push eventaureooms/dotfiles
commit sha 12bb1d60fcf0a1e5772490ebda6c30fdbd2fd93b
:sparkles: feat(i3): Add menu to load arXiv bibtex in clipboard.
commit sha 33093ec54065113eb30ca015320bc25d695e9b9b
:sparkles: feat(i3): Add menu to open local arXiv papers.
push time in 2 days
issue commentphotoprism/photoprism
Maybe the items didn't react anymore when the backend sent updated metadata.
Is there a regression test for this?
comment created time in 2 days
push eventaureooms/aureooms
commit sha 655a4d72ce9bdf78b0b540c22389058504ef8e16
Update README.md
push time in 2 days
push eventaureooms/stopdown
commit sha 592e6f95abe728bbc66329be345126425b7a9111
Update README.md
push time in 2 days
push eventaureooms/stopdown
commit sha ff52c2c763bad4de2525706c5d47e1eeee807c41
Update README.md
push time in 2 days
push eventaureooms/stopdown
commit sha ec8f6e160053fa43a84f23987efce8a1614c41fa
Update README.md
push time in 2 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
export default { photos: Array, selection: Array, openPhoto: Function,- editPhoto: Function,- album: Object,
I can roll this back since it has nothing to do with fixing the issue.
comment created time in 2 days
issue commentphotoprism/photoprism
Probably won't be able to review your suggestions before the weekend... looking forward to your PR / draft... as mentioned, changes should be kept to a minimum as a major refactoring will likely introduce new issues and at least requires much more testing.
The changes I have introduced so far only fix the problem for component/photo/mosaic.vue. It does so by factoring out the v-flex element to a new component component/photo/tile.vue. To fix the performance everywhere requires similar changes to:
component/photo/cards.vuecomponent/photo/list.vueshare/photo/mosaic.vueshare/photo/cards.vueshare/photo/list.vue
I will limit the changes to what is needed to fix the issue raised in this thread. But I think that it would make sense in the future to refactor to share logic between component and share.
comment created time in 2 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
+<template>+ <v-flex+ :data-uid="photo.UID"+ v-bind:class="{ selected: isSelected }"+ class="p-photo"+ xs4 sm3 md2 lg1 d-flex+ >+ <v-hover>+ <v-card tile slot-scope="{ hover }"+ @contextmenu="onContextMenu($event, index)"+ :class="isSelected ? 'elevation-10 ma-0' : 'elevation-0 ma-1'"+ :title="photo.Title">+ <v-img :src="photo.thumbnailUrl('tile_224')"+ aspect-ratio="1"+ class="accent lighten-2 clickable"+ @mousedown="onMouseDown($event, index)"+ @click.stop.prevent="onClick($event, index)"+ >+ <v-layout+ slot="placeholder"+ fill-height+ align-center+ justify-center+ ma-0+ >+ <v-progress-circular indeterminate+ color="accent lighten-5"></v-progress-circular>+ </v-layout>++ <v-layout+ fill-height+ align-center+ justify-center+ ma-0+ class="p-photo-live"+ style="overflow: hidden;"+ v-if="photo.Type === 'live'"+ v-show="hover"+ >+ <video width="224" height="224" autoplay loop muted playsinline :key="photo.videoUrl()">+ <source :src="photo.videoUrl()" type="video/mp4">+ </video>+ </v-layout>++ <v-btn v-if="hidePrivate && photo.Private" :ripple="false"+ icon flat small absolute+ class="p-photo-private opacity-75">+ <v-icon color="white">lock</v-icon>+ </v-btn>++ <v-btn v-if="hover || isSelected" :ripple="false"+ icon flat small absolute+ :class="isSelected ? 'p-photo-select' : 'p-photo-select opacity-50'"+ @click.stop.prevent="onSelect($event, index)">+ <v-icon v-if="isSelected" color="red"
I changed the color to red to check that my changes were reflected in the UI. I have to changed it back to white before this PR gets merged.
comment created time in 2 days
starteddistribyted/distribyted
started time in 3 days
startedsaintmarina/undelete_jpg
started time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
+<template>+ <v-flex+ :data-uid="photo.UID"+ v-bind:class="{ selected: isSelected }"+ class="p-photo"+ xs4 sm3 md2 lg1 d-flex+ >+ <v-hover>+ <v-card tile slot-scope="{ hover }"+ @contextmenu="onContextMenu($event, index)"+ :class="isSelected ? 'elevation-10 ma-0' : 'elevation-0 ma-1'"+ :title="photo.Title">+ <v-img :src="photo.thumbnailUrl('tile_224')"+ aspect-ratio="1"+ class="accent lighten-2 clickable"+ @mousedown="onMouseDown($event, index)"+ @click.stop.prevent="onClick($event, index)"+ >+ <v-layout+ slot="placeholder"+ fill-height+ align-center+ justify-center+ ma-0+ >+ <v-progress-circular indeterminate+ color="accent lighten-5"></v-progress-circular>+ </v-layout>++ <v-layout+ fill-height+ align-center+ justify-center+ ma-0+ class="p-photo-live"+ style="overflow: hidden;"+ v-if="photo.Type === 'live'"+ v-show="hover"+ >+ <video width="224" height="224" autoplay loop muted playsinline :key="photo.videoUrl()">+ <source :src="photo.videoUrl()" type="video/mp4">+ </video>+ </v-layout>++ <v-btn v-if="hidePrivate && photo.Private" :ripple="false"+ icon flat small absolute+ class="p-photo-private opacity-75">+ <v-icon color="white">lock</v-icon>+ </v-btn>++ <v-btn v-if="hover || isSelected" :ripple="false"+ icon flat small absolute+ :class="isSelected ? 'p-photo-select' : 'p-photo-select opacity-50'"+ @click.stop.prevent="onSelect($event, index)">+ <v-icon v-if="isSelected" color="red"+ class="t-select t-on">check_circle+ </v-icon>+ <v-icon v-else color="accent lighten-3" class="t-select t-off">radio_button_off</v-icon>+ </v-btn>++ <v-btn icon flat small absolute :ripple="false"+ :class="photo.Favorite ? 'p-photo-like opacity-75' : 'p-photo-like opacity-50'"+ @click.stop.prevent="photo.toggleLike()">+ <v-icon v-if="photo.Favorite" color="white" class="t-like t-on" :data-uid="photo.UID">favorite</v-icon>+ <v-icon v-else color="accent lighten-3" class="t-like t-off" :data-uid="photo.UID">favorite_border+ </v-icon>+ </v-btn>++ <template v-if="photo.isPlayable()">+ <v-btn v-if="photo.Type === 'live'" color="white"+ icon flat small absolute class="p-photo-live opacity-75" :depressed="false" :ripple="false"+ @click.stop.prevent="openPhoto(index, true)" title="Live Photo">+ <v-icon color="white" class="action-play">adjust</v-icon>+ </v-btn>+ <v-btn v-else color="white"+ outline fab absolute class="p-photo-play opacity-75" :depressed="false" :ripple="false"+ @click.stop.prevent="openPhoto(index, true)" title="Play">+ <v-icon color="white" class="action-play">play_arrow</v-icon>+ </v-btn>+ </template>+ <v-btn v-else-if="photo.Type === 'image' && photo.Files.length > 1" :ripple="false"+ icon flat small absolute class="p-photo-merged opacity-75"+ @click.stop.prevent="openPhoto(index, true)">+ <v-icon color="white" class="action-burst">burst_mode</v-icon>+ </v-btn>+ <v-btn v-else-if="photo.Type === 'image' && hover && ($clipboard.selection.length > 0)" :ripple="false"
Probably not, we do not want that prop to trigger some rerender blast.
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
export default { photos: Array, selection: Array, openPhoto: Function,- editPhoto: Function,- album: Object,
These two are not used anywhere it seems.
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
+<template>+ <v-flex+ :data-uid="photo.UID"+ v-bind:class="{ selected: isSelected }"+ class="p-photo"+ xs4 sm3 md2 lg1 d-flex+ >+ <v-hover>+ <v-card tile slot-scope="{ hover }"+ @contextmenu="onContextMenu($event, index)"+ :class="isSelected ? 'elevation-10 ma-0' : 'elevation-0 ma-1'"+ :title="photo.Title">+ <v-img :src="photo.thumbnailUrl('tile_224')"+ aspect-ratio="1"+ class="accent lighten-2 clickable"+ @mousedown="onMouseDown($event, index)"+ @click.stop.prevent="onClick($event, index)"+ >+ <v-layout+ slot="placeholder"+ fill-height+ align-center+ justify-center+ ma-0+ >+ <v-progress-circular indeterminate+ color="accent lighten-5"></v-progress-circular>+ </v-layout>++ <v-layout+ fill-height+ align-center+ justify-center+ ma-0+ class="p-photo-live"+ style="overflow: hidden;"+ v-if="photo.Type === 'live'"+ v-show="hover"+ >+ <video width="224" height="224" autoplay loop muted playsinline :key="photo.videoUrl()">+ <source :src="photo.videoUrl()" type="video/mp4">+ </video>+ </v-layout>++ <v-btn v-if="hidePrivate && photo.Private" :ripple="false"+ icon flat small absolute+ class="p-photo-private opacity-75">+ <v-icon color="white">lock</v-icon>+ </v-btn>++ <v-btn v-if="hover || isSelected" :ripple="false"+ icon flat small absolute+ :class="isSelected ? 'p-photo-select' : 'p-photo-select opacity-50'"+ @click.stop.prevent="onSelect($event, index)">+ <v-icon v-if="isSelected" color="red"+ class="t-select t-on">check_circle+ </v-icon>+ <v-icon v-else color="accent lighten-3" class="t-select t-off">radio_button_off</v-icon>+ </v-btn>++ <v-btn icon flat small absolute :ripple="false"+ :class="photo.Favorite ? 'p-photo-like opacity-75' : 'p-photo-like opacity-50'"+ @click.stop.prevent="photo.toggleLike()">+ <v-icon v-if="photo.Favorite" color="white" class="t-like t-on" :data-uid="photo.UID">favorite</v-icon>+ <v-icon v-else color="accent lighten-3" class="t-like t-off" :data-uid="photo.UID">favorite_border+ </v-icon>+ </v-btn>++ <template v-if="photo.isPlayable()">+ <v-btn v-if="photo.Type === 'live'" color="white"+ icon flat small absolute class="p-photo-live opacity-75" :depressed="false" :ripple="false"+ @click.stop.prevent="openPhoto(index, true)" title="Live Photo">+ <v-icon color="white" class="action-play">adjust</v-icon>+ </v-btn>+ <v-btn v-else color="white"+ outline fab absolute class="p-photo-play opacity-75" :depressed="false" :ripple="false"+ @click.stop.prevent="openPhoto(index, true)" title="Play">+ <v-icon color="white" class="action-play">play_arrow</v-icon>+ </v-btn>+ </template>+ <v-btn v-else-if="photo.Type === 'image' && photo.Files.length > 1" :ripple="false"+ icon flat small absolute class="p-photo-merged opacity-75"+ @click.stop.prevent="openPhoto(index, true)">+ <v-icon color="white" class="action-burst">burst_mode</v-icon>+ </v-btn>+ <v-btn v-else-if="photo.Type === 'image' && hover && ($clipboard.selection.length > 0)" :ripple="false"
Should selection.length > 0 be passed as a prop from the parent?
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
+<template>+ <v-flex+ :data-uid="photo.UID"
What is this used for?
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
</v-card-title> </v-card> <v-layout row wrap class="p-results">- <v-flex- v-for="(photo, index) in photos"- :key="index"- :data-uid="photo.UID"- v-bind:class="{ selected: $clipboard.has(photo) }"- class="p-photo"- xs4 sm3 md2 lg1 d-flex+ <p-photo-tile+ v-for="(photo, index) in photos"+ :key="index"+ :index="index"
Is this needed since we already have key? Does key have a special Vue meaning? Can we/should we access it from the child?
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
export default { photos: Array, selection: Array, openPhoto: Function,- editPhoto: Function,- album: Object, filter: Object, }, data() { return {- hidePrivate: this.$config.settings().features.private,
Moved to child.
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
</v-card-title> </v-card> <v-layout row wrap class="p-results">- <v-flex- v-for="(photo, index) in photos"- :key="index"- :data-uid="photo.UID"- v-bind:class="{ selected: $clipboard.has(photo) }"- class="p-photo"- xs4 sm3 md2 lg1 d-flex+ <p-photo-tile+ v-for="(photo, index) in photos"+ :key="index"+ :index="index"+ :photo="photo"+ :isSelected="(selection.length > 0) && $clipboard.has(photo)"
The following also works :isSelected="selection.includes(photo.getId())".
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
</v-card-title> </v-card> <v-layout row wrap class="p-results">- <v-flex- v-for="(photo, index) in photos"- :key="index"- :data-uid="photo.UID"- v-bind:class="{ selected: $clipboard.has(photo) }"- class="p-photo"- xs4 sm3 md2 lg1 d-flex+ <p-photo-tile+ v-for="(photo, index) in photos"+ :key="index"+ :index="index"+ :photo="photo"+ :isSelected="(selection.length > 0) && $clipboard.has(photo)"+ :openPhoto="openPhoto"+ :onSelect="onSelect"+ :onClick="onClick"+ :onMouseDown="onMouseDown"+ :onContextMenu="onContextMenu"
Could use event emitters instead? This works just fine though.
comment created time in 3 days
Pull request review commentphotoprism/photoprism
fix: Lag when selecting pictures
</v-card-title> </v-card> <v-layout row wrap class="p-results">- <v-flex- v-for="(photo, index) in photos"- :key="index"- :data-uid="photo.UID"- v-bind:class="{ selected: $clipboard.has(photo) }"- class="p-photo"- xs4 sm3 md2 lg1 d-flex+ <p-photo-tile+ v-for="(photo, index) in photos"+ :key="index"+ :index="index"
Is this needed since we already have key? Does key have a special Vue meaning? Can we/should we access it from the child?
comment created time in 3 days
PR opened photoprism/photoprism
Fixes #477. WIP
pr created time in 3 days
create barnchaureooms-contrib/photoprism
branch : performance/aureooms-infinite-scroll-selection-1
created branch time in 3 days
issue commentphotoprism/photoprism
If you do not want to decouple, I think one should precompute
$clipboard.has(photo)for each card and have a component for individual cards so that Vue can more quickly tell which cards need to be rerendered. It would still imply recomputing something for each item, but maybe much faster so that it would no become a problem unless you load a really large collection.
This is what I implemented.
comment created time in 3 days
issue commentphotoprism/photoprism
I have a proof of concept that fixes the issue for component/photo/mosaic.vue. Should I start a PR draft?
comment created time in 3 days
issue commentphotoprism/photoprism
Certainly the
selection.lengthcheck before each$clipboard.has(...)should trigger a render when going from0to1
I see, if I remove all mentions of selection.length then the view does not get updated :).
comment created time in 3 days
startedvuejs/vue-devtools
started time in 3 days
push eventaureooms-contrib/photoprism
commit sha 5f5392b0e43751c8363a0829f98e1ecd287e2b15
update chinese translations #514
commit sha b57136394b5e5751064dd3e8cedf98e7825b4848
Merge pull request #569 from yzwdroid/chineseTrans update chinese translations #514
commit sha 67287a2d5770f805556ac081773a706cba178074
Backend: Add testdata
push time in 3 days
issue commentphotoprism/photoprism
I did a quick performance recording on the default gallery view (mosaic I guess) after scrolling down a bit. I observe a lot of GC trashing. Vue probably has no way to understand what is going on inside Clipboard ($clipboard is not a prop). Once selection is updated, the entire list has to be recomputed (because render depends on $clipboard.has(...) calls). Replacing this.selection by a Set as suggested here won't solve the issue unless Vue is able to do some clever set diffing...
I am not sure now. In Vue, is it only props reactive updates that trigger renders? In that case I am not sure what is forcing the rerender. Certainly the selection.length check before each $clipboard.has(...) should trigger a render when going from 0 to 1. Not sure what happens once it is positive and stays positive. Was the selection.length check added for performance reasons?
comment created time in 3 days
issue commentphotoprism/photoprism
First I can try to rewrite $clipboard using a Set if you think this will not break things. I will need to understand how I can run the test suite for the whole thing.
This seems like a bad idea because Vue does not support Set and Map props: https://github.com/vuejs/vue/issues/2410#issuecomment-318487855?
comment created time in 3 days
startedcaddyserver/caddy
started time in 3 days
startedogham/exa
started time in 3 days
startedwilldoescode/nat
started time in 3 days
startedalexandreborges/malwoverview
started time in 3 days
startedmitre/advmlthreatmatrix
started time in 3 days
push eventaureooms/js-search-tree-spec
commit sha fbde291f44328e21cc73ee93a9bf08ded7a5de17
:sparkles: feat(DummySearchTree): Progress on spec.
push time in 3 days
issue openedaureooms/js-bst
import {isSorted} from '@aureooms/js-sort';
const hasBinarySearchProperty = (compare, tree) => {
const array = [...tree];
return isSorted(compare, array, 0, array.length);
};
const hasBinarySearchPropertyAndDoesNotContainDuplicates = (compare, tree) => {
const strictCompare = (a,b) => compare(a,b) <= 0 ? -1 : 1;
// const strictCompare = (a,b) => compare(a,b) < 0 ? -1 : 1; // ugly because the choice of `<=` vs `<` depends on the implementation of `hasBinarySearchProperty` and actually does not work in the general case
return hasBinarySearchProperty(strictCompare, tree);
const hasBinarySearchProperty = (compare, node, left = undefined, right = undefined) => {
if (node === null) return true;
if (left !== undefined && compare(node.key, left) < 0) return false;
if (right !== undefined && compare(node.key, right) > 0) return false;
// if (right !== undefined && compare(right, node.key) < 0) return false; // if using the `strictCompare` trick
return hasBinarySearchProperty(compare, node.left, left, node.key) && hasBinarySearchProperty(compare, node.right, node.key, right);
};
const hasBinarySearchPropertyAndDoesNotContainDuplicates = (compare, node, left = undefined, right = undefined) => {
if (node === null) return true;
if (left !== undefined && compare(node.key, left) <= 0) return false;
if (right !== undefined && compare(node.key, right) >= 0) return false;
return hasBinarySearchProperty(compare, node.left, left, node.key) && hasBinarySearchProperty(compare, node.right, node.key, right);
};
See https://en.wikipedia.org/wiki/Binary_search_tree#Verification
created time in 3 days
push eventaureooms-ulb-2010-2015/2014-2015-memof508
commit sha 00c2acf4dbf3ecbee26f67bbbccfc16dea0e4038
Update links to output files.
push time in 4 days
issue openedaureooms/js-search-tree-spec
Blend these:
- https://github.com/aureooms/js-heap-spec
- https://github.com/aureooms/js-red-black-tree/blob/master/src/adt/RedBlackTree.js
- https://en.wikipedia.org/wiki/Binary_search_tree#Operations
- https://en.wikipedia.org/wiki/Search_tree
- Predecessor, Successor
- References?
created time in 4 days
push eventaureooms/js-search-tree-spec
commit sha c7f3fdd5670a09aa9f1b9de30c921dcf63085cdf
:books: docs: Clean up.
push time in 4 days
push eventaureooms/js-search-tree-spec
commit sha a7bb5b106c45a62980e28616d22b4655015b0681
:boom: BREAKING CHANGE: First draft for spec. Get rid of all useless code, refactor, lint...
push time in 4 days
issue commentaureooms/js-bst
define binary search tree abstract data type
Spec repository is at https://github.com/aureooms/js-search-tree-spec
comment created time in 4 days
created repositoryaureooms/js-search-tree-spec
Search tree specification for JavaScript
created time in 4 days
push eventaureooms/js-bst
commit sha 79796388cf4c7d78a92fc44edccf923d50563c38
:boom: BREAKING CHANGE: Remove AVL tree related code.
push time in 4 days
push eventaureooms/js-in-situ-sort-spec
commit sha 77ef64a8ace013f8181871e61ac3e3ae5228f297
:books: docs(README): Add emoji logo.
commit sha 1e6e96e9f781dfdd1860d304f4b56ac5ba0a30cf
:books: docs(README): Add tldr snippet.
push time in 4 days
push eventaureooms/js-heap-spec
commit sha ab401cb5cdf590082babb502407d286809f5b657
:books: docs(README): Improve tldr snippet.
push time in 4 days
push eventaureooms/js-heap-spec
commit sha 98f6590102d2d1ee55de384b41aaa4f72dfd8f6b
:books: docs(README): Update.
push time in 4 days
push eventaureooms/js-cll
commit sha 132ca2d379f6724547d1171cadbb20a229e41fd0
:unamused: chore(package.json): Run fixpack.
commit sha fd8028918a126fdcc9f44598b89e47311d124451
:unamused: chore(deps): Update lock file.
push time in 4 days
push eventaureooms/js-heap-spec
commit sha 6b42ac488bc44b623e5a1122748aa14d0955a9f1
:unamused: chore(deps-dev): Upgrade tool set.
commit sha acd438581c87a00faee1dabe7beca2290854bfb0
:books: docs(README): Fix links.
commit sha bf477f94497945fff0e647b869196ad5d4019f91
:books: docs(README): Upgrade badges.
commit sha 4f1d7a540750d11badbdaae08b7fc95eccd1cd0d
:unamused: chore: Upgrade git ignore config.
commit sha 489cb8e3c2ba8976602ccde9db71af9e5f5c4267
:books: docs: Upgrade.
commit sha e201a726c0c5e33410fd236a59c45ac0a5b8899b
:unamused: chore(deps-dev): Configure babel.
commit sha b66117976f5d83d0ba001f7706c16d573a528d13
:unamused: chore(deps-dev): Replace @babel/polyfill by regenerator-runtime/runtime.
commit sha 63da9274cf143a811687345287437f9ac2b159ab
:mag: test: Upgrade ava.
commit sha 6eea33a8b8d6c050cfe3ffcbf73b08c908da4dd6
:hammer: build: Upgrade build script.
commit sha bcdbec295a6667845ac617627315f4d2dbe35512
:unamused: chore: Add dev script.
commit sha 56721e37841118a0a97bb874f506d7d4e7a46d62
:unamused: chore: Add travis script.
commit sha 50d7a09a5b6d56fa51fff25670fe51a30191d59b
:unamused: chore(package.json): Mark side-effects free.
commit sha 4e0fec3462489cbbd7ecce70baf3d8eb4ac4945f
:gear: ci: Upgrade renovate config.
commit sha e582c7347a97fe5ac70860ee4795b4a379a3f73e
:gear: ci: Upgrade travis config.
commit sha f2bab75ed2c5b07f21f8ad61859c4efdc9e4a52a
:art: style(package.json): Run fixpack.
commit sha 0cdd610b8d86157cbab4e3fd06c49ad972a7ef34
:unamused: chore: Lock dependencies.
push time in 4 days
push eventaureooms/js-heap-spec
commit sha 2b8d4b50ed79c78a826ebfbe4827375d69e71ff0
:unamused: chore(deps): Upgrade.
push time in 4 days
starteddevelopit/histore
started time in 4 days
startedpizzaql/pizzaql
started time in 4 days
startedpizzaql/next
started time in 4 days
issue openedaureooms/js-avl-tree
See
- https://www.youtube.com/watch?v=FNeL18KsWPc
- http://kukuruku.co/hub/cpp/avl-trees
created time in 4 days
push eventaureooms/js-avl-tree
commit sha 9f90895656e9b4865b2e586fbcd07ff8dbc2acb8
:books: docs(README): Link header image to source.
push time in 4 days
issue commentphotoprism/photoprism
Interesting, might come up with a replacement for
$clipboard.has()when I have time to think about it. Of course you're more than welcome to give it a try first!
First I can try to rewrite $clipboard using a Set if you think this will not break things. I will need to understand how I can run the test suite for the whole thing.
In general, the code seems easier to understand and maintain when the logic is encapsulated and independent of the view - but not at any price. Without VueJS, I'd probably use simple CSS classes for setting and getting the state.
Maybe the way selection is displayed is flawed anyway: with a large number of selected items the only exact information that can be extracted from the UI is selection.length in the bottom right corner. A more robust way to implement selection would be to have a preview of the selection somewhere which would be less prone to the kind of performance issues that are encountered here (since we only need to iterate over this.selection). Then there is no need to display a selected toggle on each gallery card... until the size of the selection becomes too large to inspect what is included... Probably both solutions should coexist but somehow the complexity of render should only depend on what can be shown on the screen, it should not depend on things outside of the viewport (I believe the default browser tab memory limit is proportional to the number of viewport pixels). See also below.
PhotoPrism intentionally doesn't know the exact number of results:
numberOfphotosBeforeDisplayedPhotos and numberOfphotosBeforeDisplayedPhotos do not have to be database row counts, really anything that reflects how much stuff has been loaded in the UI. Since each item has known dimensions, a placeholder can be rendered instead of a card that would depend on the selection state. Of course this placeholder could be identical to a normal, but ignoring the selection state. I am just describing some sort of "infinite scrolling" as defined in https://github.com/photoprism/photoprism/issues/500#issue-704103396. A first implementation would just keep all metadata in cache but evict thumbnails of things that are far away from the currently displayed stuff, if thumbnails take up most of the memory.
comment created time in 4 days
issue commentphotoprism/photoprism
I did a quick performance recording on the default gallery view (mosaic I guess) after scrolling down a bit. I observe a lot of GC trashing. Vue probably has no way to understand what is going on inside Clipboard ($clipboard is not a prop). Once selection is updated, the entire list has to be recomputed (because render depends on $clipboard.has(...) calls). Replacing this.selection by a Set as suggested here won't solve the issue unless Vue is able to do some clever set diffing...
Something that may have a better chance of working could be having some sort of internal selected state for each card, decoupling the global Clipboard from that state, so that the list does not depend on a selection prop. Of course now it is ugly because the selection state is spread all over. If you do not want to decouple, I think one should precompute $clipboard.has(photo) for each card and have a component for individual cards so that Vue can more quickly tell which cards need to be rerendered. It would still imply recomputing something for each item, but maybe much faster so that it would no become a problem unless you load a really large collection.
Additionally, having a scrolling "pagination" would help: with a state looking like numberOfphotosBeforeDisplayedPhotos, displayedPhotos, numberOfphotosAfterDisplayedPhotos, a component to display empty space for before and after that only depends on the number of items to be faked, and a component for displaying displayedPhotos, I am sure this exists already somewhere?
Any other idea?
comment created time in 4 days