profile
viewpoint
Aurélien Ooms aureooms Datalogisk Institut - Københavns Universitet København, Danmark https://aurelienooms.be Data structures. Algorithms.

aureooms/dotfiles 19

:wrench: ~/. dotfiles for Arch Linux

aureooms/awesome-qr-code 3

A curated list of awesome QR code libraries, software and resources

aureooms/geez 2

:octopus: Quickly apply git commands to all your repos

aureooms/.klavaro 0

klavaro stat files

aureooms/404 0

:sauropod: Missing technology

aureooms/arch-gifify 0

:package: AUR package for gifify

aureooms/arch-gitdns 0

:package: AUR package for gitdns

aureooms/arch-gitkv 0

:package: AUR package for gitkv

aureooms/arch-memoize 0

: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

Aurélien Ooms

commit sha 4dbe7a59c1b285366facecd9ac954d6aaf26ea4c

Add peertube.

view details

push time in 4 hours

startedthchang/DelaunayFan

started time in 5 hours

push eventaureooms/aureooms

Aurélien Ooms

commit sha 8d752e1eebc83a2f1e06b0ee63eaea519432525f

Remove comments.

view details

Aurélien Ooms

commit sha 132f29e1624d8fdc90cdf5b424e99a0c043e6cec

Add cool stuff.

view details

push time in 10 hours

startedsdassow/awesome-veganism

started time in 12 hours

issue commentaureooms/ovh-dns

AAAA fields (ipv6)

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.

Etuldan

comment created time in a day

issue commentaureooms/ovh-dns

AAAA fields (ipv6)

Hi! What have you tried and what is the error?

Etuldan

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

Aurélien Ooms

commit sha 7c1e3c90b4b9bdc85f855316dc3a03011b334bb8

:books: docs(README): Fix header image attribution.

view details

push time in a day

startedheadcrab-rs/headcrab

started time in a day

issue commentphotoprism/photoprism

Lag when selecting pictures

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?

wiwie

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

Aurélien Ooms

commit sha 9bf03f848658359103f099f21cf24d895623334a

:art: style(menu.pdf.arxiv): Run shellcheck.

view details

push time in 2 days

push eventaureooms/geez

Aurélien Ooms

commit sha e15c267de89fab489ea78e3f8489102e4ae38599

:books: docs(README): Fix license badge.

view details

push time in 2 days

push eventaureooms/geez

Aurélien Ooms

commit sha fc3061251a73862757243b123d6fd9dddf67cdda

:books: docs(README): Add emojis and badges.

view details

push time in 2 days

push eventaureooms/js-library

Aurélien Ooms

commit sha d26a7292effc97dbdce917d24244b4cd0a3d5932

:books: docs(README): Properly link and attribute header image.

view details

push time in 2 days

push eventaureooms/dotfiles

Aurélien Ooms

commit sha 2016f00f90628fde3dd65c956782476c39c0b916

:books: docs(README): Multiple improvements. - Clean up style. - Split hardware stuff and add thermald. - Add Chris Down's dotfiles link.

view details

push time in 2 days

push eventaureooms/js-sat

Aurélien Ooms

commit sha b4b231943b2b581ee68d447ed23c1458b098e818

:books: docs(README): Add emoji heading and section logos.

view details

Aurélien Ooms

commit sha 782fd81c87b8b443877d3907ded8c8a6a56a9b31

:books: docs(README): Properly link and attribute header image.

view details

push time in 2 days

push eventaureooms/eightfold

Aurélien Ooms

commit sha 5097ea0ff30c64b0214f4b3596dc376ff397b0b5

:bug: fix: Properly link and attribute header image.

view details

push time in 2 days

push eventaureooms/texshake

Aurélien Ooms

commit sha 768a12f13fa22798073c228e9e64f0c21a3962cf

:books: docs(README): Properly link and attribute header image.

view details

push time in 2 days

push eventaureooms/js-data-structures

Aurélien Ooms

commit sha 5f22eae2e6c03dbcaa7dc7ccca87f66ac19551b9

:books: docs(README): Properly attribute header image.

view details

push time in 2 days

push eventaureooms/js-algorithms

Aurélien Ooms

commit sha 4bce9084fceba9ca984e52fc2cea26290e3ac9fd

:books: docs(README): Add GitHub issues badge.

view details

Aurélien Ooms

commit sha f784cc380043802c09dbd6197ca57959a0b8131c

:books: docs(README): Properly link and attribute header image.

view details

push time in 2 days

push eventaureooms/js-itertools

Aurélien Ooms

commit sha 550acb1938e8d6603e9233aa97dd642d360837b9

:books: docs(README): Fix attribution and linking of header image.

view details

push time in 2 days

push eventaureooms/dotfiles

Aurélien Ooms

commit sha 63f5213c8b50577470dc4a27a6ed7a9ef86a0341

:books: docs(README): Add some explain xkcd links in credits.

view details

push time in 2 days

startedTeamMeow/vscode-math-to-image

started time in 2 days

