Here I used @State CGSize values to represent both the viewState and the dragState
struct Example1: View {
@State var viewState: CGSize = .zero
@State var dragState: CGSize = .zero
| // | |
| // AppView.swift | |
| // | |
| // | |
| // Created by Saroar Khandoker on 05.05.2021. | |
| // | |
| import AuthClient | |
| import AuthClientLive | |
| import AuthenticationView |
| extension DragGesture.Value { | |
| var velocity: CGPoint { | |
| let decelerationRate = UIScrollView.DecelerationRate.normal.rawValue, | |
| d = decelerationRate/(1000.0*(1.0 - decelerationRate)) | |
| return CGPoint(x: (location.x - predictedEndLocation.x)/d, | |
| y: (location.y - predictedEndLocation.y)/d) | |
| } |
| import SwiftUI | |
| struct Dial: View { | |
| @Binding public var value: Double | |
| public var minValue: Double = 0 | |
| public var maxValue: Double = .greatestFiniteMagnitude | |
| public var divisor: Double = 1 | |
| public var stepping: Double = 1 | |
| @State private var dialAngle: Angle = .zero | |
| @State private var dialShadowAngle: Angle = .zero |
| // decrypting Amtrak's real-time train location geoJSON feed | |
| // based on https://github.com/Vivalize/Amtrak-Train-Stats | |
| const fetch = require('node-fetch'); | |
| const CryptoJS = require('crypto-js'); | |
| // this is the xhr call done by https://www.amtrak.com/track-your-train.html containing encrypted train location data | |
| const dataUrl = 'https://maps.amtrak.com/services/MapDataService/trains/getTrainsData'; | |
| // these constants are pulled from RoutesList.v.json, which is an object with keys 'arr', 's', and 'v' | |
| const sValue = '9a3686ac'; // found at s[8] |
Also see the original Pieter Noordhuis's guide
You need:
| // MIT Licensed | |
| // Author: jwilson8767 | |
| /** | |
| * Waits for an element satisfying selector to exist, then resolves promise with the element. | |
| * Useful for resolving race conditions. | |
| * | |
| * @param selector | |
| * @returns {Promise} | |
| */ |
| # after appcleaner does his magic, do this | |
| sudo rm -rf "/Library/Application Support/Paragon Software/" | |
| sudo rm /Library/LaunchDaemons/com.paragon-software.installer.plist | |
| sudo rm /Library/LaunchDaemons/com.paragon-software.ntfs.loader.plist | |
| sudo rm /Library/LaunchDaemons/com.paragon-software.ntfsd.plist | |
| sudo rm /Library/LaunchAgents/com.paragon-software.ntfs.notification-agent.plist | |
| sudo rm -rf /Library/Filesystems/ufsd_NTFS.fs/ | |
| sudo rm -rf /Library/PrivilegedHelperTools/com.paragon-software.installer | |
| sudo rm -rf /Library/Extensions/ufsd_NTFS.kext/ |
The plumbing calculus is a typed language for describing how AI agents connect and communicate. It has formal mathematical foundations and supports session types for specifying protocols between agents. The compiler checks that agent graphs are well-formed before they run.
> This is the first public release of the compiler, interpreter, and MCP server, available for research and personal use.
| select.form-control + .chosen-container.chosen-container-single .chosen-single { | |
| display: block; | |
| width: 100%; | |
| height: 34px; | |
| padding: 6px 12px; | |
| font-size: 14px; | |
| line-height: 1.428571429; | |
| color: #555; | |
| vertical-align: middle; | |
| background-color: #fff; |