Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

Javaプロジェクト

第7章 Javaクイックスタート

Gradleのプラグインを使ったり書いたりする。

# javaプラグイン

apply plugin: 'java'

ここでファイル構成は

build.gradle
src/main/java/
src/main/resource/
src/test/java/
src/test/resource/

としておく。

main.javaの下にhello.javaを置く。

public class hello {
    public static void main(String[] args){
        System.out.println("Hello World!!");
    }
}

gradle buildを実行するとビルドできる。
buildフォルダが作られ、その中のlibsフォルダにhellojava.jarができる。tmpフォルダもできる。

他のタスクとして
1. clean
2. assemble jarは生成するがコンパイルはしない。

他のリポジトリ等の追加は

apply plugin: 'java'

repositories {
  mavenCentral()
}

jarファイルの公開はuploadArchives

ハローワールド

以下が詳しい。
Gradle User Guide


helloディレクトリにbuild.gradleファイルを作り以下を記述(Groovy)

task hello doLast {
  println "Hello, world!"
}

コンソールで実行する。

>  gradle hello

依存関係をつける。

task hello doLast {
  println "Hello, world!"
}

task hi(dependsOn: hello) {
  println "hi"
}

これでgradle helloをすると、hiが実行された後にhelloが実行される。

5.times { x ->
    task "count_$x" doLast {
      println "number $x"
    }
}

のように動的にタスクを定義して、これを
コンソールで実行する。

>  gradle count_3

のように実行できる。

タスクは依存関係を追加できる。

5.times { x ->
    task "count_$x" doLast {
      println "number $x"
    }
}

count_3.dependsOn count_1, count_2

タスクはアクションを追加できる。

task hello doLast {
  println "Hello, world!"
}

hello.doFirst {
  println "addFirst!"
}

hello.doLast {
  println "addLast!"
}

hogeタスクに拡張プロパティを定義(extを使う)、他のタスクでそれを使う。

task hoge {
    ext.fuga = "3"
}

task printHoge doLast {
    println hoge.fuga
}

デフォルトタスクの設定、これでgradleとするとデフォルトのタスクが呼ばれる。

defaultTaskes 'hello', 'printHoge'

実行タスクにhogehogeタスクがあるかどうかで振る舞いをかえる。

task printVersion doLast {
  println "version = $version"
}

task hogehoge(dependsOn: 'printVersion') {
  println "do task hogehoge"
}

gradle.taskGraph.whenReady {taskGraph ->
  if (taskGraph.hasTask(hogehoge)) {
    version = '1.0hogehoge'
  } else {
    version = '1.0'
  }
}



1. build.gradle タスクを定義する。プロジェクトを定義する。
2. gradle.propeties ビルドに使うプロパティを設定する。
3. settings.gradle プロジェクトが複数ある場合にどのプロジェクトを使うか

Gradleの基本

プロジェクトとタスク
一つのビルドは一つ以上のプロジェクトを使って行われる。
一つのプロジェクトは一つ以上のタスクから構成されている。

Codable

参照
Codableについて色々まとめた[Swift4] - Qiita
Codableで色々なJSONに対応する - Qiita
Swift4のCodableでフラットなJSONからネストしたオブジェクトにデコードする - Qiita
Codableのinit(from:)をどう書くか / 20170621 #wwdc_ebisu // Speaker Deck
Swift 4でJSONの扱い - Galapagos Engineering Blog


使ってみた例

gist4d39fed7efb96d0cc49e873f3595cd0b

ビットフラグ

ビットフラグはOpsionSetを定義すると使える。

    struct Hoge : OptionSet {
        let rawValue : Int
        
        static let a = Hoge(rawValue: 0b0001)
        static let b    = Hoge(rawValue: 0b0010)
        static let c    = Hoge(rawValue: 0b0100)
        static let all:Hoge   = [.a, .b, .c]
        static let ab:Hoge = all.subtracting(.c)
        
        func isNonEmpty() -> Bool {
            return !self.isEmpty
        }
        
        func isIntersect(_ v:Hoge) -> Bool {
            return self.intersection(v).isNonEmpty()
        }
        
    }

アクティビティ図

フローチャート代わりに使える。

テンプレ的に以下

```plantuml
title <size:18>Sample</size>

(*) --> "A"

if "State" then
    partition "PartA"
        --> [a] "B" as hoge
    end partition
else
    -> [b] "C"
    --> "D"
endif

partition "PartA" {
    hoge --> ===fork===

    ===fork=== --> "E"
    --> ===join===

    ===fork=== --> "F"
    --> ===join===

    ===join=== --> "G"
}
-->(*)
note right : H
```

f:id:KatagiriSo:20171213122633p:plain

詳細は以下を参照
yohshiy.blog.fc2.com

最初

作る sqlite3設定

rodhos.hatenadiary.jp

命令群

./bin/cake bake migration CreateProducts name:string description:text created modified
./bin/cake migrations migrate
./bin/cake bake seed Product
./bin/cake migrations seed
./bin/cake bake model Products
./bin/cake bake controller Products
./bin/cake bake template Products

sqlite3

.tables
select description, modified, created  from products;

ローカルで確認

./bin/cake server
http://localhost:8765/Products