This gist's comment stream is a collection of webdev apps for OS X. Feel free to add links to apps you like, just make sure you add some context to what it does — either from the creator's website or your own thoughts.
— Erik
| # Requires the GitHub Copilot CLI from GitHub Next | |
| # https://www.npmjs.com/package/@githubnext/github-copilot-cli#installation-and-setup | |
| # This needs to be set up as a function in your fish config. You can use `funced -s q` to do this. | |
| # Options: | |
| # q -g --git: Use github-copilot-cli git-assist | |
| # q -h --gh: Use github-copilot-cli gh-assist | |
| # Defaults to using what-the-shell (general command assist) if neither option is provided | |
| # Completions for your Fish config: |
| #! /bin/bash | |
| mkdir ./arm64 | |
| mkdir ./x86_64 | |
| find "./" -name '*.framework' -type d | while read -r FRAMEWORK | |
| do | |
| echo "Preparing framework: $FRAMEWORK" | |
| FRAMEWORK_EXECUTABLE_NAME=$(/usr/libexec/PlistBuddy -c "Print CFBundleExecutable" "$FRAMEWORK/Info.plist") | |
| func animation(from notification: Notification) -> Animation? { | |
| guard | |
| let info = notification.userInfo, | |
| let duration = info[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double, | |
| let curveValue = info[UIResponder.keyboardAnimationCurveUserInfoKey] as? Int, | |
| let uiKitCurve = UIView.AnimationCurve(rawValue: curveValue) | |
| else { | |
| return nil | |
| } |
| # Copyright (c) 2020 Eugene Berdnikov | |
| # | |
| # Permission is hereby granted, free of charge, to any person obtaining a copy | |
| # of this software and associated documentation files (the "Software"), to deal | |
| # in the Software without restriction, including without limitation the rights | |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| # copies of the Software, and to permit persons to whom the Software is | |
| # furnished to do so, subject to the following conditions: | |
| # | |
| # The above copyright notice and this permission notice shall be included in all |
| #include <uwsgi.h> | |
| static int spinningfifo_hook(char *arg) { | |
| int fd; | |
| char *space = strchr(arg, ' '); | |
| if (!space) { | |
| uwsgi_log("invalid hook spinningfifo syntax, must be: <file> <string>\n"); | |
| return -1; | |
| } | |
| *space = 0; |
| user www-data; | |
| worker_processes 1; | |
| pid /var/run/nginx.pid; | |
| events { | |
| worker_connections 1024; | |
| } | |
| http { | |
| sendfile on; |
| var pushRight = slate.operation("push", { | |
| "direction": "right", | |
| "style": "bar-resize:screenSizeX/2" | |
| }); | |
| var pushLeft = slate.operation("push", { | |
| "direction": "left", | |
| "style": "bar-resize:screenSizeX/2" | |
| }); |
| @import "compass/css3/shared"; | |
| // NOTE: | |
| // All mixins for the 2009 spec have been written assuming they'll be fed property values that | |
| // correspond to the standard spec. Some mixins can be fed values from the 2009 spec, but don't | |
| // rely on it. The `legacy-order` mixin will increment the value fed to it because the 2009 | |
| // `box-ordinal-group` property begins indexing at 1, while the modern `order` property begins | |
| // indexing at 0. | |
| // if `true`, the 2009 properties will be emitted as part of the normal mixin call |
| function shExpMatch(url, pattern) { | |
| var pCharCode; | |
| var isAggressive = false; | |
| var pIndex; | |
| var urlIndex = 0; | |
| var lastIndex; | |
| var patternLength = pattern.length; | |
| var urlLength = url.length; | |
| for (pIndex = 0; pIndex < patternLength; pIndex += 1) { | |
| pCharCode = pattern.charCodeAt(pIndex); // use charCodeAt for performance, see http://jsperf.com/charat-charcodeat-brackets |