Understand your Mac and iPhone more deeply by tracing the evolution of Mac OS X from prelease to Swift. John Siracusa delivers the details.
You've got two main options:
This was originally written for a Remix app, but you could adapt it to work for any SSR framework.
Check the docs for these packages to learn how to use these snippets
https://www.npmjs.com/package/kysely-migration-cli https://www.npmjs.com/package/kysely-codegen https://www.npmjs.com/package/kysely#migrations
It's configured to use MySQL on Planetscale, but you could adjust it to use Postgres or SQLite if you want.
| OBJS := lol.o b64.o | |
| lol: $(OBJS) | |
| cc -o $@ $(OBJS) | |
| %.o: %.c | |
| cc -c $< -o $@ |
| function parseHTML(getNextElement) { | |
| let doneParsing = null; | |
| const whenDoneParsing = new Promise(resolve => { doneParsing = resolve; }); | |
| while (const element = getNextElement()) { | |
| if (element.tagName !== "SCRIPT") { | |
| // parse everything else... | |
| continue; | |
| } |
| // Our encouraged use of suspense in Apollo will comprise of 2 hooks: useBackgroundQuery and useReadQuery (final names TBD). | |
| // Using these 2 together encourage the use of the render-as-you-fetch pattern to start fetching as soon as possible: | |
| // https://17.reactjs.org/docs/concurrent-mode-suspense.html#approach-3-render-as-you-fetch-using-suspense | |
| const Parent = () => { | |
| // This hook provides no access to data. It's meant purely as a fetching mechanism | |
| const { promise } = useBackgroundQuery(QUERY); | |
| return ( | |
| <Suspense fallback="Loading..."> |
Remix Deferred is currently implemented on top of React's Suspense model but is not limited to React. This will be a quick dive into how "promise over the wire" is accomplished.
It isn't rocket science, but a quick recap of how frameworks such as react do SSR:
I have an updated version of this on my blog here: https://chrisamico.com/blog/2023-01-14/python-setup/.
This is my recommended Python setup, as of Fall 2022. The Python landscape can be a confusing mess of overlapping tools that sometimes don't work well together. This is an effort to standardize our approach and environments.
| $ grep -P "^[ABCDEFabcdefOoIi]{6,6}$" /usr/share/dict/words | tr 'OoIi' '0011' | tr '[:lower:]' '[:upper:]' | awk '{print "#" $0}' | |
| #ACAD1A | |
| #B0BB1E | |
| #DEBB1E | |
| #AB1DED | |
| #ACAC1A | |
| #ACCEDE | |
| #AC1D1C | |
| #BAB1ED | |
| #BA0BAB |
| import UIKit | |
| import SwiftUI | |
| class ViewController: UIViewController { | |
| override func viewDidLoad() { | |
| super.viewDidLoad() | |
| let box = UIView() | |
| box.frame = CGRect(x: (view.bounds.width / 2.0) - 100.0, y: 0.0, width: 100.0, height: 100.0) | |
| box.backgroundColor = .systemGreen |
| /* | |
| data can enter the pipeline via push or pull. | |
| the result of each intermediate step is stored (so errors can be retried) | |
| at the end of the pipeline data is put into a document store | |
| optionally, event handlers can listen to create/update/delete events and fan data out to other systems | |
| */ | |
| // example of a push handler (aka webhooks) | |
| // src/push/shopify/order/created.js | |
| // receive events, and returned data is stored in ClickHouse (OLAP) by the framework. |