2014/04/06

android app開發 環境建置

1. 下載SDK, 解壓縮

2. 下載eclipse IDE for Java Developers, 解壓縮

3. 安裝JDK, 設定環境變數.
變數名稱:java_home
變數值: c:\program files\java

4.SDK Tools 安裝,(建議安裝最新版本)

5. 在eclipse設定 ADT plugin , 此時會判斷 SDK tools 的版本是否最新.
會建議要求更新..

6. 指定SDK的位置
eclipse > windows > preferences > android

7. 開啟android SDK manager 安裝軟體.

2013/08/21

HP ProLiant 網卡

HP Network Configuration Utility ( NCU )

Network Teaming
建議 2, 4 , 8 ports 做 Teaming.


TLB load balance , 多出一進.
預設為 TLB

TLB 可接多 switch.
SLB 只能接同一個 switch.


HP ProLiant Array 相關知識

ACU Array configuration utility
Linux 需要安裝 Support Pack. (PSP)

online spare 可支援至四個 Array

Capacity expansion

Raid 5 四顆延伸為六顆,前提要有 BBWC.
===============================================

online Raid Level migration
Raid 1+0 可以 migration 到 Raid 5 然後 Raid 6
反向不行,僅接受 1+0 到 5 到 6.

Raid 1+0  >  Raid 5 > Raid 6

===============================================
create 3 logical disk by ACU.


2013/02/06

利用日期算出星期幾 (Zheller 蔡勒公式)

透過蔡勒公式,我們可以使用年月日的數值算出那天是星期幾。

利用的日曆是西洋曆。

year:年
month:月
date:日

公式如下:

2013/02/03

Android - Handler activity設定時間後自動跳到另一activity

如何讓 Activity 執行後,可以在一定時間後自動跳到另一個 Activity。
這樣的想法可以使用 Handler 來完成這樣的工作。

我的想法是,當程式執行後先顯示 App 的 Logo 在跳到要使用的功能。

Layout.xml
1. main.xml
2. second.xml

Activity
1. MainActivity.java
2. Second.java

範例:
執行程式時,先執行 MainActivity.java。過了五秒後,自動跳轉到 second.java




MainActivity.java
package com.example.intent5sed;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                final Intent mainIntent = new Intent(MainActivity.this, Second.class);
                startActivity(mainIntent);
                finish();        // 當跳到另一 Activity 時,讓 MainActivity 結束。
                                // 這樣可以避免使用者按 back 後,又回到該 activity。
            }
        }, 5000);    
    }
}


Second.java
package com.example.intent5sed;

import android.app.Activity;
import android.os.Bundle;

public class Second extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
    }
}



提醒:新增新的 class 別忘了到 AndroidManifest.xml 做適當的修改。

2013/01/05

Android - DatePicker:如何取得"日期"的資料


資料取得上,除一般透過輸入的資料外,也常會使用到時間的紀錄。
而時間的取得就可以透過 TimePicker 或 DatePicker 來即時取的當下的時間。
當然這時間可以再另做設定,只是透過這樣的方法,使用者在輸入資料的時候。
可以避免資料的輸入手誤或錯誤等等。

範例:
軟體一開啟時,使用 Calendar 取得當下的年月日,並顯示在textDate1。
之後更改 Datepicker 顯示的年月日,系統會觸發 OnDateChangedListener,
產生出年月日三個數值是,由於這數值屬性為 int,所以我們另用 DateFix 方法將時間更改為 String。
當然若數字小於 10 ,在數字前面我們就多加個 0。
將取得字串在設定到 TextView1。
另外,透過Button取得 DatePicker 送出來的資料,顯示在另一個 另一個 textDate2 上。


圖示:




main_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Date" >

    <DatePicker
        android:id="@+id/DatePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textData1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text" />

    <Button
        android:id="@+id/BtnGetDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="63dp"
        android:text="取得日期" />

    <TextView
        android:id="@+id/textData2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text" />

</LinearLayout>

date.java
package com.data;

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;


import android.widget.TextView;

public class Date extends Activity {

    String Year,Mon,Day;
    private DatePicker DatePicker;
    private TextView textData1;
    private TextView textData2;
    private Button BtnGetDate;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        
        Calendar TodayDate = Calendar.getInstance();    //透過Calendar取的資料
        int sYear = TodayDate.get(Calendar.YEAR);       //一開啟軟體即取得年的數值
        int sMon  = TodayDate.get(Calendar.MONTH) + 1;  //一開啟軟體即取得月的數值
                                                        //月的起始是0,所以+1.
        int sDay = TodayDate.get(Calendar.DAY_OF_MONTH);//一開啟軟體即取得日的數值
        //將取得的數字轉成String.
        Year = DateFix(sYear);    
        Mon  = DateFix(sMon);
        Day  = DateFix(sDay);
        
        textData1     = (TextView)findViewById(R.id.textData1);
        textData2    = (TextView)findViewById(R.id.textData2);
        BtnGetDate    = (Button)findViewById(R.id.BtnGetDate);
        //一開始就將年月日寫入 textDate1
        textData1.setText( Year + "/" + Mon + "/" + Day );
        
        BtnGetDate.setOnClickListener(GDListener);
        
        DatePicker     = (DatePicker)findViewById(R.id.DatePicker);        
        DatePicker.init(TodayDate.get(Calendar.YEAR),TodayDate.get(Calendar.MONTH),
                        TodayDate.get(Calendar.DAY_OF_MONTH),    
        //DatePicker年月日更改後,會觸發作以下的事情。
        new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, 
                    int dayOfMonth) {
                Year = DateFix(year);
                Mon  = DateFix(monthOfYear + 1); //月的初始是0,所以先加 1。
                Day  = DateFix(dayOfMonth);
                textData1.setText( Year + "/"+Mon+"/"+Day);
            }
        });   
    }  
    
    //按下Button,將年月日的值,設定到 textData2
    private Button.OnClickListener GDListener = new Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            textData2.setText(Year+"/"+Mon+"/"+Day);
        }
    };        
    //方法DateFix:將傳送進來的年月日轉成String,在判斷是否前面需要加0。
    private static String DateFix(int c){
        if (c >= 10)
            return String.valueOf(c);
        else
            return "0" + String.valueOf(c);
    }
}

2013/01/04

Blog 貼上程式碼:程式碼外圍加框框

http://cw1057.blogspot.tw/2012/07/blogger-format-sample-codes-in-blogs.html?spref=bl



直接在Blog貼上程式碼常有長短不一,格式跑掉的情況。
現在有幾個方法可以改善這樣的情況。

http://formatmysourcecode.blogspot.tw/
將程式加個框框。這樣程式碼就不會亂跑啦~

步驟:
在第一個框框內貼上程式碼,點選Format Text。
第二個框框就出現了套用好的html格式,直接將這格式複製到你自己的Blog上,並在 html 格式上面貼上你也顯示的位置。
第三個框框就是示意圖啦。