- Scalaz
- Scalaz-stream
- Scala + Akka
- Scala Spray for http
- ScalaTest + Scala
- Google Guava: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
- Scala + Play (web development)
- Scala + BlueEyes (web development https://github.com/jdegoes/blueeyes)
1) Install package control in sublime: http://wbond.net/sublime_packages/package_control/installation. For the impatient: | |
a) Ctl-` (control backtick, might be command-backtick for macsters) | |
b) Paste the following: | |
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation') | |
c) Hit enter | |
d) Restart sublime | |
2) Install the git package (https://github.com/kemayo/sublime-text-2-git/wiki): | |
a) Bring up the Command Palette (Command+Shift+p on OS X, Control+Shift+p on Linux/Windows). | |
b) Select "Package Control: Install Package" (it'll take a few seconds) |
Web applications are increasingly taking over the functions of native applications. This year has seen an increase of (streaming) audio web applications, such as Rdio, Spotify, Pandora, etc. These applications are long-running applications and provide multimedia to the user, often while the user is doing something else.
Interaction with this type of application works the same as with other applications: the user brings the tab/window in focus and manipulates the application through mouse, keyboard or other input device. Bringing the application into focus is required in order to interact with the application and thus requires the user to get out of the current workflow.
In native applications this problem is fixed by letting applications bind to specific multimedia buttons situated on the keyboard. These buttons serve as a way to interact with the media player without bringing the application into focus. This is currently impossible for web applications for t
Raven.config(dsn, { | |
dataCallback(data) { | |
const normalize = filename => filename.split('/www/', 2)[1] | |
data.exception.values[0].stacktrace.frames.forEach(frame => { | |
frame.filename = normalize(frame.filename) | |
}) | |
data.culprit = data.exception.values[0].stacktrace.frames[0].filename |
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<VideoView | |
android:id="@+id/my_video_view" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:layout_gravity="center" /> |
#To install: | |
# | |
#Requires coffe script installed globally: sudo npm install -g coffee-script | |
# | |
#In your git configuration (for instance, .git/config to do it at the project level), add: | |
# | |
#[merge "json_merge"] | |
# name = A custom merge driver for json files | |
# driver = coffee json_merge.coffee %O %A %B | |
# recursive = binary |
/***************************************** | |
/* DOM touch support module | |
/*****************************************/ | |
if (!window.CustomEvent) { | |
window.CustomEvent = function (event, params) { | |
params = params || { bubbles: false, cancelable: false, detail: undefined }; | |
var evt = document.createEvent('CustomEvent'); | |
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); | |
return evt; | |
}; |
# installs to /opt/gradle | |
# existing versions are not overwritten/deleted | |
# seamless upgrades/downgrades | |
# $GRADLE_HOME points to latest *installed* (not released) | |
gradle_version=2.9 | |
wget -N https://services.gradle.org/distributions/gradle-${gradle_version}-all.zip | |
sudo unzip -foq gradle-${gradle_version}-all.zip -d /opt/gradle | |
sudo ln -sfn gradle-${gradle_version} /opt/gradle/latest | |
sudo printf "export GRADLE_HOME=/opt/gradle/latest\nexport PATH=\$PATH:\$GRADLE_HOME/bin" > /etc/profile.d/gradle.sh | |
. /etc/profile.d/gradle.sh |
const HandlerRunner = require("serverless-offline/dist/lambda/handler-runner/index").default; | |
class OfflineInvalidate { | |
constructor(serverless, options) { | |
this.serverless = serverless; | |
this.hooks = { | |
"before:offline:start:init": (opts) => this.inject() | |
}; | |
this.lastRunner = {}; | |
} |
- Create two user accounts
- Administration account
- Kiosk Account - This account will be locked down with Parental Controls
- Set up remote management
- We are using Screens 4
- See Screens documentation Configuring macOS for Remote Access
- Install kiosk software
- We use a role-based Apple ID (ex: webmaster@[institution].org) to manage macOS software. Managing Apps this way saves lots of headaches.