git logをctrl+cで終了すると、それ以降のコマンドが表示されないの続き

f:id:orangeclover:20170301214430p:plain

Conemu+Gitのbashでgit logをctrl+cで終了すると、それ以降のコマンドが表示されないの続き。
疑問は残ったまま。

発端

そうね、Linuxだとqで止めてるんだけど、Windowsだと、たまにCtrl+cに指が動いてしまう。

これ書いていて気づいた。 Git Bashって、Gitインストール先\bin\bash.exeじゃなくて、Gitインストール先\git-bash.exeなのね。

mintty と書いたのは、Git Bashで、Gitインストール先\bin\bash.exeのこと。 なので、改めて確認。

git-bash.exeとbash.exeでCtrl+cで止める

スクロール待ちになっている状態のgit logと普通に起動したlessに対して、
Ctrl+cで止める。

ターミナル git log less
git-bash 終了して、それ以降のコマンドも正常に表示される 終了しない
bash 終了して、それ以降のコマンドは表示されない 終了しない

bashだと発生する。conemu関係なかった。

kill -INTで止めるとどうなるか?

スクロール待ちになってる状態のgit logと、git logから起動したless対して
kill -INTで止める。

ターミナル git log less
git-bash 終了して、それ以降のコマンドも正常に表示される 終了しない
bash 終了して、それ以降のコマンドも正常に表示される 終了しない

送信するシグナルの確認

git-bashでもbashでも、stty -aの実行結果はintr = ^C;なので同じはず。

疑問

killで指定したプロセスに対してSIGINTだと問題ないということは、
bashCtrl+cでプロセスグループに属する全プロセスに対して送信するとダメのか?
そこに、Git bashbashの違いがあるのか?
分からん。だれか教えて。

Conemu+Gitのbashでgit logをctrl+cで終了すると、それ以降のコマンドが表示されない

現象

ConemuのGit for WindowsBash上で、git logを実行しCtrl+cで終了すると、それ以降の
入力したコマンドが表示されない。
コマンドは実行されて、標準出力、標準エラーは表示される。

Git for WindowsBashとは、gitインストール先\bin\bash.exeのこと

再現手順

  1. ConemuでGit for WindowsBashを開く。
  2. git loggit diffなどを実行する。
  3. 2.の出力表示が2ページ以上で、スクロール待ちの状態にする。
  4. Ctrl + cで2.のコマンドを終了する。
  5. 何らかのコマンドを入力して、Enterで実行する。 f:id:orangeclover:20170222212313g:plain

発生しない条件

  • ConemuとGit for WindowsBashで、Ctrl +Cの代わりにqで終了した場合は、問題は発生しない
  • ConemuとGit for WindowsBashで、lessを使用した場合は、そもそもCtrl+Cでの終了を受け付けない
  • Git for Windowsに付属するGit Bash(mintty)上では、git loggit diffをCtrl+cで
    終了しても問題は発生しない

環境

  • OS
    Windows 10 バージョン1607(ビルド14393.693)
  • Git
    git version 2.11.1.windows.1
  • Conemu
    161206 stable
  • CoemuからGit for WindowsBashを起動する設定。
  -new_console:d:C:\Users\clover -cur_console:C:C:\usr\opt\git\etc\git.ico C:\opt\git\bin\bash.exe --login -i 

原因

分からない。
Git bash(mintty)で発生しないということは、Conemuの問題なのか?

実験

復旧方法の実験

