Skip to content

Commit 4e94a12

Browse files
committed
removed old cache busting ?v= query parameters
1 parent 17cda1f commit 4e94a12

235 files changed

Lines changed: 4230 additions & 4229 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

epubs/SwiftUI.epub

6.71 MB
Binary file not shown.

epubs/swift-lang.epub

196 KB
Binary file not shown.

src/content/topics/PDFs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ This page contains a collection of tips related to PDF files.
1111
## Extracting Images
1212

1313
One way to extract images from a PDF file is to use the browser-based tool
14-
[PDFCandy](<https://pdfcandy.com?v=1.1.1>).
14+
[PDFCandy](https://pdfcandy.com).
1515
The free tier has a limit of one download per hour.
1616

1717
To use this:
1818

19-
1. Browse [PDFCandy](<https://pdfcandy.com?v=1.1.1>).
19+
1. Browse [PDFCandy](https://pdfcandy.com).
2020
1. Click the "PDF to JPG" button.
2121
1. Click the "+ ADD FILE" button.
2222
1. In the dialog that appears, select a PDF file and click the "OK" button.

src/content/topics/alfred.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ layout: topic-layout.njk
66

77
## Overview
88

9-
[Alfred](https://www.alfredapp.com?v=1.1.1) is a macOS app
9+
[Alfred](https://www.alfredapp.com) is a macOS app
1010
that provides a more powerful replacement for the built-in Spotlight app.
1111

1212
This is a free app, however many features are
@@ -116,7 +116,7 @@ The supported functions are:
116116
- sinh, cosh, tanh
117117
- asinh, acosh, atanh
118118
- log, log2, ln, exp
119-
- near (?)
119+
- near ()
120120

121121
## Clipboard History - PowerPack-only
122122

@@ -223,7 +223,7 @@ by simply typing the affix character(s) followed by the keyword.
223223
For example, I created a snippet named "full name" with the keyword "rmv".
224224
Typing "!rmv" expands to "R. Mark Volkmann".
225225

226-
Snippet text can include the following [dynamic placeholders](https://www.alfredapp.com/help/workflows/advanced/placeholders/?v=1.1.1):
226+
Snippet text can include the following [dynamic placeholders](https://www.alfredapp.com/help/workflows/advanced/placeholders/):
227227

228228
- `{clipboard}`
229229
- `{cursor}` - moves the cursor to this spot after expanding
@@ -264,11 +264,11 @@ If the Terminal app is not running, it will be launched.
264264
If it is already running, the command will run in the active Terminal window.
265265

266266
To use iTerm instead of the Terminal app in the "Open Terminal Here" action,
267-
see [custom-alfred-iterm-scripts](https://github.com/vitorgalvao/custom-alfred-iterm-scripts#copy-the-script?v=1.1.1).
267+
see [custom-alfred-iterm-scripts](https://github.com/vitorgalvao/custom-alfred-iterm-scripts#copy-the-script).
268268

269269
## Timezones
270270

271-
The [TimeZones-Alfred](https://github.com/jaroslawhartman/TimeZones-Alfred?v=1.1.1) workflow enables
271+
The [TimeZones-Alfred](https://github.com/jaroslawhartman/TimeZones-Alfred) workflow enables
272272
quickly finding information about another location including
273273
current time, day of week, date, telephone prefix, timezone, and UTC offset.
274274

@@ -375,12 +375,12 @@ AppleScript, bash, JavaScript, Perl, php, Python, Ruby, and zsh.
375375
You can write your own or use workflows implemented by others.
376376

377377
Two sources of free Alfred workflows are
378-
[Packal](http://www.packal.org?v=1.1.1) and
379-
[Alfred Workflows](https://www.alfredapp.com/workflows/?v=1.1.1).
378+
[Packal](http://www.packal.org) and
379+
[Alfred Workflows](https://www.alfredapp.com/workflows/).
380380

381381
Some recommended workflows include:
382382

383-
- [Emoji Taco](http://www.packal.org/workflow/emoji-taco?v=1.1.1)
383+
- [Emoji Taco](http://www.packal.org/workflow/emoji-taco)
384384

385385
After installing, enter "`init emoji`" to complete installation.
386386
Progress will be displayed.
@@ -390,16 +390,16 @@ Some recommended workflows include:
390390
This is alternative to pressing the globe (fn) key to open the emoji picker
391391
... which seems better than using this workflow.
392392

393-
- [GitHub](http://www.packal.org/workflow/github?v=1.1.1)
393+
- [GitHub](http://www.packal.org/workflow/github)
394394

395395
This searches GitHub repositories, their files, issues, and more.
396-
I couldn't get this to work. See this [issue](https://github.com/gharlan/alfred-github-workflow/issues/132?v=1.1.1).
396+
I couldn't get this to work. See this [issue](https://github.com/gharlan/alfred-github-workflow/issues/132).
397397

398-
- [Kill](http://www.packal.org/workflow/kill-process?v=1.1.1)
398+
- [Kill](http://www.packal.org/workflow/kill-process)
399399

400400
This kills the process with a specified name.
401401

402-
- [TimeZones](http://www.packal.org/workflow/timezones?v=1.1.1)
402+
- [TimeZones](http://www.packal.org/workflow/timezones)
403403

404404
This enables quickly finding information about a location including
405405
current time, day of week, date, telephone prefix, tiomezone, and UTC offset.
@@ -411,7 +411,7 @@ Some recommended workflows include:
411411
In the end we want to create the workflow diagram shown below.
412412

413413
<img alt="Alfred custom workflow" style="width: 60%"
414-
src="/blog/assets/alfred-custom-workflow.png?v=1.1.1"
414+
src="/blog/assets/alfred-custom-workflow.png"
415415
title="Alfred custom workflow">
416416

417417
The steps to create this workflow are:

src/content/topics/alpine.md

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ layout: topic-layout.njk
1212

1313
<figure style="width: 50%">
1414
<img alt="Alpine logo" style="border: 0"
15-
src="/blog/assets/alpine-logo.png?v=1.1.1">
15+
src="/blog/assets/alpine-logo.png">
1616
</figure>
1717

1818
## Overview
1919

20-
"[Alpine](<https://alpinejs.dev?v=1.1.1>)
20+
"[Alpine](https://alpinejs.dev)
2121
is a lightweight JavaScript framework that
2222
uses custom HTML attributes to add dynamic behavior.
2323
Alpine is notable for how easy it is to use and
2424
how small it is compared to other web frameworks.
2525

2626
Alpine was created by Caleb Porzio.
27-
He also created [Livewire](<https://laravel-livewire.com?v=1.1.1>),
27+
He also created [Livewire](https://laravel-livewire.com),
2828
a full stack framework for Laravel which uses PHP.
2929
Quoting Caleb, "Alpine.js offers you the reactive and declarative nature
3030
of big frameworks like Vue or React at a much lower cost.
@@ -63,7 +63,7 @@ Many Alpine directives have the same name suffix as a Vue directives.
6363

6464
## Using VS Code
6565

66-
The [Alpine.js IntelliSense](<https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.alpine-js-intellisense&v=1.1.1>) extension from Adrian Wilczyński provides
66+
The [Alpine.js IntelliSense](https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.alpine-js-intellisense) extension from Adrian Wilczyński provides
6767
intellisense and snippets for Alpine directives and magic properties.
6868

6969
The intellisense provides great documentation of
@@ -74,12 +74,12 @@ Useful snippets include `x-for`, `x-for-index`, `x-for-key`, and `x-if`.
7474
Unfortunately this extension has not been updated since November 2020
7575
and some of it is specific to version 2 of Alpine.
7676

77-
A more recent option that supports version 3 of Alpine is [Alpine.js IntelliSense](<https://marketplace.visualstudio.com/items?itemName=pcbowers.alpine-intellisense&v=1.1.1>) from P. Christopher Bowers.
77+
A more recent option that supports version 3 of Alpine is [Alpine.js IntelliSense](https://marketplace.visualstudio.com/items?itemName=pcbowers.alpine-intellisense) from P. Christopher Bowers.
7878
It was last updated in June 2022.
7979

8080
## Using TypeScript
8181

82-
To use TypeScript in an Alpine project, see [Getting started with Alpine.js and TypeScript](<https://dev.to/wtho/get-started-with-alpinejs-and-typescript-4dgf?v=1.1.1>).
82+
To use TypeScript in an Alpine project, see [Getting started with Alpine.js and TypeScript](https://dev.to/wtho/get-started-with-alpinejs-and-typescript-4dgf).
8383

8484
The following steps create a new project that uses Alpine, TypeScript, and Vite.
8585
Vite provides a local HTTP server with hot reload.
@@ -173,7 +173,7 @@ The steps to do this are as follows:
173173
it defaults to looking in the `public` directory,
174174
but it actual defaults to looking in the root directory
175175
and I haven't found a way to change that.
176-
See this [issue](<https://github.com/elysiajs/elysia/issues/352?v=1.1.1>).
176+
See this [issue](https://github.com/elysiajs/elysia/issues/352).
177177

178178
1. Serve the app from any HTTP server.
179179

@@ -230,7 +230,7 @@ before opening a page in a web browser.
230230

231231
On initial page load Alpine crawls the DOM looking for directive attributes and
232232
configures everything that is needed to update the DOM when data changes.
233-
It uses [MutationObservers](<https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver?v=1.1.1>) for this.
233+
It uses [MutationObservers](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) for this.
234234

235235
### x-bind
236236

@@ -335,7 +335,7 @@ Elements can access state properties on any of their ancestor elements.
335335
When the same property name is used at multiple nesting levels,
336336
the value of the nearest one is used.
337337

338-
From [Data-less Alpine](<https://alpinejs.dev/essentials/state#data-less-alpine?v=1.1.1>), "Sometimes you may want to use Alpine functionality,
338+
From [Data-less Alpine](https://alpinejs.dev/essentials/state#data-less-alpine), "Sometimes you may want to use Alpine functionality,
339339
but don't need any reactive data.
340340
In these cases, you can opt out of passing an expression to x-data."
341341
For example: `<div x-data>`.
@@ -945,7 +945,7 @@ For example:
945945

946946
It's a shame that a more terse syntax like `{{expression}}`
947947
instead of `<span x-text="var"></span>` isn't supported.
948-
See the `x-interpolate` directive described at [alpine-plugins](<https://github.com/mvolkmann/alpine-plugins?v=1.1.1>).
948+
See the `x-interpolate` directive described at [alpine-plugins](https://github.com/mvolkmann/alpine-plugins).
949949

950950
### x-transition
951951

@@ -983,7 +983,7 @@ For example:
983983
<h2 x-show="score == 21" x-transition.scale.duration.1000ms>Blackjack!</h2>
984984
```
985985

986-
For more detail, see [x-transition](<https://alpinejs.dev/directives/transition?v=1.1.1>).
986+
For more detail, see [x-transition](https://alpinejs.dev/directives/transition).
987987

988988
## Custom Directives
989989

@@ -1082,14 +1082,14 @@ a custom directive named `x-weather-feel`.
10821082
</html>
10831083
```
10841084

1085-
For more detail, see [Custom Directives](<https://alpinejs.dev/advanced/extending#custom-directives?v=1.1.1>).
1085+
For more detail, see [Custom Directives](https://alpinejs.dev/advanced/extending#custom-directives).
10861086

10871087
## Progress Bar Example
10881088

10891089
The following example combines some of the features we have seen so far.
10901090

10911091
<img alt="Alpine progress bar" style="width: 50%"
1092-
src="/blog/assets/alpine-progress-bar.png?v=1.1.1">
1092+
src="/blog/assets/alpine-progress-bar.png">
10931093

10941094
```html
10951095
<html>
@@ -1145,7 +1145,7 @@ The following example implements a To Do app using only Alpine.
11451145
It persists the data using `localStorage`.
11461146

11471147
<img alt="Alpine todo list" style="width: 50%"
1148-
src="/blog/assets/alpine-todo-list.png?v=1.1.1">
1148+
src="/blog/assets/alpine-todo-list.png">
11491149

11501150
```html
11511151
<html>
@@ -1337,7 +1337,7 @@ the ids "abc-btn-1" and "abc-btn-2":
13371337
```
13381338

13391339
For more detail, including use of the `x-id` directive for grouping ids,
1340-
see [$id](<https://alpinejs.dev/magics/id?v=1.1.1>).
1340+
see [$id](https://alpinejs.dev/magics/id).
13411341

13421342
### $nextTick
13431343

@@ -1457,10 +1457,10 @@ after the first click they do not change a value.
14571457
```
14581458

14591459
The following is another example of using `$watch`.
1460-
It is based on the YouTube video [Learn Alpine.js: Project - Hackernews search](<https://youtu.be/uc6D2yocRsI?si=ZecBbjHha7r0ugus&v=1.1.1>)
1461-
by [Codecourse](<https://www.youtube.com/@codecourse?v=1.1.1>).
1460+
It is based on the YouTube video [Learn Alpine.js: Project - Hackernews search](https://youtu.be/uc6D2yocRsI?si=ZecBbjHha7r0ugus)
1461+
by [Codecourse](https://www.youtube.com/@codecourse).
14621462
This allows users to enter a query which is used to search for matching
1463-
articles on [HackerNews](<https://news.ycombinator.com?v=1.1.1>).
1463+
articles on [HackerNews](https://news.ycombinator.com).
14641464

14651465
```html
14661466
<html>
@@ -1519,7 +1519,7 @@ articles on [HackerNews](<https://news.ycombinator.com?v=1.1.1>).
15191519

15201520
In addition to the provided magic properties,
15211521
custom magic properties can be implemented.
1522-
See [Custom Magics](<https://alpinejs.dev/advanced/extending#custom-magics?v=1.1.1>).
1522+
See [Custom Magics](https://alpinejs.dev/advanced/extending#custom-magics).
15231523

15241524
## Global Functions
15251525

@@ -1531,7 +1531,7 @@ to avoid repetition and allow changes to be made in one place.
15311531

15321532
This is likely rarely needed.
15331533

1534-
For a contrived example, see [Alpine.bind](<https://alpinejs.dev/globals/alpine-bind?v=1.1.1>).
1534+
For a contrived example, see [Alpine.bind](https://alpinejs.dev/globals/alpine-bind).
15351535

15361536
### Alpine.data
15371537

@@ -1549,7 +1549,7 @@ not to query or modify data.
15491549
For example:
15501550

15511551
<img alt="Alpine counter" style="width: 20%"
1552-
src="/blog/assets/alpine-counter.png?v=1.1.1">
1552+
src="/blog/assets/alpine-counter.png">
15531553

15541554
```js
15551555
<html>
@@ -1624,7 +1624,7 @@ The following code demonstrates sharing Alpine data with JavaScript code.
16241624
</html>
16251625
```
16261626

1627-
For more detail, see [Alpine.data](<https://alpinejs.dev/globals/alpine-data?v=1.1.1>).
1627+
For more detail, see [Alpine.data](https://alpinejs.dev/globals/alpine-data).
16281628

16291629
### Alpine.store
16301630

@@ -1663,14 +1663,14 @@ Each plugin used requires a new script tag.
16631663

16641664
### Anchor
16651665

1666-
The [Anchor](<https://alpinejs.dev/plugins/anchor?v=1.1.1>) plugin
1666+
The [Anchor](https://alpinejs.dev/plugins/anchor) plugin
16671667
anchors the position of an element to another using CSS absolute positioning.
16681668

16691669
In most cases this functionality can be achieved with HTML nesting and CSS.
16701670

16711671
### Collapse
16721672

1673-
The [Collapse](<https://alpinejs.dev/plugins/collapse?v=1.1.1>)
1673+
The [Collapse](https://alpinejs.dev/plugins/collapse)
16741674
plugin enables expanding and collapsing elements with smooth animations.
16751675

16761676
For example:
@@ -1701,17 +1701,17 @@ For example:
17011701

17021702
### Focus
17031703

1704-
The [Focus](<https://alpinejs.dev/plugins/focus?v=1.1.1>)
1704+
The [Focus](https://alpinejs.dev/plugins/focus)
17051705
plugin manages focus within a page containing form elements.
17061706

17071707
### Intersect
17081708

1709-
The [Intersect](<https://alpinejs.dev/plugins/intersect?v=1.1.1>)
1709+
The [Intersect](https://alpinejs.dev/plugins/intersect)
17101710
plugin enables reacting to an element entering the browser viewport.
17111711

17121712
### Mask
17131713

1714-
The [Mask](<https://alpinejs.dev/plugins/mask?v=1.1.1>) plugin
1714+
The [Mask](https://alpinejs.dev/plugins/mask) plugin
17151715
formats text inputs in specific ways using a mask whose characters
17161716
indicate the set of characters that can be entered.
17171717
The supported mask characters are `*` for any character,
@@ -1762,14 +1762,14 @@ For entering currency amounts, use the value `$money($input)`.
17621762

17631763
### Morph
17641764

1765-
The [Morph](<https://alpinejs.dev/plugins/morph?v=1.1.1>) plugin
1765+
The [Morph](https://alpinejs.dev/plugins/morph) plugin
17661766
enables moving an element into a provided HTML template.
17671767
It is useful for updating the DOM from HTML received from an API request
17681768
without losing page state.
17691769

17701770
### Persist
17711771

1772-
The [Persist](<https://alpinejs.dev/plugins/persist?v=1.1.1>)
1772+
The [Persist](https://alpinejs.dev/plugins/persist)
17731773
plugin saves state across page loads, including browser refreshes.
17741774
By default the data is saved in `localStorage`.
17751775

@@ -1847,7 +1847,7 @@ For example, we can't define a "ProgressBar" component and then
18471847
render it with HTML like `<ProgressBar value={value} max={100} />`.
18481848

18491849
The Alpine team provides a commercial set of predefined components at
1850-
[Components](<https://alpinejs.dev/components?v=1.1.1>).
1850+
[Components](https://alpinejs.dev/components).
18511851
Each component is implemented as a custom directive
18521852
that can be applied to an HTML element such as a `div`.
18531853
A `script` tag is required to load the code for each component.
@@ -1866,7 +1866,7 @@ specifies an HTML file to load that defines a component.
18661866
Data can be made available to an instance of a component
18671867
using the `x-data` directive.
18681868

1869-
This approach is implemented by an Alpine plugin at [alpine-plugins](<https://github.com/mvolkmann/alpine-plugins?v=1.1.1>).
1869+
This approach is implemented by an Alpine plugin at [alpine-plugins](https://github.com/mvolkmann/alpine-plugins).
18701870
See the description of the `x-include` directive.
18711871

18721872
The following HTML provides an example of using the `x-include` directive.
@@ -1945,10 +1945,10 @@ For example:
19451945

19461946
### AJAX
19471947

1948-
[Alpine AJAX](<https://alpine-ajax.js.org?v=1.1.1>)
1948+
[Alpine AJAX](https://alpine-ajax.js.org)
19491949
is an Alpine plugin that
19501950
"enables your HTML elements to request remote content from your server."
1951-
It provides functionality that is similar to [htmx](<https://htmx.org?v=1.1.1>), but is simpler and provides fewer features.
1951+
It provides functionality that is similar to [htmx](https://htmx.org), but is simpler and provides fewer features.
19521952

19531953
Alpine AJAX was not created by the team that created Alpine.
19541954

@@ -1961,15 +1961,15 @@ For example, `<span x-text="await getHighScore()"></span>`.
19611961
### CSP
19621962

19631963
For applications that must adhere to the Content Security Policy (CSP),
1964-
see [CSP](<https://alpinejs.dev/advanced/csp?v=1.1.1>).
1964+
see [CSP](https://alpinejs.dev/advanced/csp).
19651965

19661966
### Reactivity
19671967

19681968
Alpine monitors state defined in `x-data` directives and stores and
19691969
automatically updates parts of the UI that use the data when the values change.
19701970
Reactivity is implemented by the functions `Alpine.reactive` and `Alpine.effect`.
19711971
Alpine does not use a virtual DOM like React.
1972-
For more detail, see [Reactivity](<https://alpinejs.dev/advanced/reactivity?v=1.1.1>).
1972+
For more detail, see [Reactivity](https://alpinejs.dev/advanced/reactivity).
19731973

19741974
## Common Mistakes
19751975

@@ -1983,7 +1983,7 @@ Those directives can only be applied to `template` elements.
19831983

19841984
## Resources
19851985

1986-
- [Alpine home page](<https://alpinejs.dev?v=1.1.1>)
1987-
- [Say No To Complexity With AlpineJS](<https://www.youtube.com/watch?v=4c8dpZN0rqM&t=1s&v=1.1.1>) YouTube video by Caleb Porzio
1988-
- [Mark Volkmann](<https://mvolkmann.github.io/blog/topics/#/blog/alpine/?v=1.0.22&v=1.1.1>)
1989-
- [Alpine Toolbox](<https://www.alpinetoolbox.com?v=1.1.1>)
1986+
- [Alpine home page](https://alpinejs.dev)
1987+
- [Say No To Complexity With AlpineJS](https://www.youtube.com/watch?v=4c8dpZN0rqM&t=1s) YouTube video by Caleb Porzio
1988+
- [Mark Volkmann](https://mvolkmann.github.io/blog/topics/#/blog/alpine/)
1989+
- [Alpine Toolbox](https://www.alpinetoolbox.com)

0 commit comments

Comments
 (0)