読者です 読者をやめる 読者になる 読者になる

WhereToStart

色々手をつけすぎてすぐに忘れるので備忘録

iTerm2でpowerline、カラースキームはsolarizedで!

はじめに

今までずっとbashだったので、そろそろzshにしよう!と思い作業を進めていたら、zshの環境を用意することよりも見た目に拘っていたら、powerlineの見た目を用意することに結構かかったので備忘録です。

最終成果(とりあえず満足!) f:id:futabooo:20150301002430p:plain

zshの導入

導入というのもへんな話ですが、.zshrcとかを用意します。 ここは結局oh-my-zshを使いました。一瞬です。

oh-my-zshのthemeをpowerlineにする

こいつに時間がかかったわけですが、大きく2つハマりました。

  • フォントがうまく表示されない
  • 色合いが気に食わない

フォントについて

自分でこれじゃなきゃ嫌だ!とかがなければpowerline/fonts · GitHubからパッチが適用済みのフォントが落とせるのでそれでもいいと思います。僕はRictyが使いたかったので、手動でパッチを当てました(終わったあと出てきましたが、Rictyのパッチ済みフォントはbrewで落とせるらしいです。)

ここを参考にRictyにパッチを当てます。

[Mac + tmux + iTerm] ステータスバーをpowerlineでカッコ良くする - Qiita

色について

このテーマをREADMEを見つつ設定します。

KuoE0/oh-my-zsh-solarized-powerline-theme · GitHub

しかし上の設定だけだとiTermのデフォのカラースキームと全く合わないので、iTermのスキームをsolarized-darkに変更しました。iTermのカラースキーム変更は以前書いた下の記事を参考にしてください。 iTerm2のカラースキーマまとめ - WhereToStart

CentOSとDockerとWordpress

タイトルの元ネタを全く思い出せません。
今日はsakuraVPS(CentOS6.5)上にDockerでWordpressが構築できたので備忘録です。

## 構成

NginXをプロキシサーバー、DockerにApacheMysqlのせてWordpressインストール
と言った感じです。

とりあえず使う場合は下記でいけるかと。
```
$ git clone https://github.com/futabooo/dockerfiles.git
$ cd dockerfiles
$ sudo docker build -t centos:wordpress .
$ sudo docker run -p 49174:80 -d centos:wordpress
```
dockerコマンドでDockerファイルからイメージをビルドする。
ビルドしたイメージからコンテナ作成。
この時コンテナ側の49174ポートにホスト側の80ポートをつなぐ。


Nginxでのvirtual.confはこんな感じ。
```
server {
listen 80;
server_name example.com;

access_log /var/log/nginx/nilab.jp-access_log main;
error_log /var/log/nginx/nilab.jp-eroor_log warn;

location / {
proxy_pass http://127.0.0.1:49174;
}
}
```
server_nameとかは適宜読み替えていただきたく。

これで超ピュアなWordpressが動くようになります。
ただコンテナをkillするとデータが残らないので、ドカドカ作っては壊すときはご注意を。

参考
dockerでImmutable InfrastructureなWordPressを考える
memorycraft: Dockerってなんじゃ?(docker+nginxで複数コンテナにWEBサーバーをたてる)





MarkDown記法に変えたのに全然なってない??
書き方の問題か。。。

mavenをmacに導入した

超備忘録

mavenが必要になりましたので、ただ導入ではなくやったことの備忘録を。

Brewfileを更新する。
下記2行を追加。

tap homebrew/versions
install maven31

homebrew/versionsは複数のバージョンを別々のformulaeとして提供するリポジトリ
こいつを追加するとmaven31がインストールできるようになる。

確認。

$ mvn -v
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-18 00:22:22+0900)
Maven home: /usr/local/Cellar/maven31/3.1.1/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: ja_JP, platform encoding: SJIS
OS name: "mac os x", version: "10.9.3", arch: "x86_64", family: "mac"

これでおっけい。
特にJAVA_HOMEを設定してなくても良かった。なぞ。

開発中のアプリのSQLiteDBを取得する

よく忘れるし、書くのがめんどいのでスクリプトにして見ました。

gist6154e60df4009a142a19

効率化できたのかは謎。

PC買い替え時に注意すること

結論

バックアップはしっかり取りましょう。

先日Macを買い替えました。
必要なもんはDropboxに置いたりしたので大丈夫!
と思ってたら大切なものを無くしました。

無くしたもの

さくらVPS渡した公開鍵
Androidのkeystore