push eventaureooms/dotfiles

Aurélien Ooms

commit sha d85eb9f9a86235f4b9483138d7cdf7ef53e4bf8f

:books: docs(README): Improve header image. Attribute and link. Reduce size and center.

view details

push time in 2 days

push eventaureooms/dotfiles

Aurélien Ooms

commit sha 5a38eaf335cd6d169a8eaa4b42639be00c69629e

:bug: fix(menu.pdf.arxiv): Escape filenames.

view details

push time in 2 days

startedgbv/image-attribution

started time in 2 days

push eventaureooms/dotfiles

Aurélien Ooms

commit sha 12bb1d60fcf0a1e5772490ebda6c30fdbd2fd93b

:sparkles: feat(i3): Add menu to load arXiv bibtex in clipboard.

view details

Aurélien Ooms

commit sha 33093ec54065113eb30ca015320bc25d695e9b9b

:sparkles: feat(i3): Add menu to open local arXiv papers.

view details

push time in 2 days

CommitCommentEvent

issue commentphotoprism/photoprism

Lag when selecting pictures

Maybe the items didn't react anymore when the backend sent updated metadata.

Is there a regression test for this?

wiwie

comment created time in 2 days

push eventaureooms/aureooms

Aurélien Ooms

commit sha 655a4d72ce9bdf78b0b540c22389058504ef8e16

Update README.md

view details

push time in 2 days

push eventaureooms/stopdown

Aurélien Ooms

commit sha 592e6f95abe728bbc66329be345126425b7a9111

Update README.md

view details

push time in 2 days

push eventaureooms/stopdown

Aurélien Ooms

commit sha ff52c2c763bad4de2525706c5d47e1eeee807c41

Update README.md

view details

push time in 2 days

push eventaureooms/stopdown

Aurélien Ooms

commit sha ec8f6e160053fa43a84f23987efce8a1614c41fa

Update README.md

view details

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.

aureooms

comment created time in 2 days

PullRequestReviewEvent

issue commentphotoprism/photoprism

Lag when selecting pictures

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:

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.

wiwie

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.

aureooms

comment created time in 2 days

PullRequestReviewEvent

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.

aureooms

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.

aureooms

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?

aureooms

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?

aureooms

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?

aureooms

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.

aureooms

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())".

aureooms

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.

aureooms

comment created time in 3 days

PullRequestReviewEvent
PullRequestReviewEvent

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?

aureooms

comment created time in 3 days

PullRequestReviewEvent

issue commentphotoprism/photoprism

Lag when selecting pictures

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.

wiwie

comment created time in 3 days

issue commentphotoprism/photoprism

Lag when selecting pictures

I have a proof of concept that fixes the issue for component/photo/mosaic.vue. Should I start a PR draft?

wiwie

comment created time in 3 days

issue commentphotoprism/photoprism

Lag when selecting pictures

Certainly the selection.length check before each $clipboard.has(...) should trigger a render when going from 0 to 1

I see, if I remove all mentions of selection.length then the view does not get updated :).

wiwie

comment created time in 3 days

startedvuejs/vue-devtools

started time in 3 days

push eventaureooms-contrib/photoprism

Andy Yang

commit sha 5f5392b0e43751c8363a0829f98e1ecd287e2b15

update chinese translations #514

view details

Theresa Gresch

commit sha b57136394b5e5751064dd3e8cedf98e7825b4848

Merge pull request #569 from yzwdroid/chineseTrans update chinese translations #514

view details

Theresa Gresch

commit sha 67287a2d5770f805556ac081773a706cba178074

Backend: Add testdata

view details

push time in 3 days

issue commentphotoprism/photoprism

Lag when selecting pictures

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?

wiwie

comment created time in 3 days

issue commentphotoprism/photoprism

Lag when selecting pictures

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?

wiwie

comment created time in 3 days

startedcaddyserver/caddy

started time in 3 days

issue openedaureooms/js-equation

js-inequalities

created 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

create barnchaureooms/js-search-tree-spec

branch : gh-pages

created branch time in 3 days

push eventaureooms/js-search-tree-spec

Aurélien Ooms

commit sha fbde291f44328e21cc73ee93a9bf08ded7a5de17

:sparkles: feat(DummySearchTree): Progress on spec.

view details

push time in 3 days

issue openedaureooms/js-bst

hasBinarySearchProperty

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

Aurélien Ooms

commit sha 00c2acf4dbf3ecbee26f67bbbccfc16dea0e4038

Update links to output files.

view details

push time in 4 days

issue openedaureooms/js-search-tree-spec

Design specification

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

Aurélien Ooms

commit sha c7f3fdd5670a09aa9f1b9de30c921dcf63085cdf

:books: docs: Clean up.

view details

push time in 4 days

push eventaureooms/js-search-tree-spec

Aurélien Ooms

commit sha a7bb5b106c45a62980e28616d22b4655015b0681

:boom: BREAKING CHANGE: First draft for spec. Get rid of all useless code, refactor, lint...

