- Create a Droplet on e.g. DigitalOcean.
- Make sure it has at least 1 vCPU and 1 GB of memory.
- Mine has: 1 vCPU, 1 GB, 35 GB NVMe SSD, Premium Intel CPU, Ubuntu 24.04 LTS for $8/month on Digital Ocean
- Choose SSH KEY AUTHENTICATION and create a new SSH key.
- Remember the server's IPv4 address.
- Sign up for a Container Registry e.g. on Digital Ocean for $5/mo (the 500MB free plan won't cut it)
- Remember your username on the registry
- Create an API Token at https://cloud.digitalocean.com/account/api/tokens for pushing images to the registry.
- It needs to have these scopes:
registry (4): delete, update, read, create
- It needs to have these scopes:
- Install Kamal with
gem install kamal
Swift’s type system supports a number of different ways of taking a function or type and abstracting it. Usually, this is done by adding a generic parameter and an associated set of constraints. Similarly, a function that takes a particular type of argument can be abstracted to any number of those arguments by making it variadic with triple-dot (...) syntax. Today, both of these features are permitted separately: you can define a generic function that takes a variable number of arguments, such as
func debugPrint<T>(_ items: T...)
where T: CustomDebugStringConvertible
{
for (item: T) in items {
stdout.write(item.debugDescription)
- Básico: Complexidade: (https://en.wikipedia.org/wiki/Time_complexity)
- How Quantum Computers Break Encryption | Shor's Algorithm Explained (https://www.youtube.com/watch?v=lvTqbM5Dq4Q)
- How to Make Sense of Google’s Quantum Supremacy Claim (https://www.extremetech.com/extreme/300987-googles-quantum-supremacy-paper-tldr-edition)
- The Extreme Physics Pushing Moore’s Law to the Next Level (https://www.youtube.com/watch?v=f0gMdGrVteI)
- Graphene Processors and Quantum Gates (https://www.youtube.com/watch?v=VLPpDoMBVK0)
- How Quantum Computers Break Encryption | Shor's Algorithm Explained (https://www.youtube.com/watch?v=lvTqbM5Dq4Q)
- How Shor's Algorithm Factors 314191 (https://www.youtube.com/watch?v=FRZQ-efABeQ)
- How Does a Quantum Computer Work? (https://www.youtube.com/watch?v=g_IaVepNDT4)
- What is Quantum Mechanical Spin? (https://www.youtube.com/watch?v=v1_-LsQLwkA)
- Secret Key Exchange (Diffie-Hellman) - Computerphile (https://www.youtube.com/watch?v=NmM9HA2MQGI)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Advanced SwiftUI Transitions | |
// https://swiftui-lab.com | |
// https://swiftui-lab.com/advanced-transitions | |
import SwiftUI | |
struct CrossEffectDemo: View { | |
let animationDuration: Double = 2 | |
let images = ["photo1", "photo2", "photo3", "photo4"] | |
@State private var idx = 0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// InstaStories.swift | |
// SwiftUITests | |
// | |
// Created by Fabio Giolito on 23/06/2019. | |
// Copyright © 2019 Fabio Giolito. All rights reserved. | |
// | |
import Combine | |
import SwiftUI |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension String { | |
func size(withAttributes attrs: [String:AnyObject], constrainedTo box: NSSize) -> NSRect { | |
let storage = NSTextStorage(string: self) | |
let container = NSTextContainer(containerSize: NSSize(width: box.width, height: box.height)) | |
let layout = NSLayoutManager() | |
layout.addTextContainer(container) | |
storage.addLayoutManager(layout) | |
storage.addAttributes(attrs, range: NSMakeRange(0, storage.length)) | |
container.lineFragmentPadding = 0.0 | |
let _ = layout.glyphRangeForTextContainer(container) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ Returns an iterator containing the primary (built-in) Ethernet interface. The caller is responsible for | |
// releasing the iterator after the caller is done with it. | |
func FindEthernetInterfaces() -> io_iterator_t? { | |
let matchingDictUM = IOServiceMatching("IOEthernetInterface"); | |
// Note that another option here would be: | |
// matchingDict = IOBSDMatching("en0"); | |
// but en0: isn't necessarily the primary interface, especially on systems with multiple Ethernet ports. | |
if matchingDictUM == nil { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'mina/bundler' | |
require 'mina/rails' | |
require 'mina/git' | |
require 'mina/rbenv' # for rbenv support. (http://rbenv.org) | |
# require 'mina/rvm' # for rvm support. (http://rvm.io) | |
# Basic settings: | |
# domain - The hostname to SSH to. | |
# deploy_to - Path to deploy into. | |
# repository - Git repo to clone from. (needed by mina/git) |