mirror of
https://github.com/osmarks/random-stuff
synced 2024-12-21 15:40:35 +00:00
add more things???
This commit is contained in:
parent
34bffb4f85
commit
19e50a1186
113
CookieEnterKeyPresser.py
Executable file
113
CookieEnterKeyPresser.py
Executable file
@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""Lets you collect cookies"""
|
||||
|
||||
import multiprocessing as mp
|
||||
import collections
|
||||
import pickle
|
||||
|
||||
big_cookie = """
|
||||
WNXXXXXNWW
|
||||
WNNXK0OkkOO0OOO000KXXNNW
|
||||
WN0O0O0kOOOO000OOkOOkOKK0OkO0N
|
||||
N0kkOkdxxkkOOOOkkxkxddxkkkOK0kxk0KKXXNW
|
||||
XkOOkxddkxkkOOkkkloddoodl;.;x0koOkdodxdddxk0XW
|
||||
WK0O0OkdokkkOkdddl:ooodxdkxoloc:lkx000kdo;..,,,dON
|
||||
Xxx:l0OkdkO0Okkxxdc::dkO0000OxxxdxoodOkdO00o';cd. :xk0N
|
||||
XkOd'cxxkO0kdc.. .. .:llkOkxdolododdxkOOkkOOOOo:' coodx0NW
|
||||
WXKOO00OkkkxkOd' .cko:;':cdxdddoolllooooocclloooddkklxxoodxkO0X
|
||||
WKkOOkkoddxxkkkOko...lkk,.;ooooolllcc;::lllc:cclc:lloddxxkkkxooxddK
|
||||
XOOkkxdokddoddxxxkOo;'...,dOkxxkdc,..;ooccccclc,..ll:;:;:ookOOkdxxxxK
|
||||
NOkOOxdolodoodddoddlxxdo:dOkOxkko....';ldxxdoxxOk.:kc:lxdc:oxdcddl::xk0W
|
||||
Nkkxkkxdll:cocc:ool::l;;lxkkxkkdll:'.'oxx:k000Kkkk. ...;.cdxkkxxx:. 'dx0
|
||||
NkkxdddoolcooddxocdxxkodO00kxkOk'..lol,..:;;kkkkOdO; . 'lxko,. .lddX
|
||||
KxxxxdddddxxdoxkxdkOOOOOO0Odlxkk;.. 'lc:;,::xkxoxxkO. .''.;dkxo,.. ..,lodk
|
||||
Oxxxxxxxolc'. ckcdxkkOOOOxl'cOkx:. ;oolcdkxoldk0000x'oxol:dkkllol'';odddddX
|
||||
Nxxxdxxxdoc:;,. .l:ooxdxkxxxkkk00kdc:c:odxkkk0Ooxkkkxkkk0Okkxxdxkxl:odxdddddK 1
|
||||
KxdxxxxkkkkckkxkkOOx:dddxxddxo:,cldxxxdodxxkOOOl:clllodxxdkxddxdooccodxdooodxW
|
||||
Xdoloxxoxkkdlc:;,oxx:cddddddoccllxxxdddlxkkkxdddo:cllloodxldkOOOolxxdooolloolX
|
||||
kddoddodxdxxxkkocxkx:,loododxcc:;,,ldlcxxxdooooclcllloddxkxokOO;.'lxdxxxolclK
|
||||
0dddxxx:dkxxokkkkkkOk::xdddll:. .:. .okxdoooooooooolloloddOOxxl. 'ooddddollN
|
||||
Nxdolddl;OOxlxxxxdxxd:cxxkxlc;. .. . .lllo:cll;.:xkxdlcooxxxxdd,. ;dodoloolk
|
||||
XddoldocxOklldddoddlclddxolkOx' :cloc;: .';'oxdddododooooc..cddxlloolX
|
||||
Oddlololxkklcddddo;ccc:::.oxo:. .;lcoxxl .dxxoooodooll;;;;:ooooooo
|
||||
XOdclxxdxooloolollkkkoddc:ooc:okkxdloxk; ..odooodoodxxdcllll:clooo0
|
||||
0odxdlo:odddllcxOkocllclxkOOkkxkxdodxxl' .'ldoooo:;;,:lc;ddddoooolO
|
||||
Nxodddddddxxldlokxc;;,xkxdddxxxkxxxdddkko,:::cclodo.... . ;dddlcllcX
|
||||
Nlloxol;llc::;,;.',cooddodooddxkxxdo:clllcloc;coodo. ..,ldxollolcx
|
||||
K......:;,ld,.. 'ooododoooodddoc,;coooodxl:;;:cllcclooooooolollW
|
||||
0' ...;.;okxxxlcdOkdl:clooooolddddoooddlclodl::ccllccodoolooll,k
|
||||
Wxlddxoxxdolldddxxxdlcclllol:l,. . .;ccllll::cc:;::ccoddooo;x
|
||||
Wdoxxdool::::ccccclodxddxd; ,olllcclcccclooxdoolccdW
|
||||
W0oloddodooclodxxxooddxxxd;. . .:c:;::cooooooccoollox0W
|
||||
0occlolcloodxddxdooooddkkc,,.okdlclooodlcddlccclxX
|
||||
Xkocc::::cllodoooolcc:ccllcccoooooddxo,,':coON
|
||||
XOdclclcc:llcllolc:;;cllooooddldooooxk0X
|
||||
NK0kdlcc:::ccc:clcllllcooooclx0XW
|
||||
WNXXKOxoc;:cccccccldOKW
|
||||
NOOddkOXW
|
||||
"""
|
||||
|
||||
little_cookie = """
|
||||
╱───╲
|
||||
╱○ ○ ╲
|
||||
│ ○ ○ │
|
||||
╲ ○ ○ ╱
|
||||
╲───╱
|
||||
"""
|
||||
|
||||
def say_cookies(num):
|
||||
if num == 1:
|
||||
return "cookie"
|
||||
else:
|
||||
return "cookies"
|
||||
|
||||
def save(obj, name):
|
||||
with open(name, "wb") as f:
|
||||
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
|
||||
|
||||
def load(name):
|
||||
with open(name, "rb") as f:
|
||||
return pickle.load(f)
|
||||
|
||||
if __name__ == "__main__":
|
||||
state = {
|
||||
"cookies": 0
|
||||
}
|
||||
|
||||
dispatch = {
|
||||
"": lambda st: {"cookies": st["cookies"] + 1},
|
||||
"help": lambda _: print("""
|
||||
Available commands:
|
||||
save [save name] - save current game state
|
||||
load [save name] - load previous save
|
||||
help - get this message
|
||||
cookie - see a minicookie
|
||||
<ENTER> - get cookies
|
||||
"""),
|
||||
"save": lambda st, save_name: save(st, save_name),
|
||||
"load": lambda _, save_name: load(save_name),
|
||||
"cookie": lambda _: print(little_cookie)
|
||||
}
|
||||
|
||||
print(big_cookie)
|
||||
|
||||
while True:
|
||||
print("You have %d %s." % (state["cookies"], say_cookies(state["cookies"])))
|
||||
|
||||
result_tokens = input(u"|||> ").split(" ")
|
||||
|
||||
try:
|
||||
selected_func = dispatch[result_tokens[0]]
|
||||
except:
|
||||
print("Command not found.")
|
||||
dispatch["help"](state)
|
||||
continue
|
||||
|
||||
change = selected_func(state, *result_tokens[1:])
|
||||
|
||||
try: # An operation might return nothing instead of changing state.
|
||||
for k, v in change.items():
|
||||
state[k] = v
|
||||
except:
|
||||
pass
|
392
KerbalName/.gitignore
vendored
Executable file
392
KerbalName/.gitignore
vendored
Executable file
@ -0,0 +1,392 @@
|
||||
# Created by https://www.gitignore.io/api/f#,linux,windows,macos,vim,emacs,visualstudio,visualstudiocode
|
||||
|
||||
### F# ###
|
||||
lib/debug
|
||||
lib/release
|
||||
Debug
|
||||
*.suo
|
||||
*.user
|
||||
obj
|
||||
bin
|
||||
|
||||
|
||||
### Linux ###
|
||||
*~
|
||||
|
||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||
.fuse_hidden*
|
||||
|
||||
# KDE directory preferences
|
||||
.directory
|
||||
|
||||
# Linux trash folder which might appear on any partition or disk
|
||||
.Trash-*
|
||||
|
||||
|
||||
### Windows ###
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
|
||||
### macOS ###
|
||||
*.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
|
||||
### Vim ###
|
||||
# swap
|
||||
[._]*.s[a-w][a-z]
|
||||
[._]s[a-w][a-z]
|
||||
# session
|
||||
Session.vim
|
||||
# temporary
|
||||
.netrwhist
|
||||
*~
|
||||
# auto-generated tag files
|
||||
tags
|
||||
|
||||
|
||||
### Emacs ###
|
||||
# -*- mode: gitignore; -*-
|
||||
*~
|
||||
\#*\#
|
||||
/.emacs.desktop
|
||||
/.emacs.desktop.lock
|
||||
*.elc
|
||||
auto-save-list
|
||||
tramp
|
||||
.\#*
|
||||
|
||||
# Org-mode
|
||||
.org-id-locations
|
||||
*_archive
|
||||
|
||||
# flymake-mode
|
||||
*_flymake.*
|
||||
|
||||
# eshell files
|
||||
/eshell/history
|
||||
/eshell/lastdir
|
||||
|
||||
# elpa packages
|
||||
/elpa/
|
||||
|
||||
# reftex files
|
||||
*.rel
|
||||
|
||||
# AUCTeX auto folder
|
||||
/auto/
|
||||
|
||||
# cask packages
|
||||
.cask/
|
||||
dist/
|
||||
|
||||
# Flycheck
|
||||
flycheck_*.el
|
||||
|
||||
# server auth directory
|
||||
/server/
|
||||
|
||||
# projectiles files
|
||||
.projectile
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode
|
||||
|
||||
|
||||
|
||||
### VisualStudio ###
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
build/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
6
KerbalName/KerbalName/App.config
Executable file
6
KerbalName/KerbalName/App.config
Executable file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
</startup>
|
||||
</configuration>
|
77
KerbalName/KerbalName/KerbalName.fs
Executable file
77
KerbalName/KerbalName/KerbalName.fs
Executable file
@ -0,0 +1,77 @@
|
||||
module Kerbal.Names
|
||||
|
||||
open Argu
|
||||
|
||||
let readLinesFrom file =
|
||||
use reader = new System.IO.StreamReader(path=file)
|
||||
reader.ReadToEnd().Split('\n')
|
||||
|> List.ofArray
|
||||
|
||||
type CommandLineArgument =
|
||||
| [<AltCommandLine("-q")>] Quantity of int
|
||||
| [<AltCommandLine("-s")>] Separator of string
|
||||
| [<AltCommandLine("-d")>] DataDir of string
|
||||
with
|
||||
interface IArgParserTemplate with
|
||||
member this.Usage =
|
||||
match this with
|
||||
| Quantity _ -> "How many names to generate (defaults to 1)"
|
||||
| Separator _ -> "What to separate generated names with (defaults to newline)"
|
||||
| DataDir _ -> "Where the program's datafiles can be found (defaults to KerbalNameData under working directory)"
|
||||
|
||||
module RNG =
|
||||
let seedGenerator = System.Random()
|
||||
let localGenerator = new System.Threading.ThreadLocal<System.Random>(fun _ ->
|
||||
lock seedGenerator (fun _ ->
|
||||
let seed = seedGenerator.Next()
|
||||
new System.Random(seed)))
|
||||
|
||||
// Returns a version of System.Random using the threadlocal RNG.
|
||||
// NOTE: Most functions are NOT thread-safe in this version.
|
||||
let getRand() = {new System.Random() with member this.Next(lim) = localGenerator.Value.Next(lim)}
|
||||
|
||||
let inline randomChoice (rand : System.Random) (list:'a list) =
|
||||
list.[rand.Next(list.Length)]
|
||||
|
||||
let inline generateHybridName rand prefixList suffixList =
|
||||
(randomChoice rand prefixList) + (randomChoice rand suffixList)
|
||||
|
||||
let genName (rand : System.Random) properNames namePrefixes nameSuffixes =
|
||||
if rand.Next(20) = 20 then
|
||||
randomChoice rand properNames
|
||||
else
|
||||
generateHybridName rand namePrefixes nameSuffixes
|
||||
|
||||
[<EntryPoint>]
|
||||
let main argv =
|
||||
// Construct CLI parser with programname taken from env variables
|
||||
let argParser = ArgumentParser.Create<CommandLineArgument>(programName = (Array.head <| System.Environment.GetCommandLineArgs()))
|
||||
|
||||
let parseResults = argParser.Parse argv
|
||||
let dataDir = parseResults.GetResult(<@ DataDir @>, defaultValue = "KerbalNameData") + "/" // Append a slash in case missing
|
||||
let quantity = parseResults.GetResult(<@ Quantity @>, defaultValue = 1)
|
||||
let separator = parseResults.GetResult(<@ Separator @>, defaultValue = "\n")
|
||||
|
||||
// Access name datafiles
|
||||
let properNames = readLinesFrom (dataDir + "Proper.txt")
|
||||
let namePrefixes = readLinesFrom (dataDir + "Prefixes.txt")
|
||||
let nameSuffixes = readLinesFrom (dataDir + "Suffixes.txt")
|
||||
|
||||
let rand = RNG.getRand()
|
||||
|
||||
let printingMailbox = MailboxProcessor.Start(fun inbox ->
|
||||
let rec loop () = async {
|
||||
let! msg = inbox.Receive()
|
||||
printf "%s" msg
|
||||
return! loop()
|
||||
}
|
||||
|
||||
loop()
|
||||
)
|
||||
|
||||
System.Threading.Tasks.Parallel.For(0, quantity, fun idx ->
|
||||
genName rand properNames namePrefixes nameSuffixes
|
||||
|> (fun name -> printingMailbox.Post(name + separator))
|
||||
) |> ignore // We do not care about the result which came from the parallel loop.
|
||||
|
||||
0
|
1051
KerbalName/KerbalName/KerbalName.fsproj
Executable file
1051
KerbalName/KerbalName/KerbalName.fsproj
Executable file
File diff suppressed because it is too large
Load Diff
4
KerbalName/KerbalName/paket.references
Executable file
4
KerbalName/KerbalName/paket.references
Executable file
@ -0,0 +1,4 @@
|
||||
FSharp.Core
|
||||
System.Runtime
|
||||
System.IO
|
||||
Argu
|
96
KerbalName/KerbalNameData/Prefixes.txt
Executable file
96
KerbalName/KerbalNameData/Prefixes.txt
Executable file
@ -0,0 +1,96 @@
|
||||
Ad
|
||||
Al
|
||||
Ald
|
||||
An
|
||||
Bar
|
||||
Bart
|
||||
Bil
|
||||
Billy-Bob
|
||||
Bob
|
||||
Bur
|
||||
Cal
|
||||
Cam
|
||||
Chad
|
||||
Cor
|
||||
Dan
|
||||
Der
|
||||
Des
|
||||
Dil
|
||||
Do
|
||||
Don
|
||||
Dood
|
||||
Dud
|
||||
Dun
|
||||
Ed
|
||||
El
|
||||
En
|
||||
Er
|
||||
Fer
|
||||
Fred
|
||||
Gene
|
||||
Geof
|
||||
Ger
|
||||
Gil
|
||||
Greg
|
||||
Gus
|
||||
Had
|
||||
Hal
|
||||
Han
|
||||
Har
|
||||
Hen
|
||||
Her
|
||||
Hud
|
||||
Jed
|
||||
Jen
|
||||
Jer
|
||||
Joe
|
||||
John
|
||||
Jon
|
||||
Jor
|
||||
Kel
|
||||
Ken
|
||||
Ker
|
||||
Kir
|
||||
Lan
|
||||
Lem
|
||||
Len
|
||||
Lo
|
||||
Lod
|
||||
Lu
|
||||
Lud
|
||||
Mac
|
||||
Mal
|
||||
Mat
|
||||
Mel
|
||||
Mer
|
||||
Mil
|
||||
Mit
|
||||
Mun
|
||||
Ned
|
||||
Neil
|
||||
Nel
|
||||
New
|
||||
Ob
|
||||
Or
|
||||
Pat
|
||||
Phil
|
||||
Ray
|
||||
Rib
|
||||
Rich
|
||||
Ro
|
||||
Rod
|
||||
Ron
|
||||
Sam
|
||||
Sean
|
||||
See
|
||||
Shel
|
||||
Shep
|
||||
Sher
|
||||
Sid
|
||||
Sig
|
||||
Son
|
||||
Thom
|
||||
Thomp
|
||||
Tom
|
||||
Wehr
|
||||
Wil
|
37
KerbalName/KerbalNameData/Proper.txt
Executable file
37
KerbalName/KerbalNameData/Proper.txt
Executable file
@ -0,0 +1,37 @@
|
||||
Al
|
||||
Alan
|
||||
Archibald
|
||||
Buzz
|
||||
Carson
|
||||
Chad
|
||||
Charlie
|
||||
Chris
|
||||
Chuck
|
||||
Dean
|
||||
Ed
|
||||
Edan
|
||||
Edlu
|
||||
Frank
|
||||
Franklin
|
||||
Gus
|
||||
Hans
|
||||
Jack
|
||||
James
|
||||
Jim
|
||||
Kirk
|
||||
Kurt
|
||||
Lars
|
||||
Luke
|
||||
Mac
|
||||
Matt
|
||||
Phil
|
||||
Randall
|
||||
Scott
|
||||
Scott
|
||||
Sean
|
||||
Steve
|
||||
Tom
|
||||
Will
|
||||
Yuri
|
||||
Olev
|
||||
Dimitry
|
119
KerbalName/KerbalNameData/Suffixes.txt
Executable file
119
KerbalName/KerbalNameData/Suffixes.txt
Executable file
@ -0,0 +1,119 @@
|
||||
ald
|
||||
bal
|
||||
bald
|
||||
bart
|
||||
bas
|
||||
berry
|
||||
bert
|
||||
bin
|
||||
ble
|
||||
bles
|
||||
bo
|
||||
bree
|
||||
brett
|
||||
bro
|
||||
bur
|
||||
burry
|
||||
bus
|
||||
by
|
||||
cal
|
||||
can
|
||||
cas
|
||||
cott
|
||||
dan
|
||||
das
|
||||
den
|
||||
din
|
||||
do
|
||||
don
|
||||
dorf
|
||||
dos
|
||||
dous
|
||||
dred
|
||||
drin
|
||||
dun
|
||||
ely
|
||||
emone
|
||||
emy
|
||||
eny
|
||||
fal
|
||||
fel
|
||||
fen
|
||||
field
|
||||
ford
|
||||
fred
|
||||
frey
|
||||
frey
|
||||
frid
|
||||
frod
|
||||
fry
|
||||
furt
|
||||
gan
|
||||
gard
|
||||
gas
|
||||
gee
|
||||
gel
|
||||
ger
|
||||
gun
|
||||
hat
|
||||
ing
|
||||
ke
|
||||
kin
|
||||
lan
|
||||
las
|
||||
ler
|
||||
ley
|
||||
lie
|
||||
lin
|
||||
lin
|
||||
lo
|
||||
lock
|
||||
long
|
||||
lorf
|
||||
ly
|
||||
mal
|
||||
man
|
||||
min
|
||||
ming
|
||||
mon
|
||||
more
|
||||
mund
|
||||
my
|
||||
nand
|
||||
nard
|
||||
ner
|
||||
ney
|
||||
nie
|
||||
ny
|
||||
oly
|
||||
ory
|
||||
rey
|
||||
rick
|
||||
rie
|
||||
righ
|
||||
rim
|
||||
rod
|
||||
ry
|
||||
sby
|
||||
sel
|
||||
sen
|
||||
sey
|
||||
ski
|
||||
son
|
||||
sted
|
||||
ster
|
||||
sy
|
||||
ton
|
||||
top
|
||||
trey
|
||||
van
|
||||
vey
|
||||
vin
|
||||
vis
|
||||
well
|
||||
wig
|
||||
win
|
||||
wise
|
||||
zer
|
||||
zon
|
||||
zor
|
14
KerbalName/build.cmd
Executable file
14
KerbalName/build.cmd
Executable file
@ -0,0 +1,14 @@
|
||||
@echo off
|
||||
cls
|
||||
|
||||
.paket\paket.bootstrapper.exe
|
||||
if errorlevel 1 (
|
||||
exit /b %errorlevel%
|
||||
)
|
||||
|
||||
.paket\paket.exe restore
|
||||
if errorlevel 1 (
|
||||
exit /b %errorlevel%
|
||||
)
|
||||
|
||||
packages\FAKE\tools\FAKE.exe build.fsx %*
|
51
KerbalName/build.fsx
Executable file
51
KerbalName/build.fsx
Executable file
@ -0,0 +1,51 @@
|
||||
// include Fake libs
|
||||
#r "./packages/FAKE/tools/FakeLib.dll"
|
||||
|
||||
open Fake
|
||||
|
||||
// Directories
|
||||
let buildDir = "./build/"
|
||||
let deployDir = "./deploy/"
|
||||
|
||||
|
||||
// Filesets
|
||||
let appReferences =
|
||||
!! "/**/*.csproj"
|
||||
++ "/**/*.fsproj"
|
||||
|
||||
// version info
|
||||
let version = "1.2a"
|
||||
|
||||
// Targets
|
||||
Target "Clean" (fun _ ->
|
||||
CleanDirs [buildDir; deployDir]
|
||||
)
|
||||
|
||||
Target "Build" (fun _ ->
|
||||
MSBuildDebug buildDir "Build" appReferences
|
||||
|> Log "AppBuild-Output: "
|
||||
)
|
||||
|
||||
Target "BuildRelease" (fun _ ->
|
||||
MSBuildRelease buildDir "Build" appReferences
|
||||
|> Log "AppBuild-Output: "
|
||||
)
|
||||
|
||||
Target "Deploy" (fun _ ->
|
||||
// Copy name data to buildDir for deployment
|
||||
FileUtils.cp_r "KerbalNameData" (buildDir + "KerbalNameData/")
|
||||
|
||||
!! (buildDir + "/**/*.*")
|
||||
-- "*.zip"
|
||||
|> Zip buildDir (deployDir + "KerbalName." + version + ".zip")
|
||||
)
|
||||
|
||||
// Build order
|
||||
"Clean"
|
||||
==> "BuildRelease"
|
||||
==> "Deploy"
|
||||
|
||||
"Build" <=> "BuildRelease"
|
||||
|
||||
// start build
|
||||
RunTargetOrDefault "Build"
|
34
KerbalName/build.sh
Executable file
34
KerbalName/build.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
if test "$OS" = "Windows_NT"
|
||||
then
|
||||
# use .Net
|
||||
|
||||
.paket/paket.bootstrapper.exe
|
||||
exit_code=$?
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
|
||||
.paket/paket.exe restore
|
||||
exit_code=$?
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
|
||||
packages/FAKE/tools/FAKE.exe $@
|
||||
else
|
||||
# use mono
|
||||
mono .paket/paket.bootstrapper.exe
|
||||
exit_code=$?
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
|
||||
mono .paket/paket.exe restore
|
||||
exit_code=$?
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
mono packages/FAKE/tools/FAKE.exe $@
|
||||
fi
|
4
KerbalName/paket.dependencies
Executable file
4
KerbalName/paket.dependencies
Executable file
@ -0,0 +1,4 @@
|
||||
source https://www.nuget.org/api/v2
|
||||
nuget FAKE
|
||||
nuget FSharp.Core
|
||||
nuget Argu
|
569
KerbalName/paket.lock
Executable file
569
KerbalName/paket.lock
Executable file
@ -0,0 +1,569 @@
|
||||
NUGET
|
||||
remote: https://www.nuget.org/api/v2
|
||||
Argu (3.7)
|
||||
FSharp.Core (>= 4.0.1.7-alpha) - framework: >= net463, >= netstandard16
|
||||
NETStandard.Library (>= 1.6) - framework: >= net463, >= netstandard16
|
||||
System.Xml.XDocument (>= 4.0.11) - framework: >= net463, >= netstandard16
|
||||
FAKE (4.56)
|
||||
FSharp.Core (4.1.0.2)
|
||||
System.Collections (>= 4.0.11) - framework: >= netstandard16
|
||||
System.Console (>= 4.0) - framework: >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.0.11) - framework: >= netstandard16
|
||||
System.Diagnostics.Tools (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Globalization (>= 4.0.11) - framework: >= netstandard16
|
||||
System.IO (>= 4.1) - framework: >= netstandard16
|
||||
System.Linq (>= 4.1) - framework: >= netstandard16
|
||||
System.Linq.Expressions (>= 4.1) - framework: >= netstandard16
|
||||
System.Linq.Queryable (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Net.Requests (>= 4.0.11) - framework: >= netstandard16
|
||||
System.Reflection (>= 4.1) - framework: >= netstandard16
|
||||
System.Reflection.Extensions (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Runtime (>= 4.1) - framework: >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.1) - framework: >= netstandard16
|
||||
System.Runtime.Numerics (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Text.RegularExpressions (>= 4.1) - framework: >= netstandard16
|
||||
System.Threading (>= 4.0.11) - framework: >= netstandard16
|
||||
System.Threading.Tasks (>= 4.0.11) - framework: >= netstandard16
|
||||
System.Threading.Tasks.Parallel (>= 4.0.1) - framework: >= netstandard16
|
||||
System.Threading.Thread (>= 4.0) - framework: >= netstandard16
|
||||
System.Threading.ThreadPool (>= 4.0.10) - framework: >= netstandard16
|
||||
System.Threading.Timer (>= 4.0.1) - framework: >= netstandard16
|
||||
System.ValueTuple (>= 4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
|
||||
Microsoft.NETCore.Platforms (1.1) - framework: >= net10, >= netstandard10, netstandard13
|
||||
Microsoft.NETCore.Targets (1.1) - framework: >= net10, >= netstandard10, netstandard13
|
||||
Microsoft.Win32.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
NETStandard.Library (1.6.1) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard10
|
||||
Microsoft.Win32.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.AppContext (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||
System.Collections.Concurrent (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Console (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard10
|
||||
System.Diagnostics.Tools (>= 4.3) - framework: >= netstandard10
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Globalization (>= 4.3) - framework: >= netstandard10
|
||||
System.Globalization.Calendars (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard10
|
||||
System.IO.Compression (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.IO.Compression.ZipFile (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.IO.FileSystem (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Linq (>= 4.3) - framework: >= netstandard10
|
||||
System.Linq.Expressions (>= 4.3) - framework: >= netstandard10
|
||||
System.Net.Http (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Net.Primitives (>= 4.3) - framework: >= netstandard10
|
||||
System.Net.Sockets (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.ObjectModel (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Extensions (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Runtime.Numerics (>= 4.3) - framework: >= net45, >= netstandard11
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard10
|
||||
System.Text.Encoding.Extensions (>= 4.3) - framework: >= netstandard10
|
||||
System.Text.RegularExpressions (>= 4.3) - framework: >= netstandard10
|
||||
System.Threading (>= 4.3) - framework: >= netstandard10
|
||||
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
|
||||
System.Threading.Timer (>= 4.3) - framework: >= net451, >= netstandard12
|
||||
System.Xml.ReaderWriter (>= 4.3) - framework: >= netstandard10
|
||||
System.Xml.XDocument (>= 4.3) - framework: >= netstandard10
|
||||
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.native.System (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.Net.Http (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
System.AppContext (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Buffers (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard11
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: >= netstandard11
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard11
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard11
|
||||
System.Threading (>= 4.3) - framework: >= netstandard11
|
||||
System.Collections (4.3) - framework: >= net10, >= netstandard10
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Collections.Concurrent (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Console (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.Diagnostics.Debug (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Diagnostics.DiagnosticSource (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||
System.Reflection (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||
System.Diagnostics.Tools (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Diagnostics.Tracing (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||
System.Globalization (4.3) - framework: >= net10, >= netstandard10
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Globalization.Calendars (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Globalization.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||
System.IO (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
runtime.native.System (>= 4.3) - framework: >= netstandard13
|
||||
runtime.native.System.IO.Compression (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Buffers (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO.Compression.ZipFile (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Buffers (>= 4.3) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.Compression (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.FileSystem (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.FileSystem (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||
System.IO.FileSystem.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Linq (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Linq.Expressions (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Linq (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.ObjectModel (>= 4.3) - framework: >= netstandard16
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
|
||||
System.Reflection.Emit (>= 4.3) - framework: >= netstandard16
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Reflection.Emit.Lightweight (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Reflection.TypeExtensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Linq.Queryable (4.3) - framework: >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Linq (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Linq.Expressions (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Net.Http (4.3.1) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
runtime.native.System (>= 4.3) - framework: >= netstandard16
|
||||
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Diagnostics.DiagnosticSource (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Globalization.Extensions (>= 4.3) - framework: >= netstandard16
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||
System.IO.FileSystem (>= 4.3) - framework: >= netstandard16
|
||||
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Runtime.Handles (>= 4.3) - framework: netstandard13, >= netstandard16
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, dnxcore50, netstandard13, >= netstandard16
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||
System.Net.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Net.Requests (4.3) - framework: >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
System.Net.Http (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
System.Net.WebHeaderCollection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Net.Sockets (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.Net.Primitives (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||
System.Net.WebHeaderCollection (4.3) - framework: >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||
System.ObjectModel (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Reflection (4.3) - framework: >= net10, >= netstandard10
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Reflection.Emit (4.3) - framework: >= net463, >= netstandard16
|
||||
System.IO (>= 4.3) - framework: >= netstandard11
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard11
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard11
|
||||
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard11
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard11
|
||||
System.Reflection.Emit.ILGeneration (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Emit.Lightweight (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||
System.Reflection.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Reflection.Primitives (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Reflection.TypeExtensions (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Reflection (>= 4.3) - framework: >= net462, dnxcore50, netstandard13, >= netstandard15
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15
|
||||
System.Resources.ResourceManager (4.3) - framework: >= net10, >= netstandard10
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||
System.Runtime (4.3) - framework: >= net10, >= netstandard10, netstandard13
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
|
||||
System.Runtime.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||
System.Runtime.Handles (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.InteropServices (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||
System.Runtime (>= 4.3) - framework: net462, >= net463, dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15, netcore11
|
||||
System.Runtime.InteropServices.RuntimeInformation (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.native.System (>= 4.3) - framework: >= netstandard11
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard11
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||
System.Runtime.Numerics (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Security.Cryptography.Algorithms (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
|
||||
runtime.native.System.Security.Cryptography.Apple (>= 4.3) - framework: >= netstandard16
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: >= netstandard16
|
||||
System.IO (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, dnxcore50, >= netstandard16
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Security.Cryptography.Cng (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: netstandard14, >= netstandard16
|
||||
System.IO (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||
System.Runtime.Handles (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
|
||||
System.Text.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.Csp (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.Reflection (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.Encoding (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard13
|
||||
System.Collections (>= 4.3) - framework: >= netstandard13
|
||||
System.Collections.Concurrent (>= 4.3) - framework: >= netstandard13
|
||||
System.Linq (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= net463, >= netstandard16, monoandroid, monotouch, xamarinios, xamarinmac
|
||||
System.Collections (>= 4.3) - framework: >= netstandard16
|
||||
System.IO (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= netstandard16
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard16
|
||||
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net463, >= netstandard16
|
||||
System.Text.Encoding (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||
System.IO (>= 4.3) - framework: >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||
System.Security.Cryptography.X509Certificates (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
|
||||
runtime.native.System (>= 4.3) - framework: >= netstandard16
|
||||
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard16
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Globalization.Calendars (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime.Numerics (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.Cng (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Security.Cryptography.Csp (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Encoding (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||
System.Security.Cryptography.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Text.Encoding (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Text.Encoding.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Text.RegularExpressions (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16, netcore11
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||
System.Threading (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Threading.Tasks (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Threading.Tasks.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
|
||||
System.Threading.Tasks.Parallel (4.3) - framework: >= netstandard16
|
||||
System.Collections.Concurrent (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||
System.Threading.Thread (4.3) - framework: >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading.ThreadPool (4.3) - framework: >= netstandard16
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||
System.Threading.Timer (4.3) - framework: >= net463, >= netstandard16
|
||||
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard12
|
||||
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard12
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard12
|
||||
System.ValueTuple (4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
|
||||
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
|
||||
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||
System.Xml.ReaderWriter (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO.FileSystem.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Text.Encoding.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Text.RegularExpressions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Threading.Tasks.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Xml.XDocument (4.3) - framework: >= net463, >= netstandard16
|
||||
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Diagnostics.Tools (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||
System.Xml.ReaderWriter (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
23
README.md
Normal file
23
README.md
Normal file
@ -0,0 +1,23 @@
|
||||
# random-stuff
|
||||
|
||||
In the interest of transparency and/or being vaguely useful, I'm releasing random junk from my projects folder publicly.
|
||||
This comes with absolutely no guarantee of support or correct function, although if you need some of this for something I will *try* and answer any queries you might have.
|
||||
|
||||
## Contents (incomplete and rough list)
|
||||
|
||||
* some interpreters for esolangs due to events on the esolangs discord
|
||||
* bad assembly hello world for some reason
|
||||
* political compass visualizer thing for one Discord server
|
||||
* simple un-hexadecimal-izer program (`base64 -d` exists but somehow not `base16 -d` or something)
|
||||
* scripts for packing music + metadata onto Computronics (a Minecraft mod) tape images
|
||||
* some thing to generate WAV files containing beeping noises
|
||||
* fairly transferable small bits of an abandoned JS project
|
||||
* an extremely bad and/or unfinished cookie clicker thing where you press the enter key instead of clicking
|
||||
* a very simple web API wrapper for `luamin`
|
||||
* some bodged old version of [it-was-inevitable](https://github.com/BenLubar/it_was_inevitable) which runs a local webserver instead of sending to Mastodon
|
||||
* an extremely cursed program which bruteforces regexes or something?
|
||||
* `realtau.txt`, which seemingly contains 100000 digits of τ. I wonder if there's a faketau somewhere.
|
||||
* some weird thing which lets you use synonyms to get attributes on python objects
|
||||
* something which generates random vaguely human readable names in Elm. Please note that I do NOT endorse the use of Elm and this is provided mostly just to make the languages list at the side weirder.
|
||||
* F# kerbal name generator & very basic stack calculator
|
||||
* importer part of an unfinished wikipedia database dump viewer
|
100
Stackulator.fs
Executable file
100
Stackulator.fs
Executable file
@ -0,0 +1,100 @@
|
||||
open System
|
||||
open System.Numerics
|
||||
|
||||
type Stack = StackContents of Complex list
|
||||
|
||||
let splitPart (what:char) index (stringIn:string) = stringIn.Split(what).[index]
|
||||
let spliti = splitPart 'i'
|
||||
let firstInSpliti = spliti 0
|
||||
let secondInSpliti = spliti 1
|
||||
let isDoubleAsString text = System.Double.TryParse text |> fst
|
||||
let doubleFromString text = System.Double.TryParse text |> snd
|
||||
let isImaginaryAsString (text:string) =
|
||||
match text.Contains("i") with
|
||||
| false -> false
|
||||
| true ->
|
||||
let normalPart = firstInSpliti text
|
||||
isDoubleAsString normalPart
|
||||
let imaginaryFromString text =
|
||||
let imaginaryPart = doubleFromString (firstInSpliti text)
|
||||
Complex(0.0, imaginaryPart)
|
||||
|
||||
let showStack (StackContents contents) =
|
||||
printfn "%A" contents // Print unpacked StackContents with formatting string
|
||||
StackContents (contents) // Repack the StackContents
|
||||
|
||||
let push value (StackContents contents) =
|
||||
StackContents (value::contents)
|
||||
|
||||
let pop (StackContents contents) =
|
||||
match contents with
|
||||
| top::rest -> // Separate top from rest
|
||||
(top, StackContents rest) // Stack contents must be the StackContents type.
|
||||
| [] -> // Check for stack underflow
|
||||
failwith "Stack underflow"
|
||||
|
||||
let binary func stack =
|
||||
let x, newStack = pop stack
|
||||
let y, newestStack = pop newStack
|
||||
let z = func y x // This is deliberately swapped, because we are working on a stack
|
||||
push z newestStack
|
||||
|
||||
let unary func stack =
|
||||
let x, newStack = pop stack
|
||||
push (func x) stack
|
||||
|
||||
let dup stack =
|
||||
let x, _ = pop stack // Drop the new stack, we want to duplicate "x"
|
||||
push x stack
|
||||
|
||||
let swap stack =
|
||||
let x, newStack = pop stack
|
||||
let y, newerStack = pop newStack
|
||||
push y (push x newerStack)
|
||||
|
||||
let drop stack =
|
||||
let _, newStack = pop stack // Pop one off the top and ignore it
|
||||
newStack
|
||||
|
||||
let numberInput value stack = push value stack
|
||||
|
||||
let add = binary (+)
|
||||
let multiply = binary (*)
|
||||
let subtract = binary (-)
|
||||
let divide = binary (/)
|
||||
let negate = unary (fun x -> -(x))
|
||||
let square = unary (fun x -> x * x)
|
||||
let cube = dup >> dup >> multiply >> multiply
|
||||
let exponent = binary ( ** )
|
||||
|
||||
let show stack =
|
||||
let value, _ = pop(stack)
|
||||
printfn "%A" value
|
||||
stack // We're going to keep the same stack as before.
|
||||
|
||||
let empty = StackContents []
|
||||
|
||||
let splitString (text:string) = text.Split ' '
|
||||
|
||||
let processTokenString stack token =
|
||||
match token with
|
||||
| "*" -> stack |> multiply
|
||||
| "+" -> stack |> add
|
||||
| "/" -> stack |> divide
|
||||
| "+-" -> stack |> negate
|
||||
| "sqr" -> stack |> square
|
||||
| "cub" -> stack |> cube
|
||||
| "**" | "^" -> stack |> exponent
|
||||
| _ when isDoubleAsString token ->
|
||||
let doubleInString = doubleFromString token
|
||||
numberInput (Complex(doubleInString, 0.0)) stack
|
||||
| _ when isImaginaryAsString token ->
|
||||
let imaginaryInString = imaginaryFromString token
|
||||
numberInput imaginaryInString stack
|
||||
| _ -> showStack stack // For easier debugging.
|
||||
|
||||
Console.Write("Please enter your expression here: ")
|
||||
let userExpression = Console.ReadLine()
|
||||
let splitExpression = splitString userExpression
|
||||
|
||||
let resultantStack = List.fold processTokenString (empty) (Array.toList splitExpression) |> showStack
|
44
accursed-autoregex/allstrings.py
Executable file
44
accursed-autoregex/allstrings.py
Executable file
@ -0,0 +1,44 @@
|
||||
#!/bin/env python3
|
||||
|
||||
chars = [chr(n) for n in range(126)]
|
||||
firstchar = chars[0]
|
||||
lastchar = chars[len(chars) - 1]
|
||||
|
||||
def increment_char(character):
|
||||
return chr(ord(character) + 1)
|
||||
|
||||
def old_increment_string(string_to_increment):
|
||||
reversed_string = list(reversed(string_to_increment)) # Reverse the string for easier work.
|
||||
for rindex, char in enumerate(reversed_string):
|
||||
if char == lastchar: # If we can't increment this char further, try the next ones.
|
||||
reversed_string[rindex] = firstchar # Set the current char back to the first one.
|
||||
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
|
||||
else:
|
||||
# We only want to increment ONE char, unless we need to "carry".
|
||||
reversed_string[rindex] = increment_char(reversed_string[rindex])
|
||||
break
|
||||
return ''.join(list(reversed(reversed_string)))
|
||||
|
||||
def increment_string(to_increment):
|
||||
reversed_string = list(to_increment) # Reverse the string for easier work.
|
||||
for rindex, char in enumerate(reversed_string):
|
||||
if char == lastchar: # If we can't increment this char further, try the next ones.
|
||||
reversed_string[rindex] = firstchar # Set the current char back to the first one.
|
||||
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
|
||||
else:
|
||||
# We only want to increment ONE char, unless we need to "carry".
|
||||
reversed_string[rindex] = increment_char(reversed_string[rindex])
|
||||
break
|
||||
return ''.join(list(reversed_string))
|
||||
|
||||
def string_generator():
|
||||
length = 0
|
||||
while 1:
|
||||
length += 1
|
||||
string = chars[0] * length
|
||||
while True:
|
||||
try:
|
||||
string = increment_string(string)
|
||||
except IndexError: # Incrementing has gone out of the char array, move onto next length
|
||||
break
|
||||
yield string
|
82
accursed-autoregex/autoregex.py
Executable file
82
accursed-autoregex/autoregex.py
Executable file
@ -0,0 +1,82 @@
|
||||
#!/bin/env python3
|
||||
import re, sys, allstrings, multiprocessing
|
||||
from setproctitle import setproctitle # https://github.com/dvarrazzo/py-setproctitle
|
||||
|
||||
string = sys.argv[1]
|
||||
|
||||
def gen_strings(out_queue):
|
||||
setproctitle("AutoRegexer StringGen")
|
||||
for string in allstrings.string_generator():
|
||||
out_queue.put(string)
|
||||
|
||||
def test_strings(regex_queue, substring_queue, out_queue, search_in):
|
||||
setproctitle("AutoRegexer Tester")
|
||||
|
||||
while 1:
|
||||
try: # Regexes are errory things and we shove in random ones, so ignore errors.
|
||||
regex_raw = regex_queue.get()
|
||||
substring = substring_queue.get()
|
||||
|
||||
regex = re.compile(regex_raw)
|
||||
result = re.sub(regex, substring, string)
|
||||
|
||||
out_queue.put({"result": result, "regex": regex_raw, "substring": substring}) # Package the values used and send them off.
|
||||
except:
|
||||
pass
|
||||
|
||||
def print_strings(in_queue, ignore):
|
||||
i = 0
|
||||
setproctitle("AutoRegexer IO")
|
||||
|
||||
while 1:
|
||||
i += 1
|
||||
|
||||
attempt = in_queue.get()
|
||||
|
||||
if attempt["result"] == ignore: # Ignore regexes deemed boring..
|
||||
continue
|
||||
|
||||
print(str(i) + "th attempt: replacing " + attempt["substring"] +
|
||||
" with " + attempt["regex"] + " results in " + attempt["result"] + ".")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print_queue = multiprocessing.Queue() # Create the IO queue
|
||||
regex_queue = multiprocessing.Queue() # Create queue to distribute generated strings.
|
||||
substring_queue = multiprocessing.Queue()
|
||||
|
||||
print_process = multiprocessing.Process(target=print_strings, args=(print_queue, string), name="AutoRegexer IO") # Spawn a process to handle our IO.
|
||||
regex_gen_process = multiprocessing.Process(target=gen_strings, args=(regex_queue,), name="AutoRegexer RegexGen") # Create process to generate our regexes.
|
||||
substring_gen_process = multiprocessing.Process(target=gen_strings, args=(substring_queue,), name="AutoRegexer SubstringGen") # Make a process to generate the replaced substrings.
|
||||
print_process.start()
|
||||
regex_gen_process.start()
|
||||
substring_gen_process.start()
|
||||
|
||||
#with multiprocessing.Pool(processes=7) as pool:
|
||||
for local_process_id in range(7):
|
||||
#while True:
|
||||
proc_name = "AutoRegexer " + str(local_process_id)
|
||||
proc = multiprocessing.Process(target=test_strings, args=(regex_queue, substring_queue, print_queue, string), name=proc_name)
|
||||
proc.start()
|
||||
|
||||
#string_gen_process = multiprocessing.Process(target=gen_strings, args=(string_queue,), name="AutoRegexer StringGen")
|
||||
#string_gen_process.start()
|
||||
|
||||
setproctitle("AutoRegexer Master")
|
||||
|
||||
# Obsolete old version.
|
||||
'''
|
||||
for iterations, regex_and_sub in enumerate(allstrings.string_generator()):
|
||||
result = ""
|
||||
try:
|
||||
half_point = len(regex_and_sub) // 2
|
||||
regex_raw = regex_and_sub[:half_point]
|
||||
substring = regex_and_sub[half_point:]
|
||||
|
||||
regex = re.compile(regex_raw)
|
||||
result = re.sub(regex_raw, substring, string)
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
if result != string and result != "":
|
||||
print("Replacing `" + regex_raw + "` with `" + substring + "` produces `" + result + "`.")
|
||||
'''
|
22
config.ts
Normal file
22
config.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { parse } from "toml"
|
||||
import { readFileSync } from "fs"
|
||||
import { join } from "path"
|
||||
import { path } from "ramda"
|
||||
|
||||
import * as log from "./log"
|
||||
|
||||
const defaults = {
|
||||
production: process.env.NODE_ENV === "production"
|
||||
}
|
||||
|
||||
const config = parse(readFileSync(process.env.CONFIG_FILE || join(__dirname, "..", "config.toml"), { encoding: "utf8" }))
|
||||
|
||||
export const get = key => {
|
||||
const arrKey = key.split(".")
|
||||
const out = path(arrKey, config) || path(arrKey, defaults)
|
||||
if (out === undefined) {
|
||||
log.error(`Configuration parameter ${key} missing`)
|
||||
process.exit(1)
|
||||
}
|
||||
return out
|
||||
}
|
49
db.ts
Executable file
49
db.ts
Executable file
@ -0,0 +1,49 @@
|
||||
import Database = require("better-sqlite3")
|
||||
|
||||
import * as C from "./config"
|
||||
import * as log from "./log"
|
||||
|
||||
export const DB = Database(C.get("db"))
|
||||
|
||||
const migrations = [
|
||||
`
|
||||
--whatever
|
||||
`
|
||||
]
|
||||
|
||||
const executeMigration = DB.transaction((i) => {
|
||||
const migration = migrations[i]
|
||||
DB.exec(migration)
|
||||
DB.pragma(`user_version = ${i + 1}`)
|
||||
log.info(`Migrated to schema ${i + 1}`)
|
||||
})
|
||||
|
||||
const schemaVersion = DB.pragma("user_version", { simple: true })
|
||||
if (schemaVersion < migrations.length) {
|
||||
log.info(`Migrating DB - schema ${schemaVersion} used, schema ${migrations.length} available`)
|
||||
for (let i = schemaVersion; i < migrations.length; i++) {
|
||||
executeMigration(i)
|
||||
}
|
||||
}
|
||||
|
||||
DB.pragma("foreign_keys = 1")
|
||||
|
||||
const preparedStatements = new Map()
|
||||
|
||||
export const SQL = (strings, ...params) => {
|
||||
const sql = strings.join("?")
|
||||
let stmt
|
||||
const cachedValue = preparedStatements.get(sql)
|
||||
if (!cachedValue) {
|
||||
stmt = DB.prepare(sql)
|
||||
preparedStatements.set(sql, stmt)
|
||||
} else {
|
||||
stmt = cachedValue
|
||||
}
|
||||
return {
|
||||
get: () => stmt.get.apply(stmt, params),
|
||||
run: () => stmt.run.apply(stmt, params),
|
||||
all: () => stmt.all.apply(stmt, params),
|
||||
statement: stmt
|
||||
}
|
||||
}
|
46
diacriticize.py
Executable file
46
diacriticize.py
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python3
|
||||
import random
|
||||
import fileinput
|
||||
import sys
|
||||
|
||||
zalgo = [
|
||||
'\u030d', '\u030e', '\u0304', '\u0305',
|
||||
'\u033f', '\u0311', '\u0306', '\u0310',
|
||||
'\u0352', '\u0357', '\u0351', '\u0307',
|
||||
'\u0308', '\u030a', '\u0342', '\u0343',
|
||||
'\u0344', '\u034a', '\u034b', '\u034c',
|
||||
'\u0303', '\u0302', '\u030c', '\u0350',
|
||||
'\u0300', '\u0301', '\u030b', '\u030f',
|
||||
'\u0312', '\u0313', '\u0314', '\u033d',
|
||||
'\u0309', '\u0363', '\u0364', '\u0365',
|
||||
'\u0366', '\u0367', '\u0368', '\u0369',
|
||||
'\u036a', '\u036b', '\u036c', '\u036d',
|
||||
'\u036e', '\u036f', '\u033e', '\u035b',
|
||||
'\u0346', '\u031a',
|
||||
'\u0316', '\u0317', '\u0318', '\u0319',
|
||||
'\u031c', '\u031d', '\u031e', '\u031f',
|
||||
'\u0320', '\u0324', '\u0325', '\u0326',
|
||||
'\u0329', '\u032a', '\u032b', '\u032c',
|
||||
'\u032d', '\u032e', '\u032f', '\u0330',
|
||||
'\u0331', '\u0332', '\u0333', '\u0339',
|
||||
'\u033a', '\u033b', '\u033c', '\u0345',
|
||||
'\u0347', '\u0348', '\u0349', '\u034d',
|
||||
'\u034e', '\u0353', '\u0354', '\u0355',
|
||||
'\u0356', '\u0359', '\u035a', '\u0323',
|
||||
'\u0315', '\u031b', '\u0340', '\u0341',
|
||||
'\u0358', '\u0321', '\u0322', '\u0327',
|
||||
'\u0328', '\u0334', '\u0335', '\u0336',
|
||||
'\u034f', '\u035c', '\u035d', '\u035e',
|
||||
'\u035f', '\u0360', '\u0362', '\u0338',
|
||||
'\u0337', '\u0361', '\u0489'
|
||||
]
|
||||
|
||||
zero_width = ["\u200b", "\u200c", "\u200d"]
|
||||
|
||||
def process_char(c):
|
||||
return c + random.choice(zalgo)
|
||||
|
||||
for line in fileinput.input():
|
||||
# line = line.replace("\n", "")
|
||||
out = "".join([process_char(c) for c in line])
|
||||
sys.stdout.buffer.write(out.encode("utf-8"))
|
1
it-was-inevitable/.gitignore
vendored
Executable file
1
it-was-inevitable/.gitignore
vendored
Executable file
@ -0,0 +1 @@
|
||||
*.local.*
|
17
it-was-inevitable/Dockerfile
Executable file
17
it-was-inevitable/Dockerfile
Executable file
@ -0,0 +1,17 @@
|
||||
FROM golang:1.10.1 as builder
|
||||
|
||||
COPY *.go /go/src/github.com/BenLubar/it_was_inevitable/
|
||||
|
||||
WORKDIR /go/src/github.com/BenLubar/it_was_inevitable
|
||||
|
||||
RUN go get -d
|
||||
|
||||
RUN CGO_ENABLED=0 go build -a -o /it_was_inevitable
|
||||
|
||||
FROM benlubar/dwarffortress:df-ai-0.44.12-r1-update1
|
||||
|
||||
COPY --from=builder /it_was_inevitable /usr/local/bin/it_was_inevitable
|
||||
|
||||
RUN sed -i /df_linux/dfhack -e "s/ setarch / exec setarch /"
|
||||
|
||||
CMD ["it_was_inevitable"]
|
19
it-was-inevitable/LICENSE
Executable file
19
it-was-inevitable/LICENSE
Executable file
@ -0,0 +1,19 @@
|
||||
zlib License
|
||||
|
||||
(C) 2018 Ben Lubar
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
9
it-was-inevitable/README.md
Executable file
9
it-was-inevitable/README.md
Executable file
@ -0,0 +1,9 @@
|
||||
# Sentient Dwarf Fortress was inevitable.
|
||||
|
||||
The source code that powers [@it\_was\_inevitable@botsin.space](https://botsin.space/@it_was_inevitable) and [@it\_was\_inevitable\_slow@botsin.space](https://botsin.space/@it_was_inevitable_slow) on Mastodon.
|
||||
Except it's actually not, this version is to run a webserver on port 1556 to provide messages instead.
|
||||
|
||||
## To run locally:
|
||||
|
||||
1. Install Docker.
|
||||
2. Run this in Docker.
|
6
it-was-inevitable/announcements.txt.go
Executable file
6
it-was-inevitable/announcements.txt.go
Executable file
@ -0,0 +1,6 @@
|
||||
package main
|
||||
|
||||
var announcementstxt = []byte(`
|
||||
[REGULAR_CONVERSATION:D_D]
|
||||
[CONFLICT_CONVERSATION:D_D]
|
||||
`[1:])
|
44
it-was-inevitable/cleanup.go
Executable file
44
it-was-inevitable/cleanup.go
Executable file
@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func cleanup() {
|
||||
// Enable only conversation in the log.
|
||||
if err := ioutil.WriteFile("/df_linux/data/init/announcements.txt", announcementstxt, 0644); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Remove any old log we might have.
|
||||
if err := os.Remove("/df_linux/gamelog.txt"); err != nil && !os.IsNotExist(err) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Remove any old worlds.
|
||||
if err := clearSaves(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Set up df-ai.
|
||||
if err := ioutil.WriteFile("/df_linux/dfhack-config/df-ai.json", dfaijson, 0644); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func clearSaves() error {
|
||||
files, err := ioutil.ReadDir("/df_linux/data/save")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if err = os.RemoveAll(filepath.Join("/df_linux/data/save", file.Name())); err != nil && !os.IsNotExist(err) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
21
it-was-inevitable/config.go
Executable file
21
it-was-inevitable/config.go
Executable file
@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
const (
|
||||
// Pause DF-AI when the queue length gets above this threshold.
|
||||
maxQueuedLines = 1000
|
||||
|
||||
// Unpause DF-AI when the queue length gets below this threshold.
|
||||
minQueuedLines = 500
|
||||
|
||||
// Minimum number of lines before a duplicate is allowed.
|
||||
minLinesBeforeDuplicate = 500
|
||||
|
||||
// Maximum number of "fuzzy" (some words changed) duplicates allowed.
|
||||
maxFuzzyDuplicates = 5
|
||||
|
||||
// Number of lines to remember for "fuzzy" duplicate checking.
|
||||
fuzzyDuplicateWindow = 10
|
||||
|
||||
// Maximum number of words that can differ in a "fuzzy" duplicate.
|
||||
maxFuzzyDifferentWords = 2
|
||||
)
|
14
it-was-inevitable/cp437.go
Executable file
14
it-was-inevitable/cp437.go
Executable file
@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
var cp437 = []rune("\x00☺☻♥♦♣♠•◘○◙♂♀♪♬☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\u00A0")
|
||||
|
||||
func mapCP437(s string) string {
|
||||
b := []byte(s)
|
||||
r := make([]rune, len(b))
|
||||
|
||||
for i, c := range b {
|
||||
r[i] = cp437[c]
|
||||
}
|
||||
|
||||
return string(r)
|
||||
}
|
19
it-was-inevitable/df-ai.json.go
Executable file
19
it-was-inevitable/df-ai.json.go
Executable file
@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
var dfaijson = []byte(`
|
||||
{
|
||||
"camera": false,
|
||||
"cancel_announce": 0,
|
||||
"fps_meter": false,
|
||||
"lockstep": true,
|
||||
"manage_labors": "autolabor",
|
||||
"manage_nobles": true,
|
||||
"no_quit": true,
|
||||
"plan_allow_legacy": false,
|
||||
"plan_verbosity": -1,
|
||||
"random_embark": true,
|
||||
"record_movie": false,
|
||||
"write_console": false,
|
||||
"write_log": false
|
||||
}
|
||||
`[1:])
|
267
it-was-inevitable/game.go
Executable file
267
it-was-inevitable/game.go
Executable file
@ -0,0 +1,267 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/hpcloud/tail"
|
||||
"github.com/kr/pty"
|
||||
)
|
||||
|
||||
func logError(err error, message string) {
|
||||
if err != nil {
|
||||
log.Println(message, err)
|
||||
}
|
||||
}
|
||||
|
||||
func logErrorD(f func() error, message string) {
|
||||
logError(f(), message)
|
||||
}
|
||||
|
||||
type dataBuffer struct {
|
||||
queue []string
|
||||
threshold int
|
||||
recent [minLinesBeforeDuplicate]string
|
||||
fuzzy [fuzzyDuplicateWindow][]string
|
||||
running bool
|
||||
}
|
||||
|
||||
func dwarfFortress(ctx context.Context, buffer *dataBuffer, ch chan<- string) {
|
||||
addch := make(chan string, 100)
|
||||
debugch := make(chan struct{})
|
||||
|
||||
go watchLog(ctx, addch)
|
||||
go watchDebug(ctx, debugch)
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
default:
|
||||
}
|
||||
|
||||
runGame(ctx, buffer, ch, addch, debugch)
|
||||
}
|
||||
}
|
||||
|
||||
func runGame(ctx context.Context, buffer *dataBuffer, ch chan<- string, addch <-chan string, debugch <-chan struct{}) {
|
||||
cmd := exec.CommandContext(ctx, "/df_linux/dfhack")
|
||||
cmd.Env = append(cmd.Env, "TERM=xterm-256color")
|
||||
cmd.Dir = "/df_linux"
|
||||
|
||||
f, err := pty.Start(cmd)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer logErrorD(f.Close, "Closing Pseudo-TTY:")
|
||||
|
||||
exited := make(chan error, 1)
|
||||
go func() {
|
||||
exited <- cmd.Wait()
|
||||
}()
|
||||
|
||||
defer logErrorD(clearSaves, "Removing saved worlds:")
|
||||
|
||||
signal := func(s os.Signal) {
|
||||
logError(cmd.Process.Signal(s), "Sending "+s.String()+":")
|
||||
}
|
||||
|
||||
buffer.running = true
|
||||
first := true
|
||||
|
||||
for {
|
||||
var nextLine string
|
||||
out := ch
|
||||
if len(buffer.queue) == 0 {
|
||||
out = nil
|
||||
} else {
|
||||
nextLine = buffer.queue[0]
|
||||
}
|
||||
|
||||
select {
|
||||
case <-time.After(time.Minute * 30):
|
||||
if buffer.running {
|
||||
log.Println("30 minutes without any log output. Assuming DF is stuck. Resetting.")
|
||||
signal(syscall.SIGTERM)
|
||||
select {
|
||||
case <-time.After(time.Minute):
|
||||
log.Println("Process has not exited. Killing.")
|
||||
signal(syscall.SIGKILL)
|
||||
case <-exited:
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
case out <- nextLine:
|
||||
buffer.queue = buffer.queue[1:]
|
||||
checkQueueLength(buffer, signal)
|
||||
|
||||
case line := <-addch:
|
||||
if isDuplicate(buffer, line) {
|
||||
log.Println("Duplicate detected:", line)
|
||||
continue
|
||||
}
|
||||
|
||||
if first || len(buffer.queue) == 0 {
|
||||
log.Println("First toot queued:", line)
|
||||
first = false
|
||||
}
|
||||
|
||||
buffer.queue = append(buffer.queue, line)
|
||||
checkQueueLength(buffer, signal)
|
||||
|
||||
case err := <-exited:
|
||||
log.Println("Dwarf Fortress process exited:", err)
|
||||
return
|
||||
|
||||
case <-debugch:
|
||||
signal(syscall.SIGKILL)
|
||||
if err := os.Remove("/df_linux/df-ai-debug.log"); err != nil {
|
||||
log.Println("Removing debug log:", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func isDuplicate(buffer *dataBuffer, line string) bool {
|
||||
if minLinesBeforeDuplicate == 0 && fuzzyDuplicateWindow == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
firstLine := line[:strings.IndexByte(line, '\n')]
|
||||
for _, dup := range buffer.recent {
|
||||
if dup == firstLine {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
firstLineWords := strings.Fields(firstLine)
|
||||
fuzzy := 0
|
||||
for _, dup := range buffer.fuzzy {
|
||||
if isFuzzyDuplicate(dup, firstLineWords) {
|
||||
fuzzy++
|
||||
}
|
||||
}
|
||||
if fuzzy > maxFuzzyDuplicates {
|
||||
return true
|
||||
}
|
||||
|
||||
if len(buffer.recent) != 0 {
|
||||
copy(buffer.recent[:], buffer.recent[1:])
|
||||
buffer.recent[len(buffer.recent)-1] = firstLine
|
||||
}
|
||||
if len(buffer.fuzzy) != 0 {
|
||||
copy(buffer.fuzzy[:], buffer.fuzzy[1:])
|
||||
buffer.fuzzy[len(buffer.fuzzy)-1] = firstLineWords
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func isFuzzyDuplicate(dup, words []string) bool {
|
||||
// Only allow changes, not additions or deletions, to simplify this.
|
||||
if len(dup) != len(words) {
|
||||
return false
|
||||
}
|
||||
|
||||
different := 0
|
||||
for i := range dup {
|
||||
if dup[i] != words[i] {
|
||||
different++
|
||||
}
|
||||
}
|
||||
|
||||
return different <= maxFuzzyDifferentWords
|
||||
}
|
||||
|
||||
func checkQueueLength(buffer *dataBuffer, signal func(os.Signal)) {
|
||||
if l := len(buffer.queue); l%100 == 0 && (buffer.threshold >= l+100 || buffer.threshold <= l-100) {
|
||||
buffer.threshold = l
|
||||
log.Println(l, "lines are buffered.")
|
||||
}
|
||||
|
||||
if len(buffer.queue) < minQueuedLines {
|
||||
if !buffer.running {
|
||||
log.Println("Unsuspending Dwarf Fortress")
|
||||
buffer.running = true
|
||||
}
|
||||
signal(syscall.SIGCONT)
|
||||
} else if len(buffer.queue) > maxQueuedLines {
|
||||
if buffer.running {
|
||||
log.Println("Suspending Dwarf Fortress")
|
||||
buffer.running = false
|
||||
}
|
||||
signal(syscall.SIGSTOP)
|
||||
}
|
||||
}
|
||||
|
||||
func watchDebug(ctx context.Context, ch chan<- struct{}) {
|
||||
for {
|
||||
// Wait at least a minute between kills to make sure there's time to clean up.
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-time.After(time.Minute):
|
||||
}
|
||||
|
||||
f, err := tail.TailFile("/df_linux/df-ai-debug.log", tail.Config{
|
||||
Follow: true,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case first := <-f.Lines:
|
||||
log.Println("df-ai crashed! debug log follows:")
|
||||
go func() {
|
||||
f.Kill(f.StopAtEOF())
|
||||
f.Cleanup()
|
||||
}()
|
||||
fmt.Println(first.Text)
|
||||
for line := range f.Lines {
|
||||
fmt.Println(line.Text)
|
||||
}
|
||||
|
||||
ch <- struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func watchLog(ctx context.Context, ch chan<- string) {
|
||||
f, err := tail.TailFile("/df_linux/gamelog.txt", tail.Config{
|
||||
ReOpen: true,
|
||||
Follow: true,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer f.Cleanup()
|
||||
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
f.Kill(ctx.Err())
|
||||
}()
|
||||
|
||||
for line := range f.Lines {
|
||||
if line.Err != nil {
|
||||
log.Println(line.Err)
|
||||
continue
|
||||
}
|
||||
|
||||
text := mapCP437(strings.TrimSpace(line.Text))
|
||||
|
||||
// Chatter messages are formatted as "Urist McName, Occupation: It was inevitable."
|
||||
if i, j := strings.Index(text, ", "), strings.Index(text, ": "); i > 0 && j > i {
|
||||
ch <- text[j+2:] + "\n\u2014 " + text[:j]
|
||||
}
|
||||
}
|
||||
}
|
50
it-was-inevitable/main.go
Executable file
50
it-was-inevitable/main.go
Executable file
@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
cleanup()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
go func() {
|
||||
sigch := make(chan os.Signal, 1)
|
||||
defer signal.Stop(sigch)
|
||||
|
||||
signal.Notify(sigch, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
select {
|
||||
case sig := <-sigch:
|
||||
log.Println(sig, "- cleaning up")
|
||||
case <-ctx.Done():
|
||||
}
|
||||
|
||||
cancel()
|
||||
}()
|
||||
|
||||
buffer := &dataBuffer{
|
||||
queue: make([]string, 0, maxQueuedLines),
|
||||
}
|
||||
|
||||
ch := make(chan string)
|
||||
go dwarfFortress(ctx, buffer, ch)
|
||||
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
select {
|
||||
case <-r.Context().Done():
|
||||
// Client went away before a message was available.
|
||||
case line := <-ch:
|
||||
// Abuse http.Error to just write a textual response.
|
||||
http.Error(w, line, http.StatusOK)
|
||||
}
|
||||
})
|
||||
http.ListenAndServe(":1556", nil)
|
||||
}
|
24
it-was-inevitable/run.sh
Executable file
24
it-was-inevitable/run.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
mode=$1
|
||||
|
||||
if [[ -z "$mode" ]]; then
|
||||
echo 'No tag given. Changing command to ./run.bash example.'
|
||||
mode=dev
|
||||
fi
|
||||
|
||||
docker build -t benlubar/it_was_inevitable .
|
||||
if [[ "$mode" == "dev" ]]; then
|
||||
docker run --rm -ti \
|
||||
--security-opt seccomp="$(pwd)/seccomp.json" \
|
||||
-p 1556:8080 \
|
||||
benlubar/it_was_inevitable
|
||||
else
|
||||
docker stop it_was_inevitable_ || :
|
||||
docker rm -v it_was_inevitable_ || :
|
||||
docker run -d --name it_was_inevitable_ \
|
||||
--restart unless-stopped \
|
||||
--security-opt seccomp="$(pwd)/seccomp.json" \
|
||||
-p 1556:8080 \
|
||||
benlubar/it_was_inevitable
|
||||
fi
|
768
it-was-inevitable/seccomp.json
Executable file
768
it-was-inevitable/seccomp.json
Executable file
@ -0,0 +1,768 @@
|
||||
{
|
||||
"defaultAction": "SCMP_ACT_ERRNO",
|
||||
"archMap": [
|
||||
{
|
||||
"architecture": "SCMP_ARCH_X86_64",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_X86",
|
||||
"SCMP_ARCH_X32"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_AARCH64",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_ARM"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_MIPS64",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_MIPS",
|
||||
"SCMP_ARCH_MIPS64N32"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_MIPS64N32",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_MIPS",
|
||||
"SCMP_ARCH_MIPS64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_MIPSEL64",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_MIPSEL",
|
||||
"SCMP_ARCH_MIPSEL64N32"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_MIPSEL64N32",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_MIPSEL",
|
||||
"SCMP_ARCH_MIPSEL64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "SCMP_ARCH_S390X",
|
||||
"subArchitectures": [
|
||||
"SCMP_ARCH_S390"
|
||||
]
|
||||
}
|
||||
],
|
||||
"syscalls": [
|
||||
{
|
||||
"names": [
|
||||
"accept",
|
||||
"accept4",
|
||||
"access",
|
||||
"adjtimex",
|
||||
"alarm",
|
||||
"bind",
|
||||
"brk",
|
||||
"capget",
|
||||
"capset",
|
||||
"chdir",
|
||||
"chmod",
|
||||
"chown",
|
||||
"chown32",
|
||||
"clock_getres",
|
||||
"clock_gettime",
|
||||
"clock_nanosleep",
|
||||
"close",
|
||||
"connect",
|
||||
"copy_file_range",
|
||||
"creat",
|
||||
"dup",
|
||||
"dup2",
|
||||
"dup3",
|
||||
"epoll_create",
|
||||
"epoll_create1",
|
||||
"epoll_ctl",
|
||||
"epoll_ctl_old",
|
||||
"epoll_pwait",
|
||||
"epoll_wait",
|
||||
"epoll_wait_old",
|
||||
"eventfd",
|
||||
"eventfd2",
|
||||
"execve",
|
||||
"execveat",
|
||||
"exit",
|
||||
"exit_group",
|
||||
"faccessat",
|
||||
"fadvise64",
|
||||
"fadvise64_64",
|
||||
"fallocate",
|
||||
"fanotify_mark",
|
||||
"fchdir",
|
||||
"fchmod",
|
||||
"fchmodat",
|
||||
"fchown",
|
||||
"fchown32",
|
||||
"fchownat",
|
||||
"fcntl",
|
||||
"fcntl64",
|
||||
"fdatasync",
|
||||
"fgetxattr",
|
||||
"flistxattr",
|
||||
"flock",
|
||||
"fork",
|
||||
"fremovexattr",
|
||||
"fsetxattr",
|
||||
"fstat",
|
||||
"fstat64",
|
||||
"fstatat64",
|
||||
"fstatfs",
|
||||
"fstatfs64",
|
||||
"fsync",
|
||||
"ftruncate",
|
||||
"ftruncate64",
|
||||
"futex",
|
||||
"futimesat",
|
||||
"getcpu",
|
||||
"getcwd",
|
||||
"getdents",
|
||||
"getdents64",
|
||||
"getegid",
|
||||
"getegid32",
|
||||
"geteuid",
|
||||
"geteuid32",
|
||||
"getgid",
|
||||
"getgid32",
|
||||
"getgroups",
|
||||
"getgroups32",
|
||||
"getitimer",
|
||||
"getpeername",
|
||||
"getpgid",
|
||||
"getpgrp",
|
||||
"getpid",
|
||||
"getppid",
|
||||
"getpriority",
|
||||
"getrandom",
|
||||
"getresgid",
|
||||
"getresgid32",
|
||||
"getresuid",
|
||||
"getresuid32",
|
||||
"getrlimit",
|
||||
"get_robust_list",
|
||||
"getrusage",
|
||||
"getsid",
|
||||
"getsockname",
|
||||
"getsockopt",
|
||||
"get_thread_area",
|
||||
"gettid",
|
||||
"gettimeofday",
|
||||
"getuid",
|
||||
"getuid32",
|
||||
"getxattr",
|
||||
"inotify_add_watch",
|
||||
"inotify_init",
|
||||
"inotify_init1",
|
||||
"inotify_rm_watch",
|
||||
"io_cancel",
|
||||
"ioctl",
|
||||
"io_destroy",
|
||||
"io_getevents",
|
||||
"ioprio_get",
|
||||
"ioprio_set",
|
||||
"io_setup",
|
||||
"io_submit",
|
||||
"ipc",
|
||||
"kill",
|
||||
"lchown",
|
||||
"lchown32",
|
||||
"lgetxattr",
|
||||
"link",
|
||||
"linkat",
|
||||
"listen",
|
||||
"listxattr",
|
||||
"llistxattr",
|
||||
"_llseek",
|
||||
"lremovexattr",
|
||||
"lseek",
|
||||
"lsetxattr",
|
||||
"lstat",
|
||||
"lstat64",
|
||||
"madvise",
|
||||
"memfd_create",
|
||||
"mincore",
|
||||
"mkdir",
|
||||
"mkdirat",
|
||||
"mknod",
|
||||
"mknodat",
|
||||
"mlock",
|
||||
"mlock2",
|
||||
"mlockall",
|
||||
"mmap",
|
||||
"mmap2",
|
||||
"mprotect",
|
||||
"mq_getsetattr",
|
||||
"mq_notify",
|
||||
"mq_open",
|
||||
"mq_timedreceive",
|
||||
"mq_timedsend",
|
||||
"mq_unlink",
|
||||
"mremap",
|
||||
"msgctl",
|
||||
"msgget",
|
||||
"msgrcv",
|
||||
"msgsnd",
|
||||
"msync",
|
||||
"munlock",
|
||||
"munlockall",
|
||||
"munmap",
|
||||
"nanosleep",
|
||||
"newfstatat",
|
||||
"_newselect",
|
||||
"open",
|
||||
"openat",
|
||||
"pause",
|
||||
"pipe",
|
||||
"pipe2",
|
||||
"poll",
|
||||
"ppoll",
|
||||
"prctl",
|
||||
"pread64",
|
||||
"preadv",
|
||||
"preadv2",
|
||||
"prlimit64",
|
||||
"pselect6",
|
||||
"pwrite64",
|
||||
"pwritev",
|
||||
"pwritev2",
|
||||
"read",
|
||||
"readahead",
|
||||
"readlink",
|
||||
"readlinkat",
|
||||
"readv",
|
||||
"recv",
|
||||
"recvfrom",
|
||||
"recvmmsg",
|
||||
"recvmsg",
|
||||
"remap_file_pages",
|
||||
"removexattr",
|
||||
"rename",
|
||||
"renameat",
|
||||
"renameat2",
|
||||
"restart_syscall",
|
||||
"rmdir",
|
||||
"rt_sigaction",
|
||||
"rt_sigpending",
|
||||
"rt_sigprocmask",
|
||||
"rt_sigqueueinfo",
|
||||
"rt_sigreturn",
|
||||
"rt_sigsuspend",
|
||||
"rt_sigtimedwait",
|
||||
"rt_tgsigqueueinfo",
|
||||
"sched_getaffinity",
|
||||
"sched_getattr",
|
||||
"sched_getparam",
|
||||
"sched_get_priority_max",
|
||||
"sched_get_priority_min",
|
||||
"sched_getscheduler",
|
||||
"sched_rr_get_interval",
|
||||
"sched_setaffinity",
|
||||
"sched_setattr",
|
||||
"sched_setparam",
|
||||
"sched_setscheduler",
|
||||
"sched_yield",
|
||||
"seccomp",
|
||||
"select",
|
||||
"semctl",
|
||||
"semget",
|
||||
"semop",
|
||||
"semtimedop",
|
||||
"send",
|
||||
"sendfile",
|
||||
"sendfile64",
|
||||
"sendmmsg",
|
||||
"sendmsg",
|
||||
"sendto",
|
||||
"setfsgid",
|
||||
"setfsgid32",
|
||||
"setfsuid",
|
||||
"setfsuid32",
|
||||
"setgid",
|
||||
"setgid32",
|
||||
"setgroups",
|
||||
"setgroups32",
|
||||
"setitimer",
|
||||
"setpgid",
|
||||
"setpriority",
|
||||
"setregid",
|
||||
"setregid32",
|
||||
"setresgid",
|
||||
"setresgid32",
|
||||
"setresuid",
|
||||
"setresuid32",
|
||||
"setreuid",
|
||||
"setreuid32",
|
||||
"setrlimit",
|
||||
"set_robust_list",
|
||||
"setsid",
|
||||
"setsockopt",
|
||||
"set_thread_area",
|
||||
"set_tid_address",
|
||||
"setuid",
|
||||
"setuid32",
|
||||
"setxattr",
|
||||
"shmat",
|
||||
"shmctl",
|
||||
"shmdt",
|
||||
"shmget",
|
||||
"shutdown",
|
||||
"sigaltstack",
|
||||
"signalfd",
|
||||
"signalfd4",
|
||||
"sigreturn",
|
||||
"socket",
|
||||
"socketcall",
|
||||
"socketpair",
|
||||
"splice",
|
||||
"stat",
|
||||
"stat64",
|
||||
"statfs",
|
||||
"statfs64",
|
||||
"statx",
|
||||
"symlink",
|
||||
"symlinkat",
|
||||
"sync",
|
||||
"sync_file_range",
|
||||
"syncfs",
|
||||
"sysinfo",
|
||||
"syslog",
|
||||
"tee",
|
||||
"tgkill",
|
||||
"time",
|
||||
"timer_create",
|
||||
"timer_delete",
|
||||
"timerfd_create",
|
||||
"timerfd_gettime",
|
||||
"timerfd_settime",
|
||||
"timer_getoverrun",
|
||||
"timer_gettime",
|
||||
"timer_settime",
|
||||
"times",
|
||||
"tkill",
|
||||
"truncate",
|
||||
"truncate64",
|
||||
"ugetrlimit",
|
||||
"umask",
|
||||
"uname",
|
||||
"unlink",
|
||||
"unlinkat",
|
||||
"utime",
|
||||
"utimensat",
|
||||
"utimes",
|
||||
"vfork",
|
||||
"vmsplice",
|
||||
"wait4",
|
||||
"waitid",
|
||||
"waitpid",
|
||||
"write",
|
||||
"writev"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 0,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 8,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 131072,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 131080,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 262144,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "[ADDR_NO_RANDOMIZE] Allow disabling ASLR (Address Space Layout Randomization), which DFHack needs in order to run.",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"personality"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 4294967295,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"sync_file_range2"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"ppc64le"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"arm_fadvise64_64",
|
||||
"arm_sync_file_range",
|
||||
"sync_file_range2",
|
||||
"breakpoint",
|
||||
"cacheflush",
|
||||
"set_tls"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"arm",
|
||||
"arm64"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"arch_prctl"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"amd64",
|
||||
"x32"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"modify_ldt"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"amd64",
|
||||
"x32",
|
||||
"x86"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"s390_pci_mmio_read",
|
||||
"s390_pci_mmio_write",
|
||||
"s390_runtime_instr"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"s390",
|
||||
"s390x"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"open_by_handle_at"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_DAC_READ_SEARCH"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"bpf",
|
||||
"clone",
|
||||
"fanotify_init",
|
||||
"lookup_dcookie",
|
||||
"mount",
|
||||
"name_to_handle_at",
|
||||
"perf_event_open",
|
||||
"quotactl",
|
||||
"setdomainname",
|
||||
"sethostname",
|
||||
"setns",
|
||||
"umount",
|
||||
"umount2",
|
||||
"unshare"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_ADMIN"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"clone"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 0,
|
||||
"value": 2080505856,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_MASKED_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "",
|
||||
"includes": {},
|
||||
"excludes": {
|
||||
"caps": [
|
||||
"CAP_SYS_ADMIN"
|
||||
],
|
||||
"arches": [
|
||||
"s390",
|
||||
"s390x"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"clone"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [
|
||||
{
|
||||
"index": 1,
|
||||
"value": 2080505856,
|
||||
"valueTwo": 0,
|
||||
"op": "SCMP_CMP_MASKED_EQ"
|
||||
}
|
||||
],
|
||||
"comment": "s390 parameter ordering for clone is different",
|
||||
"includes": {
|
||||
"arches": [
|
||||
"s390",
|
||||
"s390x"
|
||||
]
|
||||
},
|
||||
"excludes": {
|
||||
"caps": [
|
||||
"CAP_SYS_ADMIN"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"reboot"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_BOOT"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"chroot"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_CHROOT"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"delete_module",
|
||||
"init_module",
|
||||
"finit_module",
|
||||
"query_module"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_MODULE"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"acct"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_PACCT"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"kcmp",
|
||||
"process_vm_readv",
|
||||
"process_vm_writev",
|
||||
"ptrace"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_PTRACE"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"iopl",
|
||||
"ioperm"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_RAWIO"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"settimeofday",
|
||||
"stime",
|
||||
"clock_settime"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_TIME"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
"vhangup"
|
||||
],
|
||||
"action": "SCMP_ACT_ALLOW",
|
||||
"args": [],
|
||||
"comment": "",
|
||||
"includes": {
|
||||
"caps": [
|
||||
"CAP_SYS_TTY_CONFIG"
|
||||
]
|
||||
},
|
||||
"excludes": {}
|
||||
}
|
||||
]
|
||||
}
|
11
log.ts
Normal file
11
log.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import chalk from "chalk"
|
||||
import { format } from "date-fns"
|
||||
|
||||
const rawLog = (level, main) => {
|
||||
const timestamp = format(new Date(), "HH:mm:ss")
|
||||
console.log(chalk`{bold ${timestamp}} ${level} ${main}`)
|
||||
}
|
||||
|
||||
export const info = x => rawLog(chalk.black.bgBlueBright("INFO"), x)
|
||||
export const warning = x => rawLog(chalk.black.bgKeyword("orange")("WARN"), x)
|
||||
export const error = x => rawLog(chalk.black.bgRedBright("FAIL"), x)
|
30
luamin-api.js
Executable file
30
luamin-api.js
Executable file
@ -0,0 +1,30 @@
|
||||
const express = require("express")
|
||||
const luamin = require("luamin")
|
||||
|
||||
const app = express()
|
||||
|
||||
app.use(function(req, res, next) {
|
||||
var data = ''
|
||||
req.setEncoding('utf8')
|
||||
req.on('data', chunk => {
|
||||
data += chunk
|
||||
})
|
||||
req.on('end', () => {
|
||||
req.body = data
|
||||
next()
|
||||
})
|
||||
});
|
||||
|
||||
app.post("*", (req, res) => {
|
||||
console.log("Input length:", req.body.length)
|
||||
try {
|
||||
const min = luamin.minify(req.body)
|
||||
console.log("Output length:", min.length)
|
||||
res.send(min)
|
||||
} catch(e) {
|
||||
res.status(400).send(e.toString())
|
||||
}
|
||||
res.end()
|
||||
})
|
||||
|
||||
app.listen(12432)
|
253
naming.elm
Executable file
253
naming.elm
Executable file
@ -0,0 +1,253 @@
|
||||
module RandomNames exposing (..)
|
||||
|
||||
import List.Nonempty as Nonempty
|
||||
|
||||
-- Docker container name generator lists + Ubuntu release names
|
||||
adjectives =
|
||||
[ "admiring"
|
||||
, "adoring"
|
||||
, "affectionate"
|
||||
, "agitated"
|
||||
, "amazing"
|
||||
, "angry"
|
||||
, "artful"
|
||||
, "awesome"
|
||||
, "blissful"
|
||||
, "boring"
|
||||
, "brave"
|
||||
, "breezy"
|
||||
, "clever"
|
||||
, "cocky"
|
||||
, "compassionate"
|
||||
, "competent"
|
||||
, "condescending"
|
||||
, "confident"
|
||||
, "crafty"
|
||||
, "cranky"
|
||||
, "dapper"
|
||||
, "dazzling"
|
||||
, "determined"
|
||||
, "distracted"
|
||||
, "dreamy"
|
||||
, "eager"
|
||||
, "ecstatic",
|
||||
, "edgy"
|
||||
, "elastic"
|
||||
, "elated"
|
||||
, "elegant"
|
||||
, "eloquent"
|
||||
, "epic"
|
||||
, "feisty"
|
||||
, "fervent"
|
||||
, "festive"
|
||||
, "flamboyant"
|
||||
, "focused"
|
||||
, "friendly"
|
||||
, "frosty"
|
||||
, "gallant"
|
||||
, "gifted"
|
||||
, "goofy"
|
||||
, "gracious"
|
||||
, "gutsy"
|
||||
, "happy"
|
||||
, "hardcore"
|
||||
, "hardy"
|
||||
, "heuristic"
|
||||
, "hoary"
|
||||
, "hopeful"
|
||||
, "hungry"
|
||||
, "infallible"
|
||||
, "inspiring"
|
||||
, "intrepid"
|
||||
, "jaunty"
|
||||
, "jolly"
|
||||
, "jovial"
|
||||
, "karmic"
|
||||
, "keen"
|
||||
, "kind"
|
||||
, "laughing"
|
||||
, "loving"
|
||||
, "lucid"
|
||||
, "maverick"
|
||||
, "mystifying"
|
||||
, "modest"
|
||||
, "musing"
|
||||
, "naughty"
|
||||
, "nervous"
|
||||
, "natty"
|
||||
, "nifty"
|
||||
, "nostalgic"
|
||||
, "objective"
|
||||
, "oneiric"
|
||||
, "optimistic"
|
||||
, "peaceful"
|
||||
, "pedantic"
|
||||
, "pensive"
|
||||
, "practical"
|
||||
, "precise"
|
||||
, "priceless"
|
||||
, "quantal"
|
||||
, "quirky"
|
||||
, "quizzical"
|
||||
, "raring"
|
||||
, "relaxed"
|
||||
, "reverent"
|
||||
, "romantic"
|
||||
, "sad"
|
||||
, "saucy"
|
||||
, "serene"
|
||||
, "sharp"
|
||||
, "silly"
|
||||
, "sleepy"
|
||||
, "stoic"
|
||||
, "stupefied"
|
||||
, "suspicious"
|
||||
, "tender"
|
||||
, "thirsty"
|
||||
, "trusty"
|
||||
, "trusting"
|
||||
, "unruffled"
|
||||
, "upbeat"
|
||||
, "utopic"
|
||||
, "vibrant"
|
||||
, "vigilant"
|
||||
, "vigorous"
|
||||
, "vivid"
|
||||
, "warty"
|
||||
, "wily"
|
||||
, "wizardly"
|
||||
, "wonderful"
|
||||
, "xenial"
|
||||
, "xenodochial"
|
||||
, "yakkety"
|
||||
, "youthful"
|
||||
, "zealous"
|
||||
, "zesty"
|
||||
, "zen"
|
||||
]
|
||||
|
||||
-- http://www.birdphotography.com/birdlist2.html
|
||||
birds =
|
||||
[ "albatross"
|
||||
, "auklet"
|
||||
, "bittern"
|
||||
, "blackbird"
|
||||
, "bluebird"
|
||||
, "booby"
|
||||
, "bunting"
|
||||
, "chickadee"
|
||||
, "cormorant"
|
||||
, "cowbird"
|
||||
, "crow"
|
||||
, "dove"
|
||||
, "dowitcher"
|
||||
, "duck"
|
||||
, "eagle"
|
||||
, "egret"
|
||||
, "falcon"
|
||||
, "finch"
|
||||
, "flycatcher"
|
||||
, "gallinule"
|
||||
, "gnatcatcher"
|
||||
, "godwit"
|
||||
, "goldeneye"
|
||||
, "goldfinch"
|
||||
, "goose"
|
||||
, "grackle"
|
||||
, "grebe"
|
||||
, "grosbeak"
|
||||
, "gull"
|
||||
, "hawk"
|
||||
, "heron"
|
||||
, "hummingbird"
|
||||
, "ibis"
|
||||
, "jaeger"
|
||||
, "jay"
|
||||
, "junco"
|
||||
, "kingbird"
|
||||
, "kinglet"
|
||||
, "kite"
|
||||
, "loon"
|
||||
, "magpie"
|
||||
, "meadowlark"
|
||||
, "merganser"
|
||||
, "murrelet"
|
||||
, "nuthatch"
|
||||
, "oriole"
|
||||
, "owl"
|
||||
, "pelican"
|
||||
, "petrel"
|
||||
, "pewee"
|
||||
, "phalarope"
|
||||
, "phoebe"
|
||||
, "pigeon"
|
||||
, "pipit"
|
||||
, "plover"
|
||||
, "puffin"
|
||||
, "quail"
|
||||
, "rail"
|
||||
, "raven"
|
||||
, "redstart"
|
||||
, "sandpiper"
|
||||
, "sapsucker"
|
||||
, "scaup"
|
||||
, "scoter"
|
||||
, "shearwater"
|
||||
, "shrike"
|
||||
, "skua"
|
||||
, "sparrow"
|
||||
, "storm-petrel"
|
||||
, "swallow"
|
||||
, "swift"
|
||||
, "tanager"
|
||||
, "teal"
|
||||
, "tern"
|
||||
, "thrasher"
|
||||
, "thrush"
|
||||
, "titmouse"
|
||||
, "towhee"
|
||||
, "turnstone"
|
||||
, "vireo"
|
||||
, "vulture"
|
||||
, "warbler"
|
||||
, "wigeon"
|
||||
, "woodpecker"
|
||||
, "wren"
|
||||
, "yellowlegs"
|
||||
]
|
||||
|
||||
greekLetters =
|
||||
[ "alpha"
|
||||
, "beta"
|
||||
, "gamma"
|
||||
, "delta"
|
||||
, "epsilon"
|
||||
, "zeta"
|
||||
, "eta"
|
||||
, "theta"
|
||||
, "iota"
|
||||
, "kappa"
|
||||
, "lambda"
|
||||
, "mu"
|
||||
, "nu"
|
||||
, "xi"
|
||||
, "omicron"
|
||||
, "pi"
|
||||
, "rho"
|
||||
, "sigma"
|
||||
, "tau"
|
||||
, "upsilon"
|
||||
, "phi"
|
||||
, "chi"
|
||||
, "psi"
|
||||
, "omega"
|
||||
]
|
||||
|
||||
pick : List a -> Random.Generator a
|
||||
pick =
|
||||
Nonempty.fromList >> Nonempty.sample
|
||||
|
||||
name : String -> List (List String) -> Random.Generator String
|
||||
name separator lists =
|
||||
List.map pick lists
|
||||
|> String.join separator
|
1
realtau.txt
Executable file
1
realtau.txt
Executable file
File diff suppressed because one or more lines are too long
55
thesaurwhy.py
Executable file
55
thesaurwhy.py
Executable file
@ -0,0 +1,55 @@
|
||||
from requests_futures.sessions import FuturesSession
|
||||
import concurrent.futures as futures
|
||||
import random
|
||||
try:
|
||||
import cPickle as pickle
|
||||
except ImportError:
|
||||
import pickle
|
||||
|
||||
try:
|
||||
words_to_synonyms = pickle.load(open(".wtscache"))
|
||||
synonyms_to_words = pickle.load(open(".stwcache"))
|
||||
except:
|
||||
words_to_synonyms = {}
|
||||
synonyms_to_words = {}
|
||||
|
||||
def add_to_key(d, k, v):
|
||||
d[k] = d.get(k, set()).union(set(v))
|
||||
|
||||
def add_synonyms(syns, word):
|
||||
for syn in syns:
|
||||
add_to_key(synonyms_to_words, syn, [word])
|
||||
add_to_key(words_to_synonyms, word, syns)
|
||||
|
||||
def concat(list_of_lists):
|
||||
return sum(list_of_lists, [])
|
||||
|
||||
def add_words(words):
|
||||
s = FuturesSession(max_workers=100)
|
||||
future_to_word = {s.get("https://api.datamuse.com/words", params={"ml": word}): word for word in words}
|
||||
future_to_word.update({s.get("https://api.datamuse.com/words", params={"ml": word, "v": "enwiki"}): word for word in words})
|
||||
for future in futures.as_completed(future_to_word):
|
||||
word = future_to_word[future]
|
||||
try:
|
||||
data = future.result().json()
|
||||
except Exception as exc:
|
||||
print(f"{exc} fetching {word}")
|
||||
else:
|
||||
add_synonyms([w["word"] for w in data], word)
|
||||
|
||||
def getattr_hook(obj, key):
|
||||
results = list(synonyms_to_words.get(key, set()).union(words_to_synonyms.get(key, set())))
|
||||
if len(results) > 0:
|
||||
return obj.__getattribute__(random.choice(results))
|
||||
else:
|
||||
raise AttributeError(f"Attribute {key} not found.")
|
||||
|
||||
def wrap(obj):
|
||||
add_words(dir(obj))
|
||||
|
||||
obj.__getattr__ = lambda key: getattr_hook(obj, key)
|
||||
|
||||
wrap(__builtins__)
|
||||
print(words_to_synonyms["Exception"])
|
||||
|
||||
raise __builtins__.quibble("abcd")
|
12
unhex.py
Executable file
12
unhex.py
Executable file
@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env python3
|
||||
import fileinput
|
||||
import sys
|
||||
|
||||
def process_char(c):
|
||||
return c + random.choice(zalgo)
|
||||
|
||||
for line in fileinput.input():
|
||||
#b = bytes()
|
||||
#for i in range(0, len(line), 2):
|
||||
# b.appendline[i:i+2]
|
||||
sys.stdout.buffer.write(bytes.fromhex(line.replace("\n", "").replace(" ", "")))
|
106
wpdumpidx.rs
Normal file
106
wpdumpidx.rs
Normal file
@ -0,0 +1,106 @@
|
||||
use rusqlite::types::ToSql;
|
||||
use rusqlite::{params, Connection};
|
||||
use std::io::BufRead;
|
||||
use lazy_static::lazy_static;
|
||||
use regex::Regex;
|
||||
use std::io::Seek;
|
||||
|
||||
lazy_static! {
|
||||
static ref INDEX_LINE_RE: Regex = Regex::new(r"^(\d+):(\d+):(.+)$").unwrap();
|
||||
}
|
||||
|
||||
fn decompress_file(filename: &str) -> std::io::Result<std::io::BufReader<bzip2::bufread::BzDecoder<std::io::BufReader<std::fs::File>>>> {
|
||||
let file = std::fs::File::open(filename)?;
|
||||
let file = std::io::BufReader::new(file);
|
||||
let file = bzip2::bufread::BzDecoder::new(file);
|
||||
Ok(std::io::BufReader::new(file))
|
||||
}
|
||||
|
||||
fn import(filename: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
|
||||
let file = decompress_file(filename)?;
|
||||
|
||||
let tx = conn.transaction()?;
|
||||
tx.execute("DELETE FROM page_locations", params![])?;
|
||||
|
||||
for line in file.lines() {
|
||||
let line = &(line)?;
|
||||
let caps = INDEX_LINE_RE.captures(line).unwrap();
|
||||
let title = String::from(caps.get(3).unwrap().as_str());
|
||||
let start = caps.get(1).unwrap().as_str().parse::<i64>()?;
|
||||
|
||||
tx.execute("INSERT INTO page_locations (title, start) VALUES (?1, ?2)", params![title, start])?;
|
||||
}
|
||||
|
||||
tx.commit()?;
|
||||
|
||||
conn.execute("VACUUM", params![])?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn view(page: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
|
||||
let result: Option<rusqlite::Result<i64>> = conn.prepare("SELECT start FROM page_locations WHERE title = ?1")?.query_map(params![page], |row| {
|
||||
Ok(row.get(0)?)
|
||||
})?.nth(0);
|
||||
|
||||
match result {
|
||||
Some(start) => {
|
||||
let start = start?;
|
||||
let file = std::fs::File::open("data.bz2")?;
|
||||
let mut file = std::io::BufReader::new(file);
|
||||
file.seek(std::io::SeekFrom::Start(start as u64))?;
|
||||
let file = bzip2::bufread::BzDecoder::new(file);
|
||||
let file = std::io::BufReader::new(file);
|
||||
|
||||
for result in parse_mediawiki_dump::parse(file) {
|
||||
match result {
|
||||
Err(error) => {
|
||||
eprintln!("Parse Error: {}", error);
|
||||
break;
|
||||
},
|
||||
Ok(page) => if page.namespace == 0 && match &page.format {
|
||||
None => false,
|
||||
Some(format) => format == "text/x-wiki"
|
||||
} && match &page.model {
|
||||
None => false,
|
||||
Some(model) => model == "wikitext"
|
||||
} {
|
||||
println!(
|
||||
"The page {title:?} is an ordinary article with byte length {length}.",
|
||||
title = page.title,
|
||||
length = page.text.len()
|
||||
);
|
||||
} else {
|
||||
println!("The page {:?} has something special to it.", page.title);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
None => {
|
||||
eprintln!("{} not found", page);
|
||||
}
|
||||
};
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<std::error::Error>> {
|
||||
let mut conn = Connection::open("database.sqlite")?;
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS page_locations (
|
||||
title TEXT PRIMARY KEY,
|
||||
start INTEGER
|
||||
)",
|
||||
params![],
|
||||
)?;
|
||||
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
|
||||
match args[1].as_str() {
|
||||
"import" => import("index.bz2", &mut conn)?,
|
||||
"view" => view(&args[2], &mut conn)?,
|
||||
_ => eprintln!("Invalid argument {}", args[1])
|
||||
};
|
||||
|
||||
Ok(())
|
||||
}
|
37
wssh.py
Executable file
37
wssh.py
Executable file
@ -0,0 +1,37 @@
|
||||
import asyncio
|
||||
import asyncio.subprocess
|
||||
import websockets
|
||||
import pty
|
||||
|
||||
def get_shell():
|
||||
pty.spawn("/bin/fish")
|
||||
return asyncio.create_subprocess_exec("/bin/fish", stdout=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, bufsize = 0)
|
||||
|
||||
async def input_handler(proc, ws):
|
||||
while True:
|
||||
msg = await ws.recv()
|
||||
await ws.send(msg)
|
||||
print(msg)
|
||||
|
||||
async def output_handler(proc, ws):
|
||||
while True:
|
||||
output = (await proc.stdout.readline()).decode("utf-8")
|
||||
if output != "":
|
||||
print(output)
|
||||
await ws.send(output)
|
||||
await ws.send("[PROCESS ENDED]")
|
||||
|
||||
async def shell_ws(ws, _):
|
||||
proc = await get_shell()
|
||||
|
||||
done, pending = await asyncio.wait(
|
||||
[asyncio.ensure_future(input_handler(proc, ws)), asyncio.ensure_future(output_handler(proc, ws))],
|
||||
return_when=asyncio.FIRST_COMPLETED
|
||||
)
|
||||
|
||||
for task in pending:
|
||||
task.cancel()
|
||||
|
||||
server = websockets.serve(shell_ws, "localhost", 1234)
|
||||
asyncio.get_event_loop().run_until_complete(server)
|
||||
asyncio.get_event_loop().run_forever()
|
Loading…
Reference in New Issue
Block a user