Skip to content

Instantly share code, notes, and snippets.

@sbeitzel
sbeitzel / build_stamper.pl
Created June 24, 2021 22:09
Perl script to rename a flutter web app with a unique name.
#!/usr/bin/perl
use strict;
use warnings;
sub hash_file {
my $fileName = shift(@_);
my $sumString = `md5sum $fileName`;
if ($sumString =~ /([a-f0-9]{32})/) {
return $1;
@sbeitzel
sbeitzel / MultiSelectItemList.swift
Created April 7, 2021 23:04
SwiftUI multiple selection list
import SwiftUI
/// UI View which presents a list of items, any number of which may
/// be selected. Each item must conform to `Identifiable` and
/// to `Hashable`.
struct MultiSelectItemList<T: Identifiable & Hashable>: View {
private let items: [T]
private let modified: (Set<T>) -> Void
private let itemString: (T) -> String
@sbeitzel
sbeitzel / FileManager-TempFile.swift
Created November 9, 2020 00:11
Creating a temporary file in Swift on MacOS
extension FileManager {
func tempFileURL(prefix: String = "", suffix: String = "") -> URL {
let uniqueString = UUID().uuidString
let fullFileName = "\(prefix)\(uniqueString)\(suffix)"
return temporaryDirectory.appendingPathComponent(fullFileName)
}
}
@sbeitzel
sbeitzel / i18n.dart
Last active December 15, 2019 01:10
Localizations delegates in flutter_web
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
class S {
const S();
static const SLocalizationsDelegate delegate =
@sbeitzel
sbeitzel / Dashboard.java
Last active March 23, 2018 15:40
How to get cell values to update properly
@FXML public TableView<ServerInstance> _serverTable;
@FXML public TableColumn<ServerInstance, Number> _smtpPort;
@FXML public TableColumn<ServerInstance, Number> _popPort;
@FXML public TableColumn<ServerInstance, Number> _messageCount;
@FXML public TableColumn<ServerInstance, Number> _receivedCount;
// ...
@Override
@SuppressWarnings("unused")
@sbeitzel
sbeitzel / keybase.md
Created October 9, 2017 00:27
It's the stupid viral verification thing

Keybase proof

I hereby claim:

  • I am sbeitzel on github.
  • I am sbeitzel (https://keybase.io/sbeitzel) on keybase.
  • I have a public key ASDSRPzYqRDxw1-6TS8VmMjjXLbFUdY_YOaEzEOZgcehXgo

To claim this, I am signing this object:

@sbeitzel
sbeitzel / gist:1065e8a657b935edfed1060b742d3ec0
Created May 15, 2016 16:19
Javascript regex for internet comments
var newText = text.replace(/(^|\s)([Ii])t's/g, "$1$2t is");
@sbeitzel
sbeitzel / dmscalc.html
Created March 30, 2016 03:50
JavaScript conversion of decimal degrees to degrees-minutes-seconds.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Decimal Degrees to Degrees-Minutes-Seconds</title>
<script>function convert()
{
var dd = document.getElementById("dd").value;
var sign="";
// TODO - degrees should be normalized to the range [0,365]
@sbeitzel
sbeitzel / TaskQueue.java
Created August 24, 2015 16:04
Why do I have to write this code? ListDataEvent has the type. Why are there three different methods to call on the listener? The *listener* should unpack the event!
private void notifyListeners(ListDataEvent lde) {
synchronized (_listeners) {
for (ListDataListener ldl : _listeners) {
switch (lde.getType()) {
case ListDataEvent.CONTENTS_CHANGED:
ldl.contentsChanged(lde);
break;
case ListDataEvent.INTERVAL_ADDED:
ldl.intervalAdded(lde);
break;