Get boot2docker working with nfs instead of vboxsf.
Tested on:
- Boot2Docker-cli version: v1.6.0
Git commit: 9894ae9
- Boot2Docker-cli version: v1.6.2
Git commit: cb2c3bc
package nl.mdj.fpinscala | |
import scala.concurrent.Future | |
import scala.concurrent.duration._ | |
import akka.actor.ActorSystem | |
import akka.pattern.after | |
import akka.stream.{ActorFlowMaterializer, FlattenStrategy} | |
import akka.stream.scaladsl.{Source => S, Flow} | |
import akka.stream.scaladsl.FlowGraph.Implicits._ |
Get boot2docker working with nfs instead of vboxsf.
Tested on:
- Boot2Docker-cli version: v1.6.0
Git commit: 9894ae9
- Boot2Docker-cli version: v1.6.2
Git commit: cb2c3bc
之前曾經寫過一篇 什麼是Monad? ,裡面提到了對於Monad的解釋,而今天進一步解釋這些在Functional Programming中常見到的詞:Functor, Applicative, Monad, Semigroup, Monoid。 透過放在一起比較,讓我們更清楚這些之間的差別與關係。
##Functor
在提到Functor之前,請先了解一下scala中map的作用,map可以讓你傳入一個function,而透過這個function是可以從F[A]轉換成F[B],這裡的F不管他(就是代表外面的包裝不會變),而裡面的A型態轉成B型態。
例如:
- name: set swap_file variable | |
set_fact: | |
swap_file: /{{ swap_space }}.swap | |
- name: check if swap file exists | |
stat: | |
path: "{{ swap_file }}" | |
register: swap_file_check | |
- name: create swap file |
package com.softwaremill.freemonads | |
import cats.free.Free | |
import cats.~> | |
import cats._, cats.std.all._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
import scala.concurrent.Future | |
sealed trait External[A] | |
case class Tickets(count: Int) extends AnyVal |
// allows converting one class to another by providing missing fields | |
object convert { | |
@annotation.implicitNotFound(""" | |
You have not provided enough arguments to convert from ${In} to ${Out}. | |
${Args} | |
""") | |
trait Convertible[Args, In, Out] { | |
def apply(args: Args, in: In): Out | |
} |
Services declared as oneshot
are expected to take some action and exit immediatelly (thus, they are not really services,
no running processes remain). A common pattern for these type of service is to be defined by a setup and a teardown action.
Let's create a example foo
service that when started creates a file, and when stopped it deletes it.
Create executable file /opt/foo/setup-foo.sh
:
'use strict'; | |
export default function transformer(file, api) { | |
const j = api.jscodeshift; | |
const {expression, statement, statements} = j.template; | |
const root = j(file.source); | |
return root | |
.find(j.Program, { | |
body: [ | |
j.AssignmentExpression |
#!/usr/bin/env bash | |
# This script is meant to build and compile every protocolbuffer for each | |
# service declared in this repository (as defined by sub-directories). | |
# It compiles using docker containers based on Namely's protoc image | |
# seen here: https://github.com/namely/docker-protoc | |
set -e | |
REPOPATH=${REPOPATH-/opt/protolangs} | |
CURRENT_BRANCH=${CIRCLE_BRANCH-"branch-not-available"} |
#cloud-config | |
resize_rootfs: false | |
disk_setup: | |
/dev/sda: | |
table_type: 'mbr' | |
layout: | |
- 25 | |
- 75 | |
overwrite: true |