2015年2月28日土曜日

【SyntaxHighlighter】ブログ記事中のコードを分かり易く表示する

ブログを書く際、コードや設定ファイルを記載する事があるが、本文と同様の書式で書いているので、イマイチ見栄えもしないし、読み難い。

他のブログ等ではカッコよく、分かり易く表示されているので、自分も見習ってみたいと思った。
ちょいと調べてみたところ、Syntax Highlighter というのを使うのが良さそうだ。

導入に当たってはこちらの記事(Blogger に Syntax Highlighter を導入する)を大いに参考にさせて頂いた。

一点、若干つまずいたところは、Bloggerのプレビュー画面では、表示が反映されないというところだ。

公開状態にすれば、問題なく表示されるようだ。

試しに、昨日ブログに掲載したコード(+α)を再掲してみる。


[ボタンをタップする毎に、画面の数字を0から1つずつ増やしていくプログラム]

MainActivity.java
  public class MainActivity extends ActionBarActivity {

      private static int i = 0;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          final TextView textView = (TextView) findViewById(R.id.textView);
          final Button button = (Button) findViewById(R.id.button);

          // ボタンをクリックした際の処理
          button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  i++; // i を1増やす
                  textView.setText(String.valueOf(i)); // i の値を表示する
              }
          });
      }
  }

activity_main.xml
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="0"
        android:id="@+id/textView"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Plus Button"
        android:id="@+id/button"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true" />
  </RelativeLayout>

2015年2月27日金曜日

【Android】【Java】 setText() に数値を渡す

Android Studio アプリ開発備忘録


第2回 『 setText() に数値を渡す方法』


setText() は、テキストビューに任意の文字列をセットできるメソッドである。

 TextView.setText("任意の文字列")

と、いう具合に使う。

ある時、プログラムの中で使用されている変数 int i の値を表示したくなった。

TextView.setText(int i) 

とすればエラーになるし、

TextView.setText("i")

とすれば当然画面には 『i』 という文字が表示されてしまう。

これを解決するには String.valueOf() を使えば良いようだ。

 TextView.setText(String.valueOf(i))

これで、変数 i の値を表示できる。

試しに、ボタンをタップする毎に、画面の数字を0から1つずつ増やしていくプログラムを作ってみた。

(※別途、XMLでボタンとテキストビューを用意しておく必要がある。
===================================================================
public class MainActivity extends Activity {

private static int i = 0;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   
        final TextView textView = (TextView) findViewById(R.id.textview);
        final Button button = (Button) findViewById(R.id.button);

        // ボタンをクリックした際の処理
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                i++; // i を1増やす
                TextView.setText(String.valueOf(i)); // i の値を表示する
            }
        });
===================================================================

こちらのサイトによると、変換する方法は、この方法を含めて3つあるようだ。

【CentOS 6.5】SSHの設定

CentOSサーバーを再インストールトした。

このブログを自分のサーバーに移行しようと目論んでおり、設定等についてもう一度確認・勉強したかったからだ。

SSHの設定について、入門書やネット上の解説等をいくつか参考にして、『これだけやっとけば概ね大丈夫だろう』という設定に辿り着いた(つもり)なのでまとめておく。

『/etc/ssh/sshd_config』を編集

① SSH用のポート番号を変更する。  


 不正なアクセスを防止するため。

 デフォルト: #Port 22
 変更後  : Port 任意のポート番号

 変更後のポート番号は、プライベート ポート番号(49152~65535)の中から選ぶのが良さげそう。

 なお、変更後のポートを開くのを忘れると、アクセスできなくなってしまうので注意。

  『/etc/sysconfig/iptables 』を編集して、ポートを開く。 
  iptablesは、ssh用としてデフォルトで22番ポートが開かれているので、この番号を変更する。

   デフォルト:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
   変更後  :-A INPUT -m state --state NEW -m tcp -p tcp --dport 任意のポート番号 -j             ACCEPT

② rootのログインを禁止する。


 rootでの操作を必要最小限にするため。

 デフォルト: #PermitRootLogin yes
 変更後  : PermitRootLogin no

③ パスワード認証を禁止する。


 よりセキュアな公開鍵認証での接続を強制するため。
 あらかじめ、公開鍵認証での接続の設定をしておかないと、SSHでログインできなくなるので注意。

 デフォルト: #PasswordAuthentication yes
 変更後  : PasswordAuthentication no

④ SSH接続を許可するユーザを制限する。


 不正なアクセスを防止するため。

 追記   : AllowUsers ユーザ名

⑤ SSHのバージョンを2に限定(デフォルト)


 脆弱性が確認されているSSHバージョン1の使用を避けるため。

 デフォルト: Protocol 2

以上


2015年2月12日木曜日

【Android】 画面の向きを固定する方法

最近は、Android Studioを使ってアプリの開発なんかをしている。