コマンド 結果
clear 戻らない
echo ^[c 戻らない
reset 正常に戻る
stty sane 正常に戻る

復旧方法

Ctrl + cで終了させてしまい、コマンドが表示でされなくなってしまったら、resetstty saneを 実行して 端末制御をきれいにすると、コマンドが表示されるようになる。

抑止方法

qで終了させる。 Ctrl + cの終了で正常に終了させる方法はわからない。

参考

Git for Windows 2.xでプロンプトの設定(PS1)にブランチ名と改行を入れるとsyntax errorになる

f:id:orangeclover:20170218215924p:plain

Git for Widnows 2系に上げてから、設定(PS1)にブランチ名と改行を入れるとsyntax errorに
なるようになった。 対処方法がわからなかったので、しばらく、改行を外していて放置してた。

現象

bash: command substitution: line 1: syntax error near unexpected token `)'
bash: command substitution: line 1: `__git_ps1)'

条件

  1. Git for Widnows 2.xを使用してる。
  2. PS1に__git_ps1でブランチ名を設定してる。
  3. PS1に改行(\n)を設定している。


export PS1='\w$(__git_ps1)\n\$ '

問題にならない条件

  • Git for Widnows 2.xでも以下の条件ではsyntax errorにならない

    • ブランチ名がない場合
      export PS1='\w\n\$ '
    • 改行の設定がない場合
      export PS1='\w$(__git_ps1)\$ '
  • Git for Widnows 1.xを使っている場合はsyntax errorにならない

  • Linuxで、Gitを使ってる場合はsyntax errorにならない

環境

以下の環境だとsyntax errorになる。

調査

LinuxではGit 1.x、2.xでも発生しないから、Git for Widnowsの問題だろう。
WindowsだとGit 1.xでは問題なかった。
2.xになってから、なにか変更があったっぽい。

ぐぐったら事例は出てきた。
PS1 bash command substitution not working on windows 10

'\n$'$'\n$ 'にすればいいみたい。

なんで?
Cygwinの事例なら、原因が書いてあった。
Cygwin のプロンプトに Git のブランチを表示する(シンタックスエラーが発生した場合の対策あり)

構文解析でエラー

Cygwin 環境では $PS1 のコマンド置換でシンタックスエラーが出ることがあります。

-bash: command substitution: line 1: syntax error near unexpected token `)‘
-bash: command substitution: line 1: `__git_ps1)’
これは改行コード CR を無視する Cygwin 独自のシェルオプション igncr による影響の
ようです。igncr が設定されている場合,$PS1 内で $( ) 形式のコマンド置換の後に
\n が続くと構文解析に失敗してしまいます。バッククォートによる旧式のコマンド置換
ではこの現象は発生しません。

CRが悪さしてるのか。
igncrの設定がGit for Widnows 2.xから変わった?

確認してみる。

Git for Windows 1.9.4の環境

 $ git --version
 git version 1.9.4.msysgit.1
 $ bash --version
 GNU bash, version 3.1.0(1)-release (i686-pc-msys)
 Copyright (C) 2005 Free Software Foundation, Inc.
 $ set -o
 allexport       off
 braceexpand     on
 emacs           on
 errexit         off
 errtrace        off
 functrace       off
 hashall         on
 histexpand      on
 history         on
 ignoreeof       off
 interactive-comments    on
 keyword         off
 monitor         on
 noclobber       off
 noexec          off
 noglob          off
 nolog           off
 notify          off
 nounset         off
 onecmd          off
 physical        off
 pipefail        off
 posix           off
 privileged      off
 verbose         off
 vi              off
 xtrace          off

igncrの項目は無い。無いけど有効になっているのか?

Git for Windows 2.11.1

$ set -o |grep igncr
igncr           off

offだな。

2.xでなにが変更になったかは、確認できず。。。

対処

対処は、Cygwin のプロンプトに Git のブランチを表示する(シンタックスエラーが発生した場合の対策あり)に載っているもののうちの以下の2つ。

  • バッククォート形式にする
    export PS1='\w`__git_ps1`\n\$ '

  • 改行を$‘\n'にする
    export PS1='\w$(__git_ps1)'$'\n$ '

後者を選択。

$‘\n'ってなに?

BASHより

