Update
RPi4 now supports booting directly from USB. First update to get an eeprom which supports USB Boot, then configure the bootloader to boot from USB.
Original guide
- Download Raspbian from the official site
# CLI | |
sudo apt update -y | |
sudo apt install -y \ | |
git curl \ | |
docker.io docker-buildx \ | |
build-essential pkg-config autoconf bison rustc cargo clang \ | |
libssl-dev libreadline-dev zlib1g-dev libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev libjemalloc2 \ | |
libvips imagemagick libmagickwand-dev mupdf mupdf-tools \ | |
redis-tools sqlite3 libsqlite3-0 libmysqlclient-dev \ | |
rbenv apache2-utils |
/* | |
ERB template chunk from The Feed's display of emails: | |
<section class="postings postings--feed-style" id="postings" | |
data-controller="pagination" data-pagination-root-margin-value="40px"> | |
<%= render partial: "postings/snippet", collection: @page.records, as: :posting, cached: true %> | |
<%= link_to(spinner_tag, url_for(page: @page.next_param), | |
class: "pagination-link", data: { pagination_target: "nextPageLink", preload: @page.first? }) unless @page.last? %> | |
</section> |
export function reduceToParams(elements) { | |
return elements.reduce((hash, node) => Object.assign(hash, { [node.name]: node.value }), {}) | |
} | |
export function stopEverything(e) { | |
e.preventDefault() | |
e.stopPropagation() | |
e.stopImmediatePropagation() | |
} |
// DISCLAIMER : You can now probably use `data-turbo-action="advance"` on your frame to perform what this controller is aiming to do | |
// https://turbo.hotwired.dev/handbook/frames#promoting-a-frame-navigation-to-a-page-visit | |
// Note that you probably want to disable turbo cache as well for those page to make popstate work properly | |
import { navigator } from '@hotwired/turbo' | |
import { Controller } from '@hotwired/stimulus' | |
import { useMutation } from 'stimulus-use' | |
export default class extends Controller { | |
connect (): void { |
<?php // @codingStandardsIgnoreFile | |
namespace Helper; | |
use Exception; | |
// Select2 helpers for Codeception | |
// See: https://select2.org | |
// | |
// Works with Select2 version 4.0 or greater | |
// Which is a jQuery based replacement for select boxes. |
/** | |
* Fetch the body of an iFrame. | |
*/ | |
Cypress.Commands.add('getIframe', () => { | |
return cy | |
.get('iframe') | |
.its('0.contentDocument.body', { log: false }) | |
.should('not.be.empty') | |
.then((body) => { | |
cy.wrap(body, { log: false }); |
Update
RPi4 now supports booting directly from USB. First update to get an eeprom which supports USB Boot, then configure the bootloader to boot from USB.
Original guide
secret
byte you want to read is stored at inaccessible memory location priv_mem
.priv_mem
.secret
from priv_mem
and the use of its value in (4) and (5) below may execute before the exception is triggered.offset
into a known array probe
by multiplying secret
by the width of a cache line (or whatever block size the CPU typically fetches, like a 4096-byte page). This guarantees each of those 256 possible offsets will cache separately.probe[offset]
, which causes the CPU to cache exactly one chunk of of our array, populating one cache line.probe
to find out which one loads fast. You've determined the value of secret
.// Add on element with overflow | |
-webkit-mask-image: -webkit-radial-gradient(white, black); |