プログラミング自体ほぼズブの素人であるが、いろいろ調べながら、少しづつ形にしていくのは中々面白い。

ただ、せっかくやり方を調べても、1回使っただけでは、一週間もしたら綺麗さっぱり忘れてしまいそう。

そこで、備忘録として記録に残しておこうと思う。


第1回 『画面の向きを固定する方法』


画面の向きはマニフェストファイルで設定する。

各プロジェクトには、AndroidManifest.xml という名前で“マニフェストファイル”が用意されている。
このファイルを開くと、中にだいたい以下のような記述がある。

~~~~~~~~~~

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>

~~~~~~~~~~

これの<activity>タグの中に、android:screenOrientationという項目を追加する。

~~~~~~~~~~

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

landscape は横向きで固定する設定値だ。

他に私が使う可能性がありそうなのは portrait(縦固定)くらいだろうか。
設定値と実例についてはこちらのサイト(Android Wiki)が分かりやすかった。

2014年12月2日火曜日

【Android Studio】 SDKの入手と設定 追記

Android Studio の公式パッケージにはSDKが含まれていない件について、
公式サイトから、The Eclipse ADT Bundleをダウンロードすると、sdkディレクトリが含まれているので、それを適当な場所に置いておく。
と前回書いたが、 同じページの下の方にある『GET THE SDK FOR AN EXISTING IDE』というところから、スタンドアロンのSDKインストーラーがダウンロード出来るので、そちらを使うのが良さそうだ。

なお、こちらのインストーラーを使うと、デフォルトでは

C:\Users\[ユーザー名]\AppData\Local\Android\android-sdk

にSDKがインストールされる(Windowsの場合)。


これを知った経緯だが、本日「参考書でも買おうかなー」とAmazonを眺めていたところ、2014年11月21日に発売されたばかりの『Android Studioではじめる 簡単Androidアプリ開発』という本に行き当たった。その本のレビューに著者からのコメントがあり、最新(0.8.14)のandroid-studioのセットアップ方法をネットで公開中との事で、それを参考にさせていただいた。

JDK、SDK、本体のインストール共に詳しくまとめられているので、v0.8.14のセットアップについてはそちらの情報を参考にするのが良さそうだ。

本の方も買ってみることにしよう。

2014年11月28日金曜日

【Android Studio】 SDKの入手と設定(Your Android SDK is missing)

Android Studio(v0.8.14)を起動した後、

New Project を開始しようとすると、“SDKが見つからない(Your Android SDK is missing, out of date, or is missing templates. You can configure your SDK via Configure | Project Defaults | Project Structure | SDKs)”とエラーメッセージが出る。




また、Configureを開くと、SDK Managerがグレーアウトして開けない。




























公式サイトのダウンロードリンクには“with the Android SDK for Windows”と書かれているにも関わらず、SDKが同梱されていないらしい。
そのため、SDKを別途入手し、設定する必要がある。

公式サイトから、The Eclipse ADT Bundleをダウンロードすると、sdkディレクトリが含まれているので、それを適当な場所に置いておく。(ただし、AndroidStudioディレクトリ内に置くと、アップデートの際に移動するよう促されるらしい。※こちらのページの、注:2014/11/22追記を参考にさせていただいた。)

Android Studioから、Configure > Progect Deraults > Project Structure を開き、SDKを置いているフォルダを指定する。



SDK Manager が有効になり、エラーメッセージも表示されなくなる。



⇒ 後日追記

参考にさせていただいた情報
Android StudioをインストールしたらSDK Managerが起動しないときの対処
Android StudioにおけるAndroidSDKやJDKのパス設定

【Android Studio】 JDKの環境変数の設定

アンドロイド開発環境 Android Studio (v0.8.14) をダウンロードした。

studio.exe(またはstudio64.exe)を起動しようしたところ、“JDKがインストールされていない。もしインストールされているなら、環境変数JAVA_HOMEを設定せよ”とエラーが出る。


こちらのページを参考にさせていただき、JAVA_HOMEの値を設定した。
が、一つだけハマってしまったのが、以下の箇所。
では「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk1.8.0_25;」を入力します(JDKをインストールしたディレクトリに合わせて変更して下さい)。
設定値の後にセミコロン(;)を付けてしまうと、下記のように“The environment variable java_home does not point to a valid jvm installation.(有効なJVMが指定されていない)”とメッセージが出て、起動できない。セミコロンがフォルダ名の一部とみなされている様だ。
(環境変数を設定する際、セミコロン(;)は区切りとして扱われるはずなのだが、何故なんだろう?)


セミコロンを含めずに、正しくJAVA_HOMEの値を指定したところ、正常に起動できた。


なお、studio.exeを使用する場合は32bit版のJDKを、studio64.exeを使用する場合は64bit版のJDKをインストールし、JAVA_HOMEを指定する。64bit版のJDKを設定している場合、32bit版のstubio.exeは起動できない。(逆も同じ。)