1. 7. 2021

July 2021

RollingSquare

PHP

  • Fork - A lightweight solution for running code concurrently in PHP

JS

Tools

#notices

10. 5. 2021

Join multiple GoPro MP4 files to single one

GoPro 'chapters' are footage around 4 GB - The camera starts a new file every ~ 10 minutes. If you have media files with exactly the same codec and codec parameters you can concatenate them quite easily. Fastest way, that I found, is use ffmpeg with concating function, but there is one unnecessary step with mylist.txt, the list of all files, you want to have concatenated.

for f in *.MP4; do echo "file '$PWD/$f'"; done > mylist.txt

If your shell supports process substitution (like Bash and Zsh), you can avoid explicitly creating a list file and do the whole thing in a single line:

ffmpeg -f concat -safe 0 -i <(for f in *.MP4; do echo "file '$PWD/$f'"; done) -c copy output.mp4

Here is also nice bash function, that can be put to your .bash_profile:

function video-concat() {
  ffmpeg -f concat -safe 0 -i <(for f in ${@:1:${#}-1}; do echo "file '$PWD/$f'"; done) -c copy $_
}

Then you can call video-concat function as follow:

video-concat *.MP4 output.mp3

#bash #ffmpeg #gopro

9. 4. 2021

Display HTML with embed tag

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title></title>
</head>
<body>  
  <embed type="text/html" id="response" scrolling="no" style="height: 640px; width:100%;">
</body>
</html>
(async function() {
  const embedResponse = document.getElementById('response');
    try {
      // clean content first     
      embedResponse.setAttribute('src', 'data:text/html;charset=utf-8,');
      const response = await fetch('/api/response',
        {
          method: 'post',
          // accept HTML response
          headers: {
            'Accept': 'application/json, text/plain, */*',
            'Content-Type': 'application/json'
          },
          // sent data if needed
          body: JSON.stringify({data: ''})
        });

      // encode HTML response
      const html = await response.text();
      embedResponse.setAttribute('src', 'data:text/html;charset=utf-8,' + encodeURIComponent(html));

    } catch (e) {
      // catch errors and show them
      embedResponse.setAttribute('src', 'data:text/html;charset=utf-8,' + encodeURIComponent(e));
      console.error(e);
    }
 })();

There is another option, you can display HTML in new window as blob data:

const content = URL.createObjectURL(new Blob([response.data + overlay || ''], {type: "text/html"}));
window.open(content, "response", `width=640, height=480`).focus();

#js #webdesign

1. 4. 2021

April 2021

Tools

  • exa - a modern replacement for ls.
  • RDM - RDM - redis GUI

#notices

1. 3. 2021

March 2021

Libs

Tools

  • Removal.AI - AI-powered background removal
  • Starship - The minimal, blazing-fast, and infinitely customizable prompt for any shell!
  • bundless - Next gen dev server and bundler
  • microsite - is a fast, opinionated static-site generator built on top of Snowpack.

#notices

1. 2. 2021

February 2021

Tools

  • Vite - Next Generation Frontend Tooling
  • Mak - Markdown notice app

#notices

1. 1. 2021

January 2021

Tools & services

Image hosting

Gears

  • Keychron K3 - World's First Hot-Swappable Low Profile Optical Wireless Mechanical Keyboard
  • A2+ Speakers - A2+ premium powered speakers with high-fidelity stereo sound
  • Gibbon AIR - active monitor system with Bluetooth
  • Neumann NDH-20 - premium quality studio headphones
  • Lagoon anc traveller - Wireless headphones with ANC from BeyerDynamic
  • Sony WH-1000XM4 - Wireless Noise-Canceling Headphones form Sony
  • Raspberry Pi Pico - Raspberry Pi Pico is a tiny, fast, and versatile board built using RP2040, a brand new microcontroller chip designed by Raspberry Pi

Comments

  • Guestbook - GitHub issue based Guestbook
  • Utteranc - A lightweight comments widget built on GitHub issues.
  • Octomments - Using GitHub issues as a comment plugin.
  • Commento - Embed comments without giving up your privacy.
  • Fast Comments - A comment service that will delight your users and developers.

Earl Grey

Webdesign

  • Primer - Design, build, and create with GitHub’s design system

#notices

10. 12. 2020

PHP code speed comparison

function versus(callable $first, callable $second, $repeat = 100000) {
    
    $f = microtime(true);
    foreach (range(0, $repeat) as $r) call_user_func($first);
    $firstTimer = microtime(true) - $f;
    
    $s = microtime(true);
    foreach (range(0, $repeat) as $r) call_user_func($second);
    $secondTimer = microtime(true) - $s;

    printf(
        '%s function is %.2f%% faster (%f vs %f)',
        $firstTimer < $secondTimer ? 'First' : 'Second',
        abs((($firstTimer - $secondTimer) / $firstTimer) * 100),
        $firstTimer, $secondTimer
    );
}

Example

versus(
    function () {
        $str = '!loremipsum';
        return substr($str, 0, 1) === '!';
    },
    function () {
        $str = '!loremipsum';
        return $str[0] === '!';
    }
);

Will print:

Second function is 36.72% faster (0.142766 vs 0.090349)

#PHP #Snippets