Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

GitHubにリポジトリを新規作成する手順

f:id:fa11enprince:20170310151259j:plain よく忘れるので個人的メモ

何か既に手元にプロジェクトがあるとする。
例としてrails 4.2.2のrails tutorialのプロジェクトを作るとする。

GitHubでプロジェクト作成

f:id:fa11enprince:20170723052549p:plain

そうすると実は次に手順が書いてある

…or create a new repository on the command line

echo "# sample_app_4_2_2" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [url].git
git push -u origin master

大体こんな感じでやればOKです。README.mdの追加がいらないのと、
プロジェクト配下のファイル全部をaddしてないですね…。

ちなみにここで間違った場合、git remote set-url origin [ユーザ名]@[url].gitでoriginを変更できます。

自分のPC上でgitの設定&pushをする

上に書いたのと同様です

git init
git add .
git commit -m "first commit"
git remote add origin [url].git
git push -u origin master

sshでもだいたい一緒です。privateリポジトリの場合ちょっと違ったかも…あんまり覚えてない。

一応確認

pushできているか見る。OK。でも自分の画像が即座に反映されてないのか…デフォルトのになってる。 f:id:fa11enprince:20170723060727p:plain

単なる備忘録でした。

WindowsでLinuxライクな環境を作る ConEmu+MSYS2

f:id:fa11enprince:20170709232638j:plain もともとCygwin大好き派だったのですが、 パッケージマネージャーとかがアレなんでここ数年はめっきり使わず。 有志でコマンドラインでパッケージマネージャーが作られていたものの アップデートするたびに壊れていたような印象があります。

WindowsでVagrantのためにrsyncを使いたいため ConEmuとMSYS2の組み合わせでシェル環境を作りました。 その記録です。

ConEmuのインストール

公式サイトから落としてインストールするだけ

MSYS2のインストール

公式サイトから落としてインストールするだけ

ConEmuの設定

デフォルトのシェルをMSYS2にする
MSYS2をインストールしてから
ConEmuのSettings > Startup > Tasks
Add Default Tasks
で{{Bash::Mysy2-64}}
が追加されるのでStartupでそれを選ぶ
特に変更しなくていい。

なぜか私の環境ではWindowsのPATHが追加されなかったのですが、
謎…。この設定はEnvironmentで変更することができるはずなのだが。
…と思ったら C:\msys64\msys2_shell.cmd の10行目あたりをコメントアウト解除すればいいらしいとどこかに書いてあった。 が、remを消しても効果なく…。
ユーザ環境変数にMSYS2_PATH_TYPEを作ってinheritを指定したらPATHが通った。

MSYS2に必要なものを入れる

MSYS2を入れたばかりだとgccすら入ってませんので MSYS2のほうでpacmanを実行する(ConEmuだとエラーになる)

パッケージマネージャー関連の更新

$ pacman -Sy pacman
$ pacman -Syu
...長時間待つ

下記を入れるとさらに2時間くらいかかります。

開発ツールとその他よく使うツールのインストール

$ pacman -S base-devel
$ pacman -S msys2-devel
$ pacman -S mingw-w64-i686-toolchain
$ pacman -S mingw-w64-x86_64-toolchain
$ pacman -S openssh
$ pacman -S vim
$ pacman -S git
$ pacman -S tmux
$ pacman -S msys/rsync

vim関連の設定ファイルを書き換える

ここまで正しくできれば${HOME}に.bash_profileと.bashrcがあるかと思います。 ※MSYS2とConEmuをデフォルトの状態で組み合わせると
${HOME}はCygwinなどと同様に/home/[Username]となります(実際のパスはC:\msys64\home)。
ただし、ログイン直後はWindowsのUserのHomeの/c/Users/[Username](%USERPROFILE%)となっています。
ちょっとこれはやな感じですね…。設定で変えられますが…。 vimのalias等を設定します .bashrcの末尾に

alias vi='vim'
alias grep='grep --color'
alias ll='ls -laF --color=auto'
alias ls='ls -F --color=auto'

とか追加します。

さらに.vimrcを設定しましょう。ここはお好みで… 最低限でよければ下記を参照して下しさい fa11enprince.hatenablog.com

参考リンク

Windows-アプリケーション/MinGW-MSYS/MSYS2インストール - yanor.net/wiki
MSYS2 で PATH が引き継がれない

Virtual BoxのNAT接続がうまくいかないので四苦八苦して解消