$‘string’ の形式を持つ単語は特殊な扱いを受けます。 この単語は string に展開され、
それから ANSI C 標準で仕様が決められている、 バックスラッシュでエスケープされている
文字に置き換えられます。 バックスラッシュエスケープシーケンスは、 (もし存在すれば)
以下のようにデコードされます:

(省略)

  • \n
    改行

vagrant のプロビジョニングでgit cloneがSSHの認証エラーになる

f:id:orangeclover:20151003210200j:plain

やりたいこと

初回のvagrant up、vagrant up --provision、vagrant provisionでの
プロビジョニングでgithubやbitbucketからクローンしたい。

が、エラーになってしまう。
vagrant sshでログインしてからのgit cloneは成功する。
provisionでやろうとするとエラーになる。
なんかWindows版のバグ踏んでるんだろうか。。。
ホストがWindowsでうまくいってる方がいたら教えて下さい。

エラー

==> default: Cloning into '/path/to/repository'...
==> default: Error reading response length from authentication socket.
==> default: Permission denied (publickey).
==> default: f
==> default: atal:
==> default: C
==> default: ould not read from remote repository.
==> default:
==> default: Please make sure you have the correct access rights
==> default: and the repository exists.
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

vagrantfile

Vagrant provision でも SSH Agent Forwarding するを参考に、 forward_agent、privileged、StrictHostKeyCheckingの設定をしている。

config.ssh.forward_agent = true
config.vm.provision "shell",privileged: false, inline: <<-SHELL
    sudo apt-get install -y git-core
    echo -e "Host bitbucket.org" > ~vagrant/.ssh/config
    echo -e "    StrictHostKeyChecking no" >> ~vagrant/.ssh/config
    git clone git@bitbucket.org:path/to/private/repository /path/to/repository 
SHELL

手順

$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rsa.bitbucket.org
$ vagrant up --provision

確認したこと

privileged

provisionでidコマンドを実行すると以下になっているので、privilegedの設定は有効になっていて vagrantユーザーで動作してる。

 ==> default: uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant)

SSH Agent Fowrdingの設定

vagrant sshでログインしてからgit cloneするとパスワード入力せずに認証できるから、設定は問題ない。

remote: Counting objects: 17370, done.
remote: Compressing objects: 100% (11174/11174), done.

provisionでssh-add -lを実行するとエラーになってる

    Error reading response length from authentication socket.

環境

