かけるヒトからできるヒト

プログラムを書ける人からプログラムが出来る人へなるために個人的にまとめるブログ

teratermからpareantを利用したssh通信ができなくなった件について

ssh-agentを使って自動でログインするように設定していたはずのteratermがsshの接続に失敗しましたというメッセージを出すようになったので、トラブルシューティング。

 

結論としてはホームディレクトリのアクセス権を変えたせいでした。

他のプログラムからデータを書き出すために、ホームディレクトリのアクセス権を書き込み可にしていたら、pareantさんがディレクトリの所有者が分からなくなって、サーバがアクセスをはじいていた、という事らしいです。

 

「/etc/log/messages」に吐き出されるログをよく見ると色々データが乗っているよとアドバイスされました。ログを見る癖をつけた方がいいとは知っていたけど、ログの見方も勉強しないといけないですね。

Ubuntuにruby on railをインストールしてみる

webサービスを作るならrailsがいいよと聞いたので、とりあえずまずは環境を揃えてみる事に。

ubuntuに入れてみようと思ったらちょっと詰まったのでまとめ。

 

課題

Ubunturuby on railsをインストールする。

 

環境

Ubuntu12.04

ruby 1.8.7

ruby on rails 3.2.13

 

インストール

まずはrubyすらインストールされてなかったのでrubyをインストール

$ sudo apt-get install ruby

このタイミングでgemなるものがインストールできると聞いていたので、

$ sudo gem install rails

としてみたら

Fetching: json-1.8.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
ERROR: Failed to build gem native extension.

となりインストールできなかった。

このバージョンじゃビルドできねーよって言われてる感じだったので、調べてみるとrubygemsというのをインストールしないとならないらしい

というわけでインストール

$ sudo apt-get install rubygems

 railsを入れるためには、gemでrdocなるものをインストールしなければならないらしいので、インストール

$ sudo gem install rdoc-data

そして本命のrailsをインストール 

sudo gem install rails

これが結構時間かかって失敗したかと思ったけど、気長に待つ。

終わったらバージョンの確認をしてみる。

$ rails -v
Rails 3.2.13

無事インストール完了

 

結論

Ubunturailsを入れる時はrubygemsなるものをインストールすること

bootstrap適用時にinputタグのサイズがおかしくなる

bootstrapを使ってみようと思い、色々と適用していたらハマったので備忘録。

 

問題

bootstrapを適用すると、inputタグのtextやpasswordのレイアウトが崩れる。

縦のサイズとかを指定しているのになぜか大きくならない。隣にあるボタンより狭い幅になってしまう。

 

解決

bootstrapはhtml5を利用するので、htmlファイルを宣言する先頭でhtml5のファイルだよという事を表す必要がある

 
<!DOCTYOE html>
<html lang="ja">
~~~~~~~~~~~~~~~~~~~~~~~~
</html>

参照

やはりstackoverflowは一瞬で答えが見つかりますね。

http://stackoverflow.com/questions/14293294/bootstrap-text-input-wrong-height

Ubuntuでドキュメントルートのファイル一覧を非表示にする

ドキュメントルートにindex.htmlがないとファイルの一覧が表示されてしまうので、その一覧を消したい。

apacheの設定を調べるとCentOSとかのが出てきて案外設定に手間取ったので備忘録。

 

課題

webサーバにアクセスした時にファイルの一覧を表示させない。

 

解決

「/etc/apache2/sites-available/default」に入っている設定をいじる。

10行目の「Options Inexes FollowSystemLinks MultiViews」設定をコメントアウト。

11行目に「Options All -Indexes」設定を追加。

「sudo /etc/init.d/apache2 restart」でApacheの再起動

 

/etc/apache2/sites-available/default


        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        
                Options FollowSymLinks
                AllowOverride None
        
        
                # Options Indexes FollowSymLinks MultiViews
                Options All -Indexes
                AllowOverride None
                Order allow,deny
                allow from all
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    


androidのviewに隙間ができる

WebViewを使ったアプリを作っている途中、どうしても上下左右に隙間が出来て、それ以上viewを大きくできないなぁと思ったので備忘録。

 

課題

viewを配置した時の上下左右の隙間を無くす

 

原因

xmlでpadding(内側の隙間のサイズ)が決められてただけ。

 

解決

activity_main.xmlを見てみると、@dimen/activity_vertical_marginと@dimen/activity_horizontal_marginというのが設定されていた。

resフォルダにあるvalues/dimens.xmlの中のそれぞれのmarginの値を0にする事で、画面いっぱいいっぱいまでwebviewを広げる事ができた。

 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/mainWebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>

dimens.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">0dp</dimen>
    <dimen name="activity_vertical_margin">0dp</dimen>
</resources>

 

 

android2.3のエミュレータにおいてwebviewからjavascriptInterfaceを使うとアプリが落ちる

タイトルが長いですが、

android2.3のエミュレータにおいて、webviewからjavascriptInterfaceを使うとアプリが落ちます。

 

環境

android2.3のエミュレータ

webviewからjavascriptInterfaceクラスを使って、javaのネイティブメソッドを呼ぶとアプリが落ちる。

 

結論

android2.3エミュレータの仕様です。

javascriptInterfaceを試したい場合は他のバージョンのエミュレータを使用する事。

 

過程

最初は普通に起動しますが、javascriptからjavaのメソッドを呼ぶ機能が動いた瞬間にアプリが落ちます。

エラー内容は以下の通り。

05-17 23:30:47.919: E/InputDispatcher(61):channel '4077cd08 hoge.fuga.パッケージ名/hoge.fuga.パッケージ名.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

 

android build targetが変更できない

前回、androidの開発環境を構築していて、なぜかeclipseからエミュレータが起動出来ないという事態が発生していた。

今回はそれの原因究明を行う。

 

課題

eclipseからandroidシミュレータを指定して、起動させる。

 

症状

eclipseからプロジェクトを「androidアプリケーションで実行」を選ぶと、

unknown target 'android-10' 

となりシミュレータを起動できない。

 

原因

android-sdkを2つ入れていたのが原因でした。

eclipseの方で設定していたandroid-sdkのビルドパスが、入れた事を忘れていた方のsdkになっていて、いくら新しく入れた方のsdkでシミュレータを作成しても見つからない=unknown targetとなっていました。

プロジェクトのプロパティで、android2.3をターゲットにして作成したはずなのに、ビルド・ターゲットに2.3が現れてないという事に気づいて、パスが間違っているんだと気づいて解決しました。

 

まとめ

気づいてしまえばとても間抜けなミスでした。

下手にシミュレータを起動させていると、パスの通っていないsdkから起動したものでもeclipseが見つけてしまうので発見が遅れてしまいました。

起動しないと思ったらまずはパスを確認する事が重要ですね。