16 апреля 2019 г.

4 апреля 2019 г.

cakephp 3 multiple levels deep prefix

Router::prefix('api', function ($routes) {
    $routes->prefix('users', function ($routes) {
        $routes->fallbacks(DashedRoute::class);
    });
});

namespace App\Controller\Api\Users;

use App\Controller\AppController;
use Cake\Event\Event;
use Cake\ORM\TableRegistry;

class UsersController extends AppController
{

    public function index()
    {
        // ...
    }

}

1 февраля 2019 г.

dompdf setPaper size orientation not working

According to the Usage page, in order to set the paper size and orientation you need to call setPaper(). However, this won't work if in your actual HTML you're rendering you have page size definition such as this:
    @page {
        margin: 0;
        padding: 0;
        size: 210mm 297mm;
    }
    html {
        margin: 0;
        padding: 0;
    }
    body {
        margin: 0;
        padding: 0;
    }
This will override whatever you set with setPaper(). Either remove it, or edit it.

24 декабря 2018 г.

Setting Apple Photos exported file created and modified times to match capture date using EXIFTool on Mac OS

I exported a few originals from the Mac Photos app. The resulting photos had Date Modified and Date Created set to the time of export. However, the EXIF capture time contained the actual capture time. Need to set file creation and modification times to match the capture time using the EXIF Tool.
exiftool "-DateTimeOriginal>FileModifyDate" /Users/admin/PhotosTest
Few things were confusing to me initially as those don't seem to be clarified in the documentation.
  • DateTimeOriginal actually stands for the capture date
  • FileModifyDate represents not only the Date Modified (file modification time), but also the Date Created (file creation time), though won't change the Date Added time. I'm referring to the Finder column names here.
  • Be careful with AllDates shortcut which you may notice in the docs, as it will alter the original capture date as well, and you'll lose it if you don't have the backup.
P.S. This works both ways: you can swap the parameters to set the EXIF capture date to match the file modification date.
exiftool "-FileModifyDate>DateTimeOriginal" /Users/admin/PhotosTest
Reference

14 декабря 2018 г.

raspberry pi openbox screen resolution

Sometimes a monitor won't report it's largest available screen resolution correctly. In such a case, you'll have to set it manually. My first hit on Google suggested some xrandr trickery which didn't work for me. Here's what did.
sudo raspi-config
Go to Advanced Options -> Resolution and choose yours. Both DMT and CEA modes worked on multiple devices, just make sure you got the right screen ratio and refresh rate.

29 августа 2018 г.

ssh tunnel systemctl systemd service

sudo vi /lib/systemd/system/mytunnel@.service:
[Unit]
Description=My Tunnel Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=username
ExecStart=/usr/bin/autossh -f -N %i
 
[Install]
WantedBy=multi-user.target
/home/username/.ssh/config:
Host myhost
Hostname my-ssh-host.example.com
User username
RemoteForward 0.0.0.0:22022 localhost:22
IdentityFile /home/username/.ssh/id_rsa
ServerAliveInterval 30
ServerAliveCountMax 32
# warning: MITM
UserKnownHostsFile=/dev/null
StrictHostKeyChecking no
Replace username with actual user name. Usage: sudo systemctl start mytunnel@myhost sources: