確かそういう感じのプラグインがある。
wgetしたらいいかもしれませんけど。
https://groups.google.com/forum/#!topic/rundeck-discuss/0rdusoe1MSQ
確かそういう感じのプラグインがある。
wgetしたらいいかもしれませんけど。
https://groups.google.com/forum/#!topic/rundeck-discuss/0rdusoe1MSQ
言葉として、覚えておくたぐいのもの。
企業が業務を効率的に進めるためのアプリケーションやソフトウェアなどを、インターネット経由で提供するサービスである。システムの買取ではなく、使用規模に応じた利用料を支払うレンタル形式のため、ユーザ企業は、ソフトウェア開発などに掛かるコストが必要なく、日数に応じた利用料のみでシステムの導入ができるメリットがある
Affliate Service Providerではない。
勉強会3章-4章(社内)のメモ
なんでLispは括弧だらけなのか
シンタックス テキストが正しい文を構成するために必要な、基本的な規則 セマンティクス 文の意味。多くの場合、同じセマンティクスを持つプログラムを異なるプログラミング言語で書くことができる
Lispは単純なシンタックスを持つ
cf. C++ 様々なシンタックスがあるので、例えばコンパイラを作ろうとしたら大変な仕事になる。
その点、Lispはシンタックスが非常にシンプルなのでコンパイラもインタプリタも簡単に作れる(≒機械に優しい)
Lispは括弧を使ってコードをリスト化するだけ。
[1]> (defun square (n) (* n n)) SQUARE [2]> (square 4) 16
Lisp の最も基本的なデータ型で、あらゆるところで使われる、独立した単語。なお、下の例もあるように、大文字小文字は区別しない(このあたりはPHPもそんな感じだった気がする)
[3]> (eq 'fooo 'FoOo) T
Lisp は浮動小数点数と整数の両方をサポート
オペランドの片方の型が浮動小数点だったら演算結果も浮動小数点。
[4]> (+ 1 1.0) 2.0
大きな数の演算も軽くできちゃう
[5]> (expt 53 53) 24356848165022712132477606520104725518533453128685640844505130879576720609150223301256150373
除算は有理数を返す
[6]> (/ 4 6) 2/3
2/3=0.666666みたいにしたい場合は、やっぱりオペランドの片方を小数点にするといい。
[7]> (/ 4.0 6) 0.6666667
文字列を出力したいときはprincを使う。なお、2回出ているのは、princで表示されたものと、princ自身の戻り値。
[8]> (princ "Tutti Frutti") Tutti Frutti "Tutti Frutti" [9]> (princ "He yelled \"Stop that thief!\" from the busy street.") He yelled "Stop that thief!" from the busy street. "He yelled \"Stop that thief!\" from the busy street."
Common Lispはコードモードとデータモードを行ったり来たりしている
[10]> (expt 2 (+ 3 4)) 128
[11]> '(expt 2 3) (EXPT 2 3)
[12]> (cons 'chicken 'cat) (CHICKEN . CAT)
ScalaやHaskellでいうところのhead/tail
[13]> (car '(pork beef chicken)) PORK [14]> (cdr '(pork beef chicken)) (BEEF CHICKEN)
cdr→car
[15]> (cadr '(pork beef chicken)) BEEF
List(1,2,3) List[1,2,3]
[16]> (list 'pork 'beef 'chicken) (PORK BEEF CHICKEN)
ネストしてても変わらない
[19]> (car '((peas carrots tomatoes) (pork beef chicken))) (PEAS CARROTS TOMATOES) [20]> (cdr '(peas carrots tomatoes)) (CARROTS TOMATOES) [21]> (cdr (car '((peas carrots tomatoes) (pork beef chicken)))) (CARROTS TOMATOES) [22]> (cdar '((peas
[63]> (cons (cons 'pork 'ch) (cons 'chick 'po))) ((PORK . CH) CHICK . PO)
[73]> (cons (cons 'pork 'ch) (cons 'chick 'po)) ((PORK . CH) CHICK . PO)
scala> List(1,2) :: List(3,4) res3: List[Any] = List(List(1, 2), 3, 4)
空とは偽なり 空のリストはfalse
[23]> (if '() 'i-am-true 'i-am-false) I-AM-FALSE [24]> (if '(1) 'i-am-true 'i-am-false) I-AM-TRUE
[33]> (if (= (+ 1 2) 3) 'yup 'nope) YUP [34]> (if (= (+ 1 2) 4) 'yup 'nope) NOPE
[35]> (defvar *number-is-odd* nil) *NUMBER-IS-ODD* [36]> (when (oddp 5) (setf *number-is-odd* t) 'odd-number) ODD-NUMBER [37]> *number-is-odd* T
(defvar *arch-enemy* nil) (defun pudding-eater (person) (cond ((eq person 'henry) (setf *arch-enemy* 'stupid-lisp-alien) '(curse you lisp alien – you ate my pudding)) ((eq person 'johnny) (setf *arch-enemy* 'useless-old-johnny) '(i hope you choked on my pudding johnny)) (t '(why you eat my pudding stranger ?)))) (pudding-eater 'johnny) (pudding-eater 'george-clooney)
先の例はcondを使わずとも書き直せる
[76]> (defun pudding-eater (person) (case person ((henry) (setf *arch-enemy* 'stupid-lisp-alien) '(curse you lisp alien – you ate my pudding)) ((johnny) (setf *arch-enemy* 'useless-old-johnny) '(i hope you choked on my pudding johnny)) (otherwise '(why you eat my pudding stranger ?))))
これは他の言語のor条件とかand条件とかと変わらない
[78]> (and (oddp 5) (oddp 7) (oddp 9)) T [79]> (and (oddp 5) (oddp 7) (oddp 8)) NIL [80]> (or (oddp 4) (oddp 7) (oddp 8)) T [81]> (or (oddp 4) (oddp 6) (oddp 8)) NIL
TもNILも返さない関数。
[82]> (if (member 1 '(3 4 1 5)) 'one-is-in-the-list 'one-is-not-in-the-list) ONE-IS-IN-THE-LIST
[83]> (member 1 '(3 4 1 5)) (1 5)
オペランドがシンボルだとわかっているならeqのほうが断然速いし、もしシンボル同士の比較でeq以外を使っていたらバカにされるレベル。
[84]> (defparameter *fruit* 'apple) *FRUIT* [85]> (cond ((eq *fruit* 'apple) 'its-an-apple) ((eq *fruit* 'orange) 'its-an-orange)) ITS-AN-APPLE
シンボル同士の比較でなければequalのほうがよい
[86]> (equal (list 1 2 3) (list 1 2 3)) T [87]> (equal '(1 2 3) (cons 1 (cons 2 (cons 3 ())))) T
eql 数字も文字も比較できる
[88]> (eql 'foo 'foo) T [90]> (eql 3.4 3.4) T
equalp 複雑な比較の場合について equalよりもう少し賢い判断をする。ここでいう賢いとは、文字列について大文字小文字の使い方が異なるものでも比較可能とか、そういうの。
[91]> (equalp "Bob Smith" "bob smith") T [92]> (eql "Bob Smith" "bob smith") NIL [93]> (eq "Bob Smith" "bob smith") NIL [94]> (equal "Bob Smith" "bob smith") NIL