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
まだ一回も使ってないのでちゃんと動くのかはわかりません(´・ω・`)
neobundleをgithubで管理するときにハマったこと
最初に自分が作った環境をgithubにあげて、別の環境で下記コマンド実行
$ git clone https://github.com/futabooo/dotfiles.git --recursive Initialized empty Git repository in /home/futabooo/dotfiles/.git/ remote: Counting objects: 22, done. remote: Compressing objects: 100% (15/15), done. remote: Total 22 (delta 7), reused 19 (delta 4) Unpacking objects: 100% (22/22), done. Submodule '.vim/bundle/neobundle.vim' (https://github.com/Shougo/neobundle.vim.git) registered for path '.vim/bundle/neobundle.vim' Initialized empty Git repository in /home/futabooo/dotfiles/.vim/bundle/neobundle.vim/.git/
ここでずーと先に進まない。
原因は.gitmodule内のURLの書き方でした。
修正前
[submodule ".vim/bundle/neobundle.vim"] path = .vim/bundle/neobundle.vim url = http://github.com/Shougo/neobundle.vim.git
urlをhttpsに変更するだけで解決
[submodule ".vim/bundle/neobundle.vim"] path = .vim/bundle/neobundle.vim url = https://github.com/Shougo/neobundle.vim.git
AndroidStudio0.5.4でFacebookSDKを追加する方法
環境
OSX 10.9.2
AndroidStudio 0.5.4
FacebookSDK 3.8.0
FacebookSDKにかかわらず、ライブラリーを追加する場合は大抵この方法でしょう。
1.FacebookSDKを設置
FinderでコピペでAndroidStudioにも反映されます。
追加後は下記のようなフォルダ構成です。
/Users/futabooo/AndroidStudioProjects/Iwaeme/libraries/facebook
2.settings.gradleを編集
settings.gradleを編集します。
後半部分を追加。
include ':app', ':libraries:facebook'
3.build.gradleを編集
開発するプロジェクトの方のbuild.gradelを編集します。
最後の1行を追加。
dependencies { compile 'com.android.support:support-v4:19.+' compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':libraries:facebook') }
4.確認
Sync Project with Gradle Filesを押下して設定を反映させたのち、
下記のように補完が聞けば追加に成功しています。
iTerm2のカラースキーマまとめ
最近ターミナルの作業をすることが増えてきまして、iTermの画面とにらめっこすることが増えてきました。
そこで色を変えたいなーと思い、方法を調べるついでにすでに用意されてるiTerm用のカラースキーマまとめてみました。
iTermのカラースキーマ
Jellybeans.itermcolors/jellybeans.itermcolors at master · qtpi/Jellybeans.itermcolors · GitHub
iterm2-monokai/Monokai.itermcolors at master · episko/iterm2-monokai · GitHub
solarized/iterm2-colors-solarized at master · altercation/solarized · GitHub
Hybrid iTerm Colors: https://github.com/w0ng/vim-hybrid
iTerm2 Twilight Color Scheme
lucius/iterm2 at master · jonathanfilip/lucius · GitHub
iTermのカラースキーマ設定方法
すでに用意されたカラースキーマからimportしちゃいます。
1.preferences>Profiles>なんか適当に新規作成>Colors>LoadPresets>import
2.適当にネットでDLしてきたカラースキーマを指定する
.itermcolorsファイルをimport
3.importした設定を有効にする
完了。一枚目のキャプチャとはColorsが変わっています。
別の方法
書いてる途中でこんなサイト発見
Iterm Themes - Color Schemes and Themes for Iterm2
さくらのVPSを借りた時にとりあえずここまではやっておくって事
参考
VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定 | dogmap.jp
基本的には参考URLの焼き直し。
#はrootで実行。$は最初に作成した一般ユーザで実行。
作業用ユーザーの作成
rootユーザのパスワード漏れたりしたら\(^o^)/なので普段の作業はこいつでする。
# useradd futabooo # passwd futabooo
rootになれるようにwheelグループに追加
$ usermod -G wheel futabooo $ visudo ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
ssh公開鍵方式でログインできるようにする
ssh公開鍵自体は自分のローカルマシンで作成しておく
パーミッションも変更してセキュリティ向上
$ scp -P 22 sakuraVPS_id_rsa.pub futabooo@割り当てられてるIPアドレス: $ mkdir .ssh $ chmod 700 .ssh $ mv sakuraVPS_id_rsa.pub .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys
rootでのログイン、パスワードでのログインをできなくする
# vi /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes
sshポートの変更を変更してsshd再起動
hogeはデフォで2だけど、変更しておく。22だと簡単にアタックされる。
他にもよくあるのは1022とか。
$ vi /etc/ssh/sshd_config Port hoge $ /etc/rc.d/init.d/sshd restart
iptablesの設定をする
# vi /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH, HTTP -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport hoge -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited # /etc/rc.d/init.d/iptables restart # /sbin/chkconfig iptables on
yumのアップデート
# yum update
denyhostsを導入する
sshで規定回数以上ログインに失敗したアクセス元の IP アドレスをアクセスできないようにするやつ
# yum install -y denyhosts # /etc/init.d/denyhosts start # /sbin/chkconfig denyhosts on
logwatchを導入する
サーバー監視ツール。一日一回設定したメアドにメールで内容を送ってくれる。
# yum install -y logwatch # vi /etc/logwatch/conf/logwatch.conf MailTo = example@co.j@
コンソールの日本語化
# vi /etc/sysconfig/i18n LANG="ja_JP.UTF-8" SYSFONT="latarcyrheb-sun16"
ここまでは決まった作業として行う。
最低限の設定。