Windows + VirtualBox 5.0 + Vagrant 1.7.3 でエラー(chown: changing ownership of `/vagrant': Not a directory)になる

Oracle VM VirtualBox 5.0 + Vagrant 1.7.3 でchown: changing ownership of `/vagrant': Not a directory のエラーになるんだけど、対処方法がわからない。 教えてください。

現象

    Vagrant assumes that this means the command failed!
    
    chown `id -u vagrant`:`id -g vagrant` /vagrant
    
    Stdout from the command:
    
    
    
    Stderr from the command:
    
    stdin: is not a tty
    chown: changing ownership of `/vagrant': Not a directory

環境

vagrant-vbguest を入れてみたけどダメだった。

http://kashewnuts.bitbucket.org/2013/08/25/vagrantvbguest.html

Guest Additions の Version が古いのが原因らしい。
なので、自動的にGuest Additionsを更新してくれるプラグインを導入。

とあるので、これを試してみた。 vagrant plugin install vagrant-vbguest の後、vagrant upしてみたが、 エラーは変わらず。

clover@NARANJA ~
$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.10.0)'!

clover@NARANJA /c/MyVM/ubuntu1204
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
GuestAdditions versions on your host (5.0.0) and guest (4.2.0) do not match.
stdin: is not a tty
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  fakeroot linux-headers-3.2.0-23 patch
Suggested packages:
  diffutils-doc
The following NEW packages will be installed:
  dkms fakeroot linux-headers-3.2.0-23 linux-headers-3.2.0-23-generic patch
0 upgraded, 5 newly installed, 0 to remove and 66 not upgraded.
Need to get 12.6 MB of archives.
After this operation, 68.2 MB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main patch amd64 2.6.1-3 [80.2 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main dkms all 2.2.0.3-1ubuntu3 [73.1 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ precise/main fakeroot amd64 1.18.2-1 [87.2 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ precise/main linux-headers-3.2.0-23 all 3.2.0-23.36 [11.4 MB]
Get:5 http://us.archive.ubuntu.com/ubuntu/ precise/main linux-headers-3.2.0-23-generic amd64 3.2.0-23.36 [947 kB]
dpkg-preconfigure: unable to re-open stdin: No such file or directory
Fetched 12.6 MB in 38s (330 kB/s)
Selecting previously unselected package patch.
(Reading database ... 51105 files and directories currently installed.)
Unpacking patch (from .../patch_2.6.1-3_amd64.deb) ...
Selecting previously unselected package dkms.
Unpacking dkms (from .../dkms_2.2.0.3-1ubuntu3_all.deb) ...
Selecting previously unselected package fakeroot.
Unpacking fakeroot (from .../fakeroot_1.18.2-1_amd64.deb) ...
Selecting previously unselected package linux-headers-3.2.0-23.
Unpacking linux-headers-3.2.0-23 (from .../linux-headers-3.2.0-23_3.2.0-23.36_all.deb) ...
Selecting previously unselected package linux-headers-3.2.0-23-generic.
Unpacking linux-headers-3.2.0-23-generic (from .../linux-headers-3.2.0-23-generic_3.2.0-23.36_amd64.deb) ...
Processing triggers for man-db ...
Setting up patch (2.6.1-3) ...
Setting up dkms (2.2.0.3-1ubuntu3) ...
Setting up fakeroot (1.18.2-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.
Setting up linux-headers-3.2.0-23 (3.2.0-23.36) ...
Setting up linux-headers-3.2.0-23-generic (3.2.0-23.36) ...
Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.2.0-23-generic /boot/vmlinuz-3.2.0-23-generic
Downloading VirtualBox Guest Additions ISO from http://download.virtualbox.org/virtualbox/5.0.0/VBoxGuestAdditions_5.0.0.iso
Progress: 100% (Rate: 11.2M/s, Estimated time remaining: --:--:--)
Copy iso file D:/vagrant.d/tmp/VBoxGuestAdditions_5.0.0.iso into the box /tmp/VBoxGuestAdditions.iso
stdin: is not a tty
mount: warning: /mnt seems to be mounted read-only.
Installing Virtualbox Guest Additions 5.0.0 - guest version is 4.2.0
stdin: is not a tty
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.0 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.2.0 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules ...done.
Doing non-kernel setup of the Guest Additions ...done.
Starting the VirtualBox Guest Additions ...done.
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
An error occurred during installation of VirtualBox Guest Additions 5.0.0. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
stdin: is not a tty
Cleaning up downloaded VirtualBox Guest Additions ISO...
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/MyVM/ubuntu1204
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

chown `id -u vagrant`:`id -g vagrant` /vagrant

Stdout from the command:



Stderr from the command:

stdin: is not a tty
chown: changing ownership of `/vagrant': Not a directory



Guest Additionsが入っていないのは、起動時にエラーはでない。 vagrant sshでログインはできる。

原因

WindowsVagrantのバグ
- Windows + VirtualBox + Vagrant 1.7.3は正常に動作しません
- Unable to mount /vagrant folder in 1.7.3 #5933

Windowsだけか・・・

対処

  • Vargrant 1.7.4が出るまで待つ
  • VitatualBox 4.3.30 + Vargrant 1.7.2にダウングレードする
  • Guest Additionsが入っていないBoxを使う

はてなブログをMarkdownモードに変更してみた

いろいろお試し中で、メモ形式が、pukiwikiはてなモード、Markdown、org-mode、と増えてきた。
はてなブログは、Markdownで書けるので、Markdownモードに変更してみた。

すでにある記事は、はてなモードのままで残るようだ。

2014年10月 Groovyist/G*のあれやこれや

4798136433




これを読んでる人は、すでにご存知で、購入済みの方が多いとは思いますが、11/5に待望の
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築 が発売になりました。
レビューアの指摘により、2章分が書き直しになるなど、洗練された本に仕上がってて、
曰く世界一詳しいGradle本だそうです。
それがが日本語で読めることに感謝。
弱点があるとすれば、その厚みと重さでしょうか。
kindle版もありますが、固定レイアウトなのは残念。
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築[kindle版]

また、発売前に、待ちかねてる人向けにGradleのワークショップが開催されました。
Gradleの回は人が多いですね。



blog

範囲を与えると順番に次の日を返す
groovyあれこれ: groovyとOpenWeatherMapで天気予報を取得する
groovyあれこれ: groovyとZooKeeperで、znodeを作成する
jettyで実行可能warファイルを作る - mike-neckのブログ
Introduction to Spock
Closures and methodMissing are real
Gradleプロジェクトで依存関係の競合を解決する | GuildWorks Blog
Gradleを使いたての自分がGoogle Play Serviceを入れてはまった件 - Qiita
Eclipse で Java EE 開発してる人が Gradle の門を叩く - なにか作る
Eclipse x gradle-tomcat-plugin の自動リロード - Qiita
groovyあれこれ: groovyからYahoo!ジオコーダAPIを使用して、住所から経度・緯度を求める
Android Gradle Plugin 0.12 → 0.13の変更点 - Qiita
groovyあれこれ: groovyでCloudera Managerに登録されているホストを一覧表示する
groovyあれこれ: Apache TikaでWORDファイル等からテキストを抽出する
groovyあれこれ: groovyとRabbitMQのHTTP APIを使用して、queueを削除する
おじさん、Gradle に悩まされる。。。:息子と一緒に Makers:So-netブログ
[Groovy、Grails]メタプログラミング - Qiita
プログラミングの勉強を本気でWebゲーム化した「CodinGame」が時間泥棒確定! | シェアしたくなる最新のWebサービス・ITニュース情報をチェック! APPGIGA!!(アプギガ)
Grails 2.4で追加されたdoWithSpring、doWithConfigについて - Yamkazu's Blog
ペアワイズ法でSpockのテストデータを生成する - uehaj's blog
GroovyOnAndroidやRxJavaをやりたい人のための、Groovyのクロージャの書き方・使い方メモ - Qiita
groovyあれこれ: SwingBuilderでラベル内のアイコンに対するテキスト位置を設定する
RxJavaをGroovyで使う。そしてRxGroovyがやっていること(ExtensionModule) - Qiita
groovyあれこれ: groovyとZooKeeperで、指定のznodeが存在するか確認する
Groovyで関数インターフェースをクロージャで実装する - groovy789's blog
groovyあれこれ: groovyとSqoop REST APIでconnectorを一覧表示する
groovyあれこれ: groovyとDocker Remote APIでcontainerを一覧表示する
groovyあれこれ: WebHDFSのREST APIで指定のディレクトリを列挙する
groovyあれこれ: Apache TikaでWORDファイル等から著者などのメタデータを抽出する
groovyあれこれ: groovyとDocker Remote APIでcontainerの環境変数を一覧表示する
Robolectric Gradle Pluginの導入手順(v.0.13.x) - Qiita
カイジの地下チンチロで班長大槻が勝つ確率をシミュレートするGroovyスクリプト - mike-neckのブログ
HerokuでGrailsを使うとクエリパラメータが文字化けするのでbuildpack直しました。 - うさぎ組
[Grails]自動JSONマーシャリングを使う。 - Qiita
groovyあれこれ: groovyとApache Phoenixでテーブル作成とデータを挿入する
Groovy - GrapeでApache POIのMicrosoft Office 2007以降対応を記述する方法 - Qiita
groovyあれこれ: groovyとZooKeeperで、znodeに関連付けられた文字列データを表示する
I wanna tell you about "Groovy Template" // Speaker Deck
AndroidStudio で APK のファイル名を変更する Gradle の設定 - Qiita
AndroidStudio で APK のファイル名を変更する Gradle の設定 | DevAchieve
バイトコード検証の不具合がJDK 7u72/8u25で修正された - GeekFactory
逆コンパイルで学ぶGroovyの仕組み - Qiita
脱・独自改造! GebでWebDriverをもっとシンプルに
groovyあれこれ: Apache Ambariとgroovyで、クラスターを列挙する
IntelliJ - Android Gradle Pluginでduplicate files during packaging of APKエラー - Qiita
テンプレートエンジンNightでGroovy Templateの紹介をしてきました #tenight — grimrose's tech log

groovyあれこれ: groovyとHBaseで、テーブル内の指定ColumnFamilyを全件表示する
Grails - domainクラスでのdefaultValueに0を設定 - Qiita
groovyあれこれ: groovyとRabbitMQのHTTP APIを使用して、exchangeを作成する
Groovy - ConfigSlurperでmainは定義できない - Qiita
Groovy - ConfigSlurperでUTF-8のファイルを取り込む方法 - Qiita
AndroidStudio で APK の署名の設定を gradle.properties に記述する | DevAchieve
Java - gradleでコマンド結果をキャプチャする - Qiita
gradleで文字コードをutf8に統一 - Qiita
groovyあれこれ: groovyでCloudera Managerに登録されているクラスタを一覧表示する
groovyあれこれ: groovyとZooKeeperで、znodeを削除する
ヒアドキュメントと複数行文字列について - uehaj's blog
AndroidStudio で APK を特定のフォルダにコピーする Gradle の設定 | DevAchieve
JavaからGroovyのクラスを使用しているコードをGradleでコンパイルする - Qiita
Javaのライブラリをチョロっと試すなら、Groovyで試すといいと思うんです! - Qiita
OSS Product feat. Gradle
groovyあれこれ: groovyとRabbitMQのHTTP APIを使用して、exchangeを削除する
groovyあれこれ: Apache Ambariとgroovyで、サービスを開始する
GroovyとRxJavaとRxAndroid、シンプルなサンプルを作ってみた - Qiita
gitblit 入門 - udagawaの日記
Gradle SSH Plugin 0.4.3をリリースした - GeekFactory
Gradleの最新版を簡単に使う方法 - うさぎ組
groovyあれこれ: groovyでCloudera Managerのサービスを一覧表示する
AWS Elastic BeanstalkにGrailsアプリをデプロイするときの注意点 - Qiita
groovyあれこれ: groovyとZooKeeperで、Ephemeral znodeを作成する
PHPのようにGrailsを使う方法 - uehaj's blog
GradleでMultiple dex files define - Qiita
モバイルでもクラウドでもSelenium「第2回日本Seleniumユーザーコミュニティ勉強会」レポート:レポート|gihyo.jp … 技術評論社

Grails 2.4.4 久しぶりのバグフィックスリリース! - leftovers...


今週のGrails 2014-43
今週のGrails 2014-42
今週のGrails 2014-41
今週のGrails 2014-40





Tweet






















































































































































Q





Q&A












G*ワークショップ

ハンズオン


literalice/gradle-handson · GitHub

ブログ

本が出るまで待てない!? Gradleハンズオン - G*ワークショップZ Oct 2014 に行ってきた #jggug yukungのブログ
Gradleの最新動向を紹介しました #jggug


リンク切れやおかしなリンク、漏れがあったら、教えてください。


コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いします。



G*エコシステムの代表例

コミュニティ

イベント・勉強会

書籍

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築