view details

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

aureooms

comment created time in 4 days

create barnchaureooms/js-search-tree-spec

branch : main

created branch time in 4 days

created repositoryaureooms/js-search-tree-spec

Search tree specification for JavaScript

created time in 4 days

push eventaureooms/js-bst

Aurélien Ooms

commit sha 79796388cf4c7d78a92fc44edccf923d50563c38

:boom: BREAKING CHANGE: Remove AVL tree related code.

view details

push time in 4 days

push eventaureooms/js-in-situ-sort-spec

Aurélien Ooms

commit sha 77ef64a8ace013f8181871e61ac3e3ae5228f297

:books: docs(README): Add emoji logo.

view details

Aurélien Ooms

commit sha 1e6e96e9f781dfdd1860d304f4b56ac5ba0a30cf

:books: docs(README): Add tldr snippet.

view details

push time in 4 days

push eventaureooms/js-heap-spec

Aurélien Ooms

commit sha ab401cb5cdf590082babb502407d286809f5b657

:books: docs(README): Improve tldr snippet.

view details

push time in 4 days

push eventaureooms/js-heap-spec

Aurélien Ooms

commit sha 98f6590102d2d1ee55de384b41aaa4f72dfd8f6b

:books: docs(README): Update.

view details

push time in 4 days

push eventaureooms/js-cll

Aurélien Ooms

commit sha 132ca2d379f6724547d1171cadbb20a229e41fd0

:unamused: chore(package.json): Run fixpack.

view details

Aurélien Ooms

commit sha fd8028918a126fdcc9f44598b89e47311d124451

:unamused: chore(deps): Update lock file.

view details

push time in 4 days

push eventaureooms/js-heap-spec

Aurélien Ooms

commit sha 6b42ac488bc44b623e5a1122748aa14d0955a9f1

:unamused: chore(deps-dev): Upgrade tool set.

view details

Aurélien Ooms

commit sha acd438581c87a00faee1dabe7beca2290854bfb0

:books: docs(README): Fix links.

view details

Aurélien Ooms

commit sha bf477f94497945fff0e647b869196ad5d4019f91

:books: docs(README): Upgrade badges.

view details

Aurélien Ooms

commit sha 4f1d7a540750d11badbdaae08b7fc95eccd1cd0d

:unamused: chore: Upgrade git ignore config.

view details

Aurélien Ooms

commit sha 489cb8e3c2ba8976602ccde9db71af9e5f5c4267

:books: docs: Upgrade.

view details

Aurélien Ooms

commit sha e201a726c0c5e33410fd236a59c45ac0a5b8899b

:unamused: chore(deps-dev): Configure babel.

view details

Aurélien Ooms

commit sha b66117976f5d83d0ba001f7706c16d573a528d13

:unamused: chore(deps-dev): Replace @babel/polyfill by regenerator-runtime/runtime.

view details

Aurélien Ooms

commit sha 63da9274cf143a811687345287437f9ac2b159ab

:mag: test: Upgrade ava.

view details

Aurélien Ooms

commit sha 6eea33a8b8d6c050cfe3ffcbf73b08c908da4dd6

:hammer: build: Upgrade build script.

view details

Aurélien Ooms

commit sha bcdbec295a6667845ac617627315f4d2dbe35512

:unamused: chore: Add dev script.

view details

Aurélien Ooms

commit sha 56721e37841118a0a97bb874f506d7d4e7a46d62

:unamused: chore: Add travis script.

view details

Aurélien Ooms

commit sha 50d7a09a5b6d56fa51fff25670fe51a30191d59b

:unamused: chore(package.json): Mark side-effects free.

view details

Aurélien Ooms

commit sha 4e0fec3462489cbbd7ecce70baf3d8eb4ac4945f

:gear: ci: Upgrade renovate config.

view details

Aurélien Ooms

commit sha e582c7347a97fe5ac70860ee4795b4a379a3f73e

:gear: ci: Upgrade travis config.

view details

Aurélien Ooms

commit sha f2bab75ed2c5b07f21f8ad61859c4efdc9e4a52a

:art: style(package.json): Run fixpack.

view details

Aurélien Ooms

commit sha 0cdd610b8d86157cbab4e3fd06c49ad972a7ef34

:unamused: chore: Lock dependencies.

view details

push time in 4 days

push eventaureooms/js-heap-spec

Aurélien Ooms

commit sha 2b8d4b50ed79c78a826ebfbe4827375d69e71ff0

:unamused: chore(deps): Upgrade.

view details

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

Implement

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

Aurélien Ooms

commit sha 9f90895656e9b4865b2e586fbcd07ff8dbc2acb8

:books: docs(README): Link header image to source.

view details

push time in 4 days

issue commentphotoprism/photoprism

Lag when selecting pictures

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.

wiwie

comment created time in 4 days

issue commentphotoprism/photoprism

Lag when selecting pictures

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?

wiwie

comment created time in 4 days

CommitCommentEvent
CommitCommentEvent
more