公開鍵無くしてVPSたんはOS再インストールしました。

keystore無くしたので過去に公開したAndroidアプリが更新できません。
同じパッケージ名が使えません。

プライベートで本当に良かったと思います。
みなさんも気をつけてください。

AndroidManifestのapplicationタグにクラスを2つ指定したくなった時にやったこと

もともとActiveAndroidを使っていたので下記のようなManifestでした。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nilab.dribbbleviewer" >

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    <application
        android:name="com.activeandroid.app.Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <meta-data android:name="AA_DB_NAME" android:value="sqlite.db" />
        <meta-data android:name="AA_DB_VERSION" android:value="1" />

        <activity
            android:name="com.nilab.dribbbleviewer.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


ここからVolleyのシングルトンクラスを追加しようと下記クラスを追加(参Android working with Volley Library

package com.nilab.dribbbleviewer;


import android.app.Application;
import android.text.TextUtils;

import com.activeandroid.ActiveAndroid;
import com.activeandroid.Configuration;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;

public class AppController extends Application {

    public static final String TAG = AppController.class.getSimpleName();

    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private static AppController mInstance;

    @Override
    public void onCreate(){
        super.onCreate();
        mInstance = this;
    }

    public static synchronized AppController getInstance(){
        return mInstance;
    }

    public RequestQueue getRequestQueue(){
        if(mRequestQueue == null){
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
        return mRequestQueue;
    }

    public ImageLoader getImageLoader(){
        getRequestQueue();
        if(mImageLoader == null){
            mImageLoader = new ImageLoader(this.mRequestQueue, new LruBitmapCache());
        }
        return mImageLoader;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag){
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}

ここから結局ManifestとApplicationクラスを継承したクラスを下記のように書き換えて動きました。
Manifestはapplicationタグの中を書き換え。

    <application
        android:name="com.nilab.dribbbleviewer.AppController"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">

        <activity
            android:name="com.nilab.dribbbleviewer.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

AppControllerはonCreateの中と新たにメソッドを一つ追加。

public class AppController extends Application {

    @Override
    public void onCreate(){
        super.onCreate();
        Configuration.Builder builder = new Configuration.Builder(getBaseContext());
        builder.setCacheSize(1024*1024*4);
        builder.setDatabaseName("sqlite.db");
        builder.setDatabaseVersion(1);
        ActiveAndroid.initialize(builder.create(), true);

        mInstance = this;
    }

    @Override
    public void onTerminate(){
        super.onTerminate();
        ActiveAndroid.dispose();
    }

以上。
美しくないですね。。。

homebrewとhomebrew-caskとBrewfileでmacの環境構築を楽にする

追記:2014/10/26
Google日本語入力が入らなかったのは僕がミスをしていたからでしたorz
修正しました。

追記:2014/06/11
この内容だとGoogle日本語入力がインストールされませんでした。
あとkeepassxが最新版っぽく、windowsとdbを共有で使っていた自分には合わなかったです。
バージョン指定とかをできるのかな?


参考
homebrew-caskを使って簡単にMacの環境構築をしよう! | nanapi TechBlog


mac買い替えたとかでアプリケーションをネットから探してhogehogeとか
めんどいなーと思っていたら、homebrew-caskというのがあるのを偶然知った。


homebrewでGoogleCromeとかがインストールできちゃうやつ。
homebrewのコマンドを書いておいて一括インストールとかできるBrewfile。
この2つを使って環境構築をある程度自動化。


今の時点でははこんな感じになりました。
必要なモノが増えたら適宜増やしていこうかと。

# HomeBrewを最新版にアップデート
update
# Fomulaを更新
upgrade
# リポジトリーの追加
tap phinze/homebrew-cask
# パッケージのインストール
install git
install ricty
install brew-cask
# アプリケーションのインストール
cask install android-studio
cask install bettertouchtool
cask install caffeine
cask install clipmenu
cask install dropbox
cask install evernote
cask install filezilla
cask install genymotion
cask install google-chrome
cask installl google-japanese-ime
cask install iterm2
cask install keepassx
cask install keyremap4macbook
cask install pckeyboardhack
cask install skitch
cask install skype
cask install sophos-anti-virus-home-edition
cask install startninja
cask install sublime-text
cask install virtualbox
cask install xtrafinder
cask install yorufukurou
# 不要なファイル削除
cleanup
cask cleanup

まだ一回も使ってないのでちゃんと動くのかはわかりません(´・ω・`)