f:id:fa11enprince:20160409135557j:plain そもそもの発端はVagrantを使っていて、vagrant upしたときに
sshの設定でダメになりハマっていたところからでした。
こんなやつです。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'vista-ie7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vista-ie7_default_1454528248664_66668
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (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
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.
 
If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.
 
If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.
 
If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

よく見るエラーで、うーんわからんということで、
手動でVirtual Boxの環境を作るところからやってみました。
そしたらGuest OSからネットにつながらないじゃないですか。

なんでかNAT接続でVirtual Boxの上に構築したGuest OS(CentOS, Ubuntu)から
NAT接続で外につなげませんでした。
2週間くらい悩んでました。
前からネットワーク周りの設定をほかのソフトウェアがいじっていたせいか
不安定になっていました。
いろいろ調べましたが、Virtual BoxのつくるGuestとHostをつなぐネットワーク
10.0.2.2(Guest OSからみたときのHostのIPアドレス)とか
192.168.3.1(※これは環境による。Host側のデフォルトゲートウェイでGest側にDNSサーバーとして設定されるもの)
が物理的に見えないのでよくわからん…の状態でした。

現象

Guest OSのCentOSからping 8.8.8.8は通るのだけれどもping google.comは通りませんでした。
DNSを疑いましたが、/etc/resolve.confを自動で書き換えないように設定したのち、
/etc/resolve.confをGoogleのDNS 8.8.8.8にしても改善せず…。

環境

仮想ソフト: Virtual Box 5.1.22
Host OS: Windows 10 (1607)
Guest OS: CentOS 6.9 minimal
※別途VMWare Playerも入れてあります。

解決方法

私の環境での解決法は、VMWare Playerが入っていたので
Virtual Boxを両方アンインストールして
もう一度Virtual Boxをインストールしました。
他にもいろいろついでにソフトを消していましたが、おそらくこの2つが原因です。
なにかネットワーク設定が衝突していたのかもしれません…
アンインストールするとVMWare PlayerとVirtual Boxが作るネットワークは消えています。
そしてもう一度Virtual Boxで一からCentOS 6.9のminimalを入れます

その他起きたこと

再インストール後、なぜかChromeだけでネットに繋がりません。
ルータを再起動してもダメでした。
そしたらこのコマンド打ったら治りました。
Chromeが突然ネットに繋がらなくなくなった!そんな時の解決法はコレだ! | 電気通う

> netsh winsock reset

やはり……VMWare PlayerとVirtual Boxがなにかしていたのかな…。

作り直した結果

$ ping 8.8.8.8
=> 成功
$ ping google.com
=> 成功
$ curl http://www.yahoo.co.jp
=> 成功

MacでSAStrutsの環境構築とチュートリアルのセットアップ

f:id:fa11enprince:20170106160736j:plain SAStrutsのチュートリアルのセットアップ方法のMac版です。 過去記事はこちら fa11enprince.hatenablog.com

eclipseをインストールします

ダウンロードしてインストールします。 ちなみにMacだといろいろついているpleiades All in Oneはないので 普通にJava EE用のインストーラーを落としてください。 https://eclipse.org/downloads/
workspaceは ~/eclipse/jee-neon/Eclipse.app/Contents/Eclipse/workspace
とかのほうがいいです。場所はDocuments以外だとどこでもいいと思います。
DocumentsだとiCloud配下になってしまうので(Sierra以降) iCloudの配下にあると同期の関係でなぜかCleanしてもファイルが最新にならないという問題が置きます。 El CapitanまでならDocuments配下にworkspaceがあってもいいと思います。

Tomcatのインストール

homebrewの導入は簡単なので割愛します。
homebrewを使って以下のコマンドを実行します

$ brew install tomcat  

/usr/local/Cellar/tomcat/8.5.9
にインストールされます。

Super Agile Strutsチュートリアルをインポートします

ここからダウンロードします
http://sastruts.seasar.org/download.html

ダウンロードしたものをEclipseにインポートします
まずはファイルを解凍してそれをインポートします。
File > import > General > projects from Folder or Archive

Seasar2のプラグインを入れておきます。

Help > Install New Software > add
Name : Seasar Plugin 3.3
Location: http://eclipse.seasar.org/updates/3.3/
チェックするのはDolteng, ResourceSynchronizer, SAStrutsPluginだけです。

An error occurred while collecting items to be installed
session context was:
が出たら
http://stackoverflow.com/questions/14866656/can-not-install-android-adt-21-1-on-eclipse-juno-windows-7-after-upadate-to-sd/14896322#14896322
を参考に一番下のチェックConcat all update sites during install to find required softwareを外します。

Tomcatプラグインを最新のものをいれる

Market Placeより
Eclipse Tomcat Plugin 9.1.2をいれる

プロジェクトを動的モジュールに変換します

プロジェクトを右クリック Configure(構成) > Convert to Faceted form …
Dynamic Web Module(動的Webモジュール)に
これでSeasar2のコンパイルが通るはず

サーバの作成

サーバービューから新規作成
Apache > Tomcat 8.5
を選ぶ
Tomcat installation directoryに下記PATHを貼り付け

/usr/local/Cellar/tomcat/8.5.9/libexec

そのあと、
sa-struts-tutorialのwarを追加します。 ※インストールしたパスを忘れてしまった場合は brew info tomcat でわかります。最後にlibexecをつけましょう。 ちなみにですがこのパス/usr/localはFinderだとCtrl+Shift+Gじゃないとアクセス出来ないと思いますので。。。

もう一度プロジェクトを右クリック

右クリック > Properties(プロパティ) > Project Facets(プロジェクトファセット)
Dynamic Web Module(動的Webモジュール) > 右側のRuntimeで
Apache Tomcat v8.5をチェック

デプロイメントアセンブリーの変更

また、プロジェクトを右クリック > Properties(プロパティー)で
Deployment Assembly(デプロイメント・アセンブリー)を選択します。
/WebContent /というのがあるので除去します。

追加ボタンよりフォルダーを選択します。
/src/main/webapp でデプロイ先を / にします。

サーバーを起動します

サーバービューの右クリックから起動して
ブラウザから
http://localhost:8080/sa-struts-tutorial/
にアクセスできればOKです。

ちなみにhttp://localost:8080/ にアクセスすると404になりますが、気にしないでください。
https://teratail.com/questions/11096 基本的にここまででOKです。

動かしたときにrequestのログが出ないようにします

ここは追加です。 web.xmlのrequestDumpFilterに次のを追加します。

    <filter>
        <filter-name>requestDumpFilter</filter-name>
        <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
        <init-param>
            <param-name>beforeContextAttribute</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>afterContextAttribute</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>

init-paramを2つ追加します。

猫マークからTomcatを起動したい&Tomcatプロジェクトのほうが何かと便利って場合

追加で設定をします。
eclipseのサーバービューだと何かと不便があるので、次のように追加で設定します。

これをするとEclipseの上側にある猫マークでTomcatを起動できます。 環境設定から

Tomcatバージョン:  
Tomcat version 8.x
Tomcat Home:  
/usr/local/Cellar/tomcat/8.5.9/libexec

Applyを押します。
次にプロジェクトの設定をします。

プロジェクト右クリック  
Properties >Tomcat  
Tomcatプロジェクトにチェック  
コンテキスト名: sa-struts-tutorial  
Webアプリケーションルートとするサブディレクトリ:  
/src/main/webapp

Applyを押して終了です。 この場合猫マークが使えます。

MacのEclipseでmarket placeが使えない[解決済み]

f:id:fa11enprince:20160417051906j:plain 自分のmacOS SierraでeclipseのMarket PlaceからEclipse Tomcat Plugin 9.1.2をいれようとするとエラーが発生したのでその時のメモです。根本的な解決は行えませんでしたが、一応JavaとEclipseを入れ直すことで解消しました。
元々の環境はeclipse Mars.2, jdk 1.8.0_51でした。

その時の備忘録です。 同じ問題にはまっている人が多そうなのでメモとして書いておきます。
一番お手軽な解決策はjavaとeclipseをほぼ完全消去(ほぼ、というのは完全に消しされていないものがあるような気がするからです)した上で、
javaとeclpseをいれなおせばOKです。

これは想像なのですが、おそらく
${JAVA_HOME}/jre/lib/security/cacerts
にあるjava CAがなぜか壊れていたのだと思います。

Stackoverflowで類似の質問がめちゃくちゃありましたがどれも解決に至らず。

以下長々とした記録です。

エラー発生

日本語

http://tomcatplugin.sf.net/update/site.xml のリポジトリーを読み取ることができません。  
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  

英語

Unable to read repository at http://tomcatplugin.sf.net/update/site.xml.  
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  

http://tomcatplugin.sf.net/update/site.xml のリポジトリーを読み取ることができません。
のエラーが出た

試したこと

「直接」から「ネイティブ」に変更

効果なし

javaにサーバ証明書を入れる

効果なし

まずFireFoxなどでhttp://tomcatplugin.sf.net/update/site.xmlにアクセスします。
たぶんsource.forgenetに飛ばされます。
ブラウザで保護された通信から証明書を表示します。

GeoTrust Global CA  
  名前忘れたけどここに中間証明書  
    *.sourceforge.net  

Firefoxならブラウザ上からかきだせます
知識不足でルートの方を追加すればいいのかルートじゃない方を追加すればいいのかわからず
結局全部入れました。
全部デスクトップに書き出します。

JAVA_HOMEが設定されていないと不便なので設定します
僕の場合はjdk.1.8.51でした。
ここはWindowsとだいぶ違うところです。/usr/libexec/java_homeというjavaのバージョンを管理してくれているツールがあります。

$ vi ~/.bashrc  
export JAVA_HOME=`/usr/libexec/java_home`  
$ bash  
$ echo ${JAVA_HOME}  
/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home  

そのあと

$ ls ${JAVA_HOME}/jre/lib/security/cacerts  
/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/security/cacerts  

となっていることを確認して、

$ sudo keytool -import -trustcacerts -file ~/Desktop/GeoTrust\ Global\ CA.cer -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias ca -storepass "changeit"  
証明書は、別名<geotrustglobalca>のキーストアにすでに存在します  
追加しますか。[いいえ]:  y  
証明書がキーストアに追加されました  

あれ?すでにあるんかい…と思いながら続行
ちなみにchangeitがデフォルトのキーストアのパスワードです。
ここでmarket placeにつなぐも同様のエラー

$ sudo keytool -import -trustcacerts -file ~/Downloads/sourceforge.net.crt -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias sourceforge -storepass "changeit"  
この証明書を信頼しますか。 [いいえ]:  y  
証明書がキーストアに追加されました  

ここでmarket placeにつなぐも同様のエラー

よくわかってないので中間証明書も入れておきました

sudo keytool -import -trustcacerts -file ~/Downloads/GeoTrustSSLCA-G3.crt -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias geotrustsslca -storepass "changeit"  

ここでmarket placeにつなぐも同様のエラー

一応確認して見るも…ちゃんと登録されてる

$ keytool -v -list -keystore ${JAVA_HOME}/jre/lib/security/cacerts | less  

eclipse.iniに設定を追加

-Djavax.net.ssl.trustStore=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/security/cacerts  
-Djavax.net.ssl.trustStorePassword=changeit   

2行を追加しました。
効果はありませんでした。

eclipseのネットワーク設定をいじくる

効果なし
直接になっているものをマニュアルやネイティブに変える

以前SOCKSで似たような問題が出たが、消すことで解消したが、消せない
→これはproxy環境下の話で、現在のバージョンではsocksに情報を入力しなければいいそうな。

eclipseの利用可能なサイトの一覧をいじくる

効果なし

前準備として一覧を消しておく。

$ /Applications/Eclipse.app/Contents/Eclipse/p2/org.eclipse.equinox.p2.repository  
rm -rf cache/*  

eclipseを立ち上げ直して
インストール/更新から
利用可能なサイト
http://tomcatplugin.sf.net/update/
を追加
これを選んで際ロード
→エラー

解決しないので最新版のEclipseを入れ直す

Eclipse MarsからEclipse neon 2に
→効果なし

たまにeclipseのコンソールに設定した覚えのないproxyの除外設定が出る。

効果なし
Macのネットワーク設定を見るとproxyがおかしい
システム環境設定 > ネットワーク > プロクシタブ > プロキシ設定を使用しないホストとドメイン
*.local, 169.254/16
と書かれているので消す。
これ自体は何の影響もなかった
これ自体はMacの不具合として書き込みが多数あった。

javaとeclipseを完全消去してjavaとeclipseを入れ直す。

治りました!!
eclipseはデフォルトの状態なら$HOME/eclipseにあると思うのでフォルダごと削除
javaについてはOracleの公式の説明があるんだけど、なんか足りない気がする…ので
http://www.toraneco.com/blog2/?p=1795
を参照。

$ sudo rm -rf /Library/Internet Plug-Ins/JavaAppletPlugin.plugin  
$ sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist  
Password:  
$ sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane  
$ sudo rm -rf /System/Library/Java/Support/CoreDeploy.bundle  
rm: cannot remove ‘/System/Library/Java/Support/CoreDeploy.bundle/Contents/Download Java Components.app/Contents/_CodeSignature/CodeResources’: Operation not permitted  
以下opreration not permittedのエラーが続く...  
$ sudo rm -rf ~/Library/Preferences/com.apple.java.util.prefs.plist  
$ sudo rm -rf ~/Library/Preferences/com.apple.java.util.prefs.plist.lockfile  
$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk  

エラーでたけど気にしない・・・
最新のJDKを入れる(最新じゃなくて同じバージョンでもよかったかもしれない)
最新のeclispeをインストールし直す。

無事つなぐことができました。
もし根本的な理由がわかる人がいましたらお知らせいただけると幸いです。

参考

http://stackoverflow.com/questions/7625943/unable-to-read-repository-at-http-download-eclipse-org-releases-indigo
http://qiita.com/nenokido2000/items/b36b6e5f0854d7d63ba6
http://www.toraneco.com/blog2/?p=1795