🚚 The bookmarklet has moved to https://github.com/bramus/mastodon-profile-redirect/
Print the last 10 lines of each FILE to standard output. | |
With more than one FILE, precede each with a header giving the file name. | |
Mandatory arguments to long options are mandatory for short options too. | |
-c, --bytes=[+]NUM output the last NUM bytes; or use -c +NUM to | |
output starting with byte NUM of each file | |
-f, --follow[={name|descriptor}] | |
output appended data as the file grows; | |
an absent option argument means 'descriptor' | |
-F same as --follow=name --retry |
#!/bin/sh | |
if [ $# -lt 1 ] | |
then | |
echo “man2pdf [man page name]” | |
exit | |
fi | |
tempfoo=`basename $0` | |
TMPPDFFILE=`mktemp /tmp/${tempfoo}.XXXXXX` || exit 1 |
If you're self-hosting your services and having trouble getting your emails through Gmail and infuriated by Google's non-existent support, you're not the only one. I'd like to share my experiences trying to get it sorted out.
I'm the author of the post above. You can tell how arrogant Google employees are from all the previous posts he made in the past.
function getLastResource(time, regex) { | |
let entries = performance.getEntriesByType('resource') | |
let last = null; | |
for(let i = 0; i < entries.length; i++) { | |
let e = entries[i]; | |
if(regex && !e.name.match(regex)) continue; | |
if(e.responseEnd < time) last = e; | |
} | |
return last; | |
} |
Mute these words in your settings here: https://twitter.com/settings/muted_keywords | |
ActivityTweet | |
generic_activity_highlights | |
generic_activity_momentsbreaking | |
RankedOrganicTweet | |
suggest_activity | |
suggest_activity_feed | |
suggest_activity_highlights | |
suggest_activity_tweet |
#!/usr/bin/env sh | |
# Feed script a url or file location. | |
# If an image, it will view in the default image view (probably Preview), | |
# if a video or music file, it will view in mpv | |
# otherwise it opens link in browser. | |
# If no url given. Opens browser. For using script as $BROWSER. | |
[ -z "$1" ] && { "$BROWSER"; exit; } |
# install chromium, its driver, and selenium | |
!apt update | |
!apt install libu2f-udev libvulkan1 | |
!wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb | |
!dpkg -i google-chrome-stable_current_amd64.deb | |
!wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5993.70/linux64/chromedriver-linux64.zip | |
!unzip -j chromedriver-linux64.zip chromedriver-linux64/chromedriver -d /usr/local/bin/ | |
!pip install selenium chromedriver_autoinstaller | |
# set options to be headless, .. |
With the addition of ES modules, there's now no fewer than 24 ways to load your JS code: (inline|not inline) x (defer|no defer) x (async|no async) x (type=text/javascript | type=module | nomodule) -- and each of them is subtly different.
This document is a comparison of various ways the <script>
tags in HTML are processed depending on the attributes set.
If you ever wondered when to use inline <script async type="module">
and when <script nomodule defer src="...">
, you're in the good place!
Note that this article is about <script>
s inserted in the HTML; the behavior of <script>
s inserted at runtime is slightly different - see Deep dive into the murky waters of script loading by Jake Archibald (2013)
The Google Cloud Shell gives you a handy and quick Shell access to your Cloud instance. One thing you may not know is that you can use the Cloud Shell to clone and edit a Github project. Let's see how.
The trick here is to just call the following URL: https://console.cloud.google.com/cloudshell/open
with the following parameters:
git_repo
: this is the URL to your github repositoryopen_in_editor
: this would be the file you want to open in the editorpage=editor
: this tells the cloud shell to open the code editor