2013年4月18日 星期四

zk messagebox


Messagebox.show("Are you sure to save?", "Confirm Dialog", Messagebox.OK | Messagebox.IGNORE  | Messagebox.CANCEL, Messagebox.QUESTION, new org.zkoss.zk.ui.event.EventListener() {
    public void onEvent(Event evt) throws InterruptedException {
        if (evt.getName().equals("onOK")) {
            alert("Data Saved !");
        } else if (evt.getName().equals("onIgnore")) {
            Messagebox.show("Ignore Save", "Warning", Messagebox.OK, Messagebox.EXCLAMATION);
        } else {
            alert("Save Canceled !");
        }
    }
});

2013年3月5日 星期二

android rule


<pre class="java" name="code">

</pre>


        //Log.i(TAG, "bala bala....");
 private final String TAG = "MainActivity";

        //Resource
 private Db4oHelper db4oHelper = null;

 // UI component declare area
 private Button cleanBtn,nextBtn;
 private EditText pnoET;








andorid 筆記(一)

01、 Liner Layout

         一維順序排列

 02、 Relative Layout

         相對佈局

 03、 Frame Layout


 04、 Table Layout


 05、 Activity 生命周期

 

06、 在AndroidManifest.xml中註冊Activity元件


07、 Intent Bundle

Intent intent = new Intent();
intent.setClass(this,Report.class);

Bundle bundle = new Bundle();
bundle.putString("name","peterpai");
intent.putExtras(bundle);
startActivity(intent);
Bundle bundle = this.getIntent().getExtras();
String name = bundle.getString("name");

08、新增一個Activity的流程

    1、定義一個Activity的子類別
    2、定義對應的XML版面配置
    3、覆寫Activity中的onCreate(),處理XML版面配置和Intent的傳值
    4、將元件註冊進AndroidManifest.xml

09、Log

private final String TAG = "MainActivity";// Log.i(TAG, "bala bala....");

10、Toast

Toast toast = Toast.makeText(this,"Hello Toast!!",Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP|Gravity.RIGHT,0,0);
toast.show();

11、資源檔、字串、多語系

res/values/strings.xml                            放置預設的文字資源
res/values-zh-rCN/strings.xml               放置簡中的文字資源

strings.xml的宣告

    My Note
    
         新年
         中秋節
         端年節
    
    
         今年有一天假日
         今年有%d天假日
    


java中的引用法
String appName = getResources().getString(R.string.app_name);//取字串
Resources res = getResource();
String[] holidays = res.getStringArray(R.array.holidays);//取字串陣列
String holidayComment = res.getQuantityString(R.plurals.holiday_summary,holidays.length);//處理複數字串

XML中的引用法
@string/app_name


12、SharedPreferences




13、AlertDialog
      // create a new AlertDialog Builder
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setTitle(R.string.welcome_message_title); 
      builder.setMessage(R.string.welcome_message);
      builder.setPositiveButton(R.string.button_ok, null);
      builder.show();





























2013年3月3日 星期日

android 檔案存取


Android 對於 SD Card 的位置,

可以用 Environment.getExternalStorageDirectory( ) 取得,

Android 對於 SD Card 是否插入,

可以用 Environment.getExternalStorageState( ) 判斷之,

Android 對於 SD Card 的存取權限, 必須有 android.permission.WRITE_EXTERNAL_STORAGE 權限:

public class helloWorld extends Activity {
   
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView( R.layout.main );
      
      Button b = (Button)this.findViewById(R.id.buttonObj);
      
      b.setOnClickListener( new OnClickListener(){
         public void onClick(View arg0) {
          
            File vSDCard = null;
            
            try {
               // 判斷 SD Card 有無插入
               if( Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED) )
                  return;
               else
               {
                  // 取得 SD Card 位置
                  vSDCard = Environment.getExternalStorageDirectory();
               }
               
               // 判斷目錄是否存在
               File vPath = new File( vSDCard.getParent() + vSDCard.getName() + "/tom" );
               if( !vPath.exists() )
                  vPath.mkdirs();
               
               // 寫入檔案
               FileWriter vFile = new FileWriter( vSDCard.getParent() + vSDCard.getName() + "/tom/myTest.txt" );
               vFile.write("Hello Android");
               vFile.close();
             
            } catch (Exception e) {
               // 錯誤處理
            }
         }
      });
   }
}


隆中對

自董卓已來,豪傑並起,跨州連郡者不可勝數.
曹操比於袁紹,則名微而眾寡,然操遂能克紹,以弱為強者,非惟天時,抑亦人謀也.
今操已擁百萬之眾,挾天子而令諸侯,此誠不可與爭鋒.
孫權據有江東,已歷三世,國險而民附,賢能為之用,此可以為援而不可圖也.
荊州北據漢﹑沔,利盡南海,東連吳會,西通巴﹑蜀,此用武之國,而其主不能守,此殆天所以資將軍,將軍豈有意乎?
益州險塞,沃野千里,天府之土,高祖因以成帝業.
劉璋闇弱,張魯在北,民殷國富而不知存恤,智能之士思得明君.
將軍既帝室之冑,信義著於四海,總攬英雄,思賢如渴,若跨有荊﹑益,保其巖阻,西和諸戎,南撫夷越,外結好孫權,內脩政理;
天下有變,則命一上將將荊州之軍以向宛、洛,將軍身率益州之眾出於秦川,百姓孰敢不簞食壺漿以迎將軍者乎?
誠如是,則霸業可成,漢室可興矣。

2013年2月26日 星期二

菩萨蛮—甄嬛传


小山重叠金明灭
鬓云欲渡香腮雪
懒起画蛾眉
弄妆梳洗迟
照花前后镜
花面交相映
新帖绣罗襦
双双金鹧鸪
新帖绣罗襦
双双金鹧鸪
懒起画蛾眉
弄妆梳洗迟
照花前后镜
花面交相映
新帖绣罗襦
双双金鹧鸪
新帖绣罗襦
双双金鹧鸪
双双金鹧鸪

紅顏劫—甄嬛傳

斬斷情絲心猶亂 千頭萬緒仍糾纏

拱手讓江山     低眉戀紅顏  禍福輪流轉 是劫還是緣

天機算不盡  交織悲與歡  古今癡男女 誰能過情關

長恨歌—白居易


漢皇重色思傾國,御宇多年求不得。
楊家有女初長成,養在深閨人未識。
天生麗質難自棄,一朝選在君王側。
回眸一笑百媚生,六宮粉黛無顏色。
春寒賜浴華清池,溫泉水滑洗凝脂。
侍兒扶起嬌無力,始是新承恩澤時。
雲鬢花顏金步搖,芙蓉帳暖度春宵。
春宵苦短日高起,從此君王不早朝。
承歡侍宴無閒暇,春從春遊夜專夜。
後宮佳麗三千人,三千寵愛在一身。
金屋妝成嬌侍夜,玉樓宴罷醉和春。
姊妹兄弟皆列土,可憐光彩生門戶。
遂令天下父母心,不重生男重生女。
驪宮高處入青雲,仙樂風飄處處聞。
緩歌慢舞凝絲竹,盡日君王看不足。
漁陽鼙鼓動地來,驚破霓裳羽衣曲。

念奴嬌 - 赤壁懷古


大江東去,浪淘盡,千古風流人物。
故壘西邊,人道是,三國周郎赤壁。

亂石崩雲,驚濤裂岸,捲起千堆雪。

江山如畫,一時多少豪傑。

遙想公瑾當年,小喬初嫁了,雄姿英發。

羽扇綸巾,談笑間,強虜灰飛煙滅。

故國神遊,多情應笑我,早生華髮。

人間如夢,一尊還酹江月。

2013年2月25日 星期一

UML-類別圖

UML-類別圖

[OO 小學堂] UML 類別圖介紹


關聯 : (Association) 

在一個類別和另一個類別之間拉出連接線、並在上方標示關聯詞(動詞)、二端視需求可標示參與數目和介面名稱,表示二個類別之間的關聯。例如,一或多個「數字」「標記」一種「物品」。參與數目(multiplicity or cardinality)可能標示為數字、表示多項的代用符號(*) 、或是像 "0..1" 的數字區段。可以在關聯詞旁邊以實心三角形標示方向。






彙總 : (Aggregation) 『生死有命diamond表示whole,箭頭表示part

在連接線的一端加上空心菱形,表示一項類別(菱形端)對另一項類別有「整體與部份」的關聯。彙總的意思是 has-a ,通常是強調一項類別(菱形端)的包含了另一項類別的集合:例如,Man 有 身分證, 健保卡...等 (IDCard)。





組合 : (Composition) 『同生共死diamond表示whole,箭頭表示part

在連接線的一端加上實心菱形,表示一項類別(菱形端)除了對另一項類別有「整體與部份」的關聯之外、而且是由另一項類別組成。組合的關聯力比彙總強,Composition表示法與Aggregation的差異在於變成實diamond,其他完全一樣,跟Aggregation在意義的差異在於Composition強調『同生共死』, 以下圖來解釋, 當System物件死亡時,Component物件也要跟著死亡,但aggregation是『生死有命』,當System物件死亡時,Component物件並不特別去處理。






一般化/特殊化 : (Generalization/specialization) 

在連接線的一端加上空心三角形,表示一項類別(三角形端)是另一項類別的一般樣式;相對地,另一項類別是該類別的特殊樣式。一般化的意思是 is-a ,也是繼承的關係:例如,Bus 是一種車子。Bus 和 Taxi 是 Car 的子型(subtype),而Car 是母型(supertype) 。
可注意,一般化也可以用在使用案例圖,用來處理案例或參與者的從屬層次。





實現 : (Realization) 

用帶箭頭的虛線從一項類別拉到另一項類別、並在上方標示用雙角括號 « » 包含的關聯詞(動詞),表示一項類別實現了另一項類別的行為:例如,工程師與經理等角色都需要吃飯, 走路 etc . 故在 IPeople 的介面定義了所有Human being 都會有的行為。






依賴 : (Dependency) 

從一項類別拉出一條帶箭頭的虛線到另一項類別、不帶標示文字,表示一項類別依賴另一項類別提供的功能。

Spring ROO

01 project creation
02 creation and development of domain objects
03 adding fields of different types to the domain objects
04 creating relationships between domain objects
05 automatic creation of integration tests
06 creating workspace artifacts to import the project into your IDE
07 automatic scaffolding of a Web tier
08 running the application in a Web container
09 controlling and securing access to different views in the application
10 customizing the look and feel of the Web UI for our bussiness domain
11 creating and running Selenium tests
12 deployment and backup of your application


01
roo> project --topLevelPackage org.rooinaction.taskmanager --projectName  taskmanager


02
roo> logging setup --level WARN

03
roo> logging setup --level TRACE --package PROJECT

04
roo> jpa setup --database DERBY_EMBEDDED --provider ECLIPSELINK

05
roo> entity jpa --class ~.model.Task --testAutomatically

06
roo> field string --fieldName description --notNull --sizeMax  40

07
roo> field boolean --fieldName completed --value false

08
roo> web mvc setup

09
roo> web mvc all --package ~.web

10
roo> backup

11
$ mvn package jetty:run
roo>perform eclipse
perform eclipse之後,重更新STS中的專案,才可使用run server的指令

12
properties list --name database.properties --path SPRING_CONFIG_ROOT

13
properties set --name database.properties --path SPRING_CONFIG_ROOT --key password --value foob@r

14
focus --class ~.model.Course

15
























2013年2月18日 星期一

Rails 筆記


01
$ rails new tickets

02
rails generate scaffold ticket name:string seat_id_seq:string address:text
                                  price_paid:decimal email_address:string

03
rake db:migrate

04
$ rails g migration AddPhoneToTickets phone:string
注意:要手動更改頁面模板

05
設定哪些欄位值是可以被更改的,否則會出現Can't mass-assign protected attributes
fix app/models/ticket.rb

    class Ticket < ActiveRecord::Base
      attr_accessible :address, :email_address, :name, :price_paid, :seat_id_seq,:phone
    end


06
半自動,建立MODEL
$ rails g model ad name:string description:text price:decimal seller_id:integer email:string img_url:string

07
半自動,建立CONTROLLER
$ rails g controller ads

08
HTML頁面生成的流程,及路由(route)設定
    1.Controller的功用是產生Html所需的資料
    2.View(Page template)
    ERb將controller及view產生出Html

   但ERb要知道在什麼情況下要找哪一個controller和view配對使用,這透過Route來定義!

   Route典型的指定方式:(config/routes.rb)
                     match      "/ads/   :id"  => "ads   #      show"
                                             URL Pattern  參數           Controller                View
                                                                                     ads_controller.rb      show.html.erb
09
Ruby
表達式<%= ......%>  <%= @ad.name %>
腳本段<%   ......%>
            <% for ad in @ads %>
                 <li><a href="/ads/<%= ad.id %>"><%= ad.name %></a></li>
           <% end %>

10
控制器的例子
 # GET /tickets/1
  # GET /tickets/1.json
  def show
    @ticket = Ticket.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @ticket }
    end
  end

  # GET /tickets/new
  # GET /tickets/new.json
  def new
    @ticket = Ticket.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @ticket }
    end
  end










2013年2月17日 星期日

Rails 安裝

http://rubyonrails.org/download

1

Ruby


2
gem install rails

or gem install rails --no-ri --no-rdoc

3
Install the DevKit

  3.1
  Download Development Kit from here http://rubyinstaller.org/downloads/

  3.2
  Unzip the zip
  open command-line and go to unzipperd folder
  3.3
  ruby dk.rb init
  ruby dk.rb install
  gem install rdiscount --platform=ruby

4
 Install IDE

Aptana RadRails



5
從IDE中新增一個Rails專案來測試一下!
或在CMD中用rails new helloWorld



attr_accessible


從 Github 被 Hack,談 Rails 的安全性  Mass-assignment )


Rails 也不是沒有針對這件事設計出防禦措施,有兩組 model API :attr_accessible 與 attr_protected。其實也就是 白名單、黑名單設計。
把 attr_accessible 加在 model 裡,可以擋掉所有 massive assignement 傳進來的值,只開放你想讓使用填寫的欄位。

1
2
3
class Post < ActiveRecord::Base
  attr_accessible :title, :content
end

而 attr_protected 是完全相反地機制。
……

XSS V.S. Massive Assignment

後來睡醒以後才發現不對,其實這東西應該要被拿來跟 auto escape 相比:XSS 是一般設計 Web Application 最容易中招的攻擊。
XSS 的原因肇因是讓開發者開放讓使用者自行輸入內容,然後無保護的讀出來,Hacker 會利用這種漏洞,寫進有害的 JavaScript 讓使用者中招。正確的方式應該是:內容讀出來之後,都要利用 html_escape 濾掉。
問題是,html_escape 濾不勝濾,沒有開發者能夠那麼神,寫任何一段 code 都會自律的加上 h(content)。最後 Rails core 痛定思痛,在 Rails 3.0 後效法 Django 的設計,在讀出 content 時,一律先 escape。除非有必要,才另行設定不需 escape。
我想這次的 massive assignment 問題應該也要比照辦理才對…






2013年2月4日 星期一

子夜讀信 —洛夫

子夜的燈
是一條未穿衣裳的
小河

你的信像一尾魚游來
讀水的溫暖
讀你額上動人的鱗片
讀江河如讀一面鏡
讀鏡中你的笑
如讀泡沫

2013年2月3日 星期日

成人和兒童的區別

成人和兒童的區別,在於玩具的價格不同……

Exception Handling (四)


Best Practices for Exception Handling

先記錄一下!!

Exception Handling (三)


10 Best Practices With Exceptions




  • 1 Relevancy
  •      keep the exceptions you throw relevant to the interface.
  • 2 Encapsulation
  •     throws only exceptions that are relevant to the interface
  • 3 Reason
  •     The exceptions must always say what caused them=>To create a generic exception and describe what caused it
  • 4 Exception names
  •     My advice is to avoid using thejava.lang.Exception as it is too generic and gives too little information about what went wrong.
  • 5 Balance what you catch
  • } catch (ClassCastException e1) {
       ...
    } catch (FileNotFoundException e) {
       ... 
    } catch (IOException e) {
       ...
    }
  • 6 Scoping
  •     How long should a try block be?
  • 7 Use Finally
  • } finally {
        try {
          output.close();
        } catch (Throwable e) {
          e.printStackTrace();
        }
    }
  • 8 Throw only Exceptions
  • 9 Throw early catch late
  •     you should throw an exception as soon as you can and catch it late, wait until you have all the information to handle it properly.
  • 10 Add validation
  • if ( null == variable || variable.isEmpty()){
       throw new blahException("the variable cannot be null at this point");
    }


Exception Handling (二)

承上篇

Exception Handling (一)


再看一個討論的例子,

Java: Error handling in MVC project. How correct implement?

How do you want to handle the error on DAO layer? Return fake data? Empty collection? if you can't, just let the exception pop-up.


And how about handling on the service layer? You know that the database is not working, so what can you return to the Struts action? An empty result? An error object? Isn't exception an error object?
So the exception appears in the Struts action. Here you have some options. If the exception will actually tell something to the user and your GUI is prepared, you can return different view (and log the exception here).
But what if you catch a NullPointerException in Struts action? Will you handle it separately in every Struts action? No, so pass the exception even further (!)
I think you get the idea - as long as you don't know how to handle the exception (and logging is not handling), let the client clean-up the mess. Otherwise you are only hiding the problem and increasing the damages (e.g. transactions aren't rolled-back, users see incorrect results).
I would advice implementing generic exception handling mechanism which logs the exception and returns HTTP 500 to the user. Gentle error message (without stack trace) should appear and the user should be apologized. You should investigate every error that reaches this layer.
As far as I remember Struts (and virtually every web framework) has some centralized way of handling exceptions. (Struts 2 Exception Handling Docs)


Exception Handling (一)

在寫ANDROID上的RESTFUL Client程式時,又有了錯誤處理機制很重要的體認。

什麼才是有效又簡單的方法來處理程式可能會出現的錯誤情況?
目前的想法是分成兩部份,
一、處理
二、反映無法處理,通知接手的類別去處理。例如UI顯示網路連線有問題!
UI必需接受任何拋出的例外,處理並通知使用者!!

參考以下網址並節錄內容:

Java Essence: 要抓還是要丟?

1 、由 於操作檔案讀取的過程中,有許多方法可能丟出受檢例外(Checked Exception),你可能如上使用try..catch加以處理,在catch中以主控台方式輸出錯誤訊息,但問題在於,你並不知道你的程式庫會用在 什麼環境,是文字模式?視窗模式?或是Web應用程式?直接在catch中寫死處理處理例外或輸出錯誤訊息的方式,是一件不符合需求的方式。

2、如果你的方法設計流程中,發生例外時,當時的上下文環境並不知道該如何處理(例如你並不知道程式庫會用在什麼環境下時),那麼你可以丟出例外,讓呼叫你的方法的客戶端來處理。例如:
import java.io.*;
public class FileUtil {
    public static String readText(String file) throws FileNotFoundException {
        String text = null;
        FileReader reader = new FileReader(file)
        ...
        return text;
    }
    ....
}

3、當例外發生時,你可以使用try..catch處理當時環境下所可以作的錯誤處理,對於當時環境下無法決定如何處理的部份,可以丟出去給屆時的客戶端處理。如果你想先處理部份事項再丟出,則一個例子如下:
import java.io.*;
public class FileUtil {
    public static String readText(String file) {
        String text = null;
        FileReader reader = null;
        try {
            reader = new FileReader(file);
            ...
        }
        catch(FileNotFoundException ex) {
            // Logging 或 ex.printstackTrace()
            // 其它處理
            throw ex;
        }
        finally {
            if(reader != null) {
                try {
                    reader.close();
                }
                catch(IOException ex) {
                    // Logging 或 ex.printstackTrace()                    // 其它處理
                    throw ex;
                }
            }
        }

        return text;
    }
    ....
}
在進行完部份錯誤處理之後,你可以使用throw將例外再丟出,當你在流程中丟出例外,就直接跳離原有的流程。如果流程正常執行,最後一定要執行的動作可以放在finally區塊中。

4、一個有趣的問題是,如果程式撰寫的流程中先return了,而你也有寫finally區塊,那finally區塊還會執行嗎?答案是肯定的,finally區塊會先執行完後,再執行return。例如下面這個程式會先顯示「finally...」再顯示「1」:
public class Main {    
    public static int test(boolean flag) {
        try {
            if(flag) {
                return 1;
            }
        }
        finally {
            System.out.println("finally...");
        }
        return 0;
    }
    
    public static void main(String[] args) {
        System.out.println(test(true));
    }
}






聞一多《死水》

聞一多《死水》
這是一溝絕望的死水, 
清風吹不起半點漪淪。 
不如多扔些破銅爛鐵, 
爽性潑你的賸菜殘羹。 

也許銅的要綠成翡翠, 
鐵罐上銹出幾瓣桃花, 
再讓油膩織一層羅綺, 
黴菌給他蒸出些雲霞。 

讓死水酵成一溝綠酒, 
飄滿了珍珠似的白沫; 
小珠們笑聲變成大珠, 
又被偷酒的花蚊咬破。 

那麼一溝絕望的死水, 
也就誇得上幾分鮮明。 
如果青蛙耐不住寂寞, 
又算死水叫出了歌聲。 

這是一溝絕望的死水, 
這裏斷不是美的所在, 
不如讓給醜惡來開墾, 
看他造出個什麼世界。 

2013年1月15日 星期二

android工作規劃

1、專案引用方式
如何建立原本JAVA工作模式,透過ECLIPSE中不同專案,對專案進行引用
    BO、DAO、LOGIC、VIEW
    重覆使用DBHelper類

Library Projects

一个简单的Android Library Project例子

2、db4O
   2.1 BaseDao   BaseDaoImpl
                singleton?
                先參考MyMap範例
   2.2 one to many , many to many


規畫執行程序,搭建行動階梯, 把事情一次做對!


規畫執行程序,搭建行動階梯, 把事情一次做對!


事情做到一半才發現有所疏漏,以致影響工作進度;有很多方法可以將工作做好,卻不懂得活用;非得等到工作期限將屆、火燒屁股了,才開始動手;臨時狀況導致原訂計畫大亂,只得手忙腳亂地重新安排全部事務……
明明一開始也有心要將事情做好,為何最後老落得力不從心、草草以終呢?

不是工作太難,而是做法太粗糙

面對工作做不好的窘境,有些人或許會歸咎於自己才華不夠或能力不足,但日本知名教育學者與效率專家齋藤孝認為,這只是一種推諉的逃避心態。他在《規劃力》書中以「讀書和考試」為例說明,考試考不好時,一般人多半會以「這個科目我不拿手」當藉口,但其實問題主要出在於「溫書規畫不理想」或「考試時間分配不當」。
日本工作技巧訓練專家神澤順在《大工作術》書中也指出,人們在工作上之所以會手忙腳亂或漏洞百出,根本原因通常不是工作本身太過困難,而是實踐步驟太過粗糙──亦即,事前沒有以通盤觀點進行思考及規畫,凡事只憑臨機應變,致使「早知道先做XX就好了」的憾恨層出不窮。
因此,唯有坦承「規畫不夠周全,才讓事情進展不如預期」,才能正視問題的根源,找出解決之道。

規畫:預先安排工作流程


所謂「規畫」,日本管理大師大前研一在《研磨工作力》書中界定如下:「預先思考整體計畫,安排好工作執行的程序,創造一個讓所有人都不會白費力氣,而且高效率的工作情況。」
齋藤孝則指出,日本有句話說「規畫占工作的八成」,意思是工作的成敗有八成取決於規畫的完善與否。
事前規畫做得好,就像預先安排好旅遊動線及交通工具,由於已經全盤掌握工作的每一個環節,所以接下來只需逐一完成各作業細項即可;反之,如果走一步算一步,去到一個景點之後,才開始翻旅遊書、訂車票,很容易就會出現流程銜接不順,甚至是出錯或做白工的情況。

拆解:搭建達成目標的行動階梯

從上述可知,規畫可說是把工作做好的第一步,因為每一項任務或計畫,都會被賦予最終的目標及成果,所以勝負優劣的決戰點,就在於如何找出一條最省力、最高效率的路徑,在過程中踩著從容的步調,從「現狀」通往「目標」。
關於工作執行順序的安排,齋藤孝做了一個很傳神的比喻:工作規畫就如同在「現狀」與「目標」這兩點之間,建立起一道「階梯」,透過拆解工作流程,帶領人們一步一步走向終點。用階梯做比喻,象徵著工作規畫的三大意義:
一是唯有每一階與每一階確實銜接,才構成階梯。因此,沿著階梯前進時,沿途中若有任何一階踩空了,便可以立即察覺執行步驟的設計有所疏漏,還能明確掌握錯誤的位置與範圍,及時進行修正,讓工作執行不至於中斷。
二是階梯的每一階,都必定是雙腳可以跨上的高度與距離。這意味著,若想要實現目標,除了要切割工作流程,釐清各個階段應該完成哪些作業外,還必須確保每一個細分的作業項目,都是可以被確實完成的大小與份量。如此,工作者才能對整體工作進行的狀況進行管理,並輕易掌握進度。
三是階梯能讓距離遠近變得明確,每當躍過一階,都可以測量自己距離目標又近了一步。這種可以具體感受到的「進展」,將可為工作者帶來成就感及更大的幹勁:只要再往前一步、再往前一步⋯⋯就快要抵達終點了。

7步驟完成工作規畫,晉升工作達人

針對如何將整體工作拆解成明確可執行的細部作業,在彙整二十餘本相關主題的書籍之後發現,不同作者對於流程的劃分與切割或許見解不同,但大抵都會涵蓋以下3個概念:對目標方針的確認、對執行作業的細分,以及對時間的安排與掌控。
畢竟,過程安排得再縝密、時間掐得再怎麼緊,方向錯了也是徒勞無功;不標再怎麼遠大、執行得多麼漂亮,時程延遲了也是枉然。
以此為基礎,一項工作的規畫大致可拆解為7個步驟:1.制定明確目標→2.拆解作業流程→3.理出優先順序→4.委派分配任務→5.精準掌握時程→6.找出風險因子→7.總結檢討改善
這7道步驟構成了一個工作管理與改善的循環,唯有完整走完整個流程,並將每一次經驗做為下一次改善的起點,才能讓工作規畫愈來愈精進,晉升做事思緒明晰、從容自信的工作達人。

建立一個系統然後拋棄它……

建立一個系統然後拋棄它,只有你做完事情後,才能真正地領會到實際上事情應該怎麼做。

2013年1月14日 星期一

隨想隨查:簡單又有效的管理

簡單又有效的管理

拿這個字來google,有用的結果如下……
管理要簡單又有效,沒什麼好答案……

管理的智慧就在於用什麼方式是簡單而又有效,那是管理的目標,管理者的智慧,卻不是一項產品、某種方式、某本書……


能審時度勢,才是大智慧。中醫辨證……難啊!



目標:簡單有效的常識管理

简单管理
     所谓简单管理,就是说在企业运作过程中,准确找到并把握事物的规律,去伪存真,由此及彼,由表及里。


简单管理的实现方法
  简单管理的实现,需要企业:

  1.凡事找规律,需要企业内部有系统的制度或者文化。

  2.锻造学习型组织,为避免落入僵化的、经验管理的圈套,企业内部需要引入学习的理念。

  3.扁平式组织结构,宽道窄距的扁平式结构,是实现简单管理的基础。

  4.优化业务流程和系统。

  5.强调执行,把理念转为实际行动。

如何让管理变得既简单又有效?《一分钟经理人》告诉您!
    【第一个诀窍:一分钟目标】
一分钟经理人认为:描述一个目标及其实现标准不应该超过250字。他认为,任何人应该都能在一分钟之内把这个目标读一遍。写好目标之后,我们俩各一份,这样一切任务就很清楚了,我们也能根据这些目标来定期检查工作进度。

    【第二个诀窍:一分钟称赞】
透過執行者的每一步表現,做每一步的稱讚,引導執行者最終達到目標。

【第三个诀窍:一分钟批评】
不要累積錯誤一次批評,逐步的回饋就是逐步的引導。
每次只针对一个行为进行批评的时候,就会让人感觉更公平,也更明确,接受批评的人也能够听进去反馈信息。

【经理人最好的投资就是把时间花在人的身上】
自我感觉良好的人,才能做出优秀的业绩。因而,帮助别人获得良好的自我感觉,就是提高效率的关键。

不懂帶人,你就自己做到死!


不懂帶人,你就自己做到死!行為科學教你把身邊的腦殘變幹才



帶人的關鍵是「行為」,而不是「心」!你沒辦法改變別人的態度和個性,但是你可以改變他的行為!

學會「教的技術」,讓你不管是誰,也無論何時何地,都能放心把事情交給別人做!
◎所謂的「教」,就是引導對方做出你想要他做的行為。
◎想要讓人完成工作,就要讓他了解透過這樣的工作能得到如何的成長。
◎教的內容,要分成能夠回答的「知識」和能夠去做的「技術」。
◎教的方法,一定要能非常具體的呈現。
◎每次只教三件事,不必做的事情,也要告確實告知。
◎稱讚很重要,它是讓人持續進行的重要動力。
◎可以訓斥,但你不能生氣,因為憤怒只會讓人的「行為」跟著消失。
◎只要能夠持續保持良好表現,就算結果不佳,也要給予好評。



Peopleware: 腦力密集產業的人才管理之道

<<博客來>>

書中的經典名言:
  .對屬下的真心關懷,就是管理。
 .身處時間壓力下的人不會把工作做得更好,只會做得比較快,結果被迫交出低品質的產品,自尊心降低,最後辭職不幹。
 .團隊殺手一覽表:防禦式管理、官僚作風、實體隔離……
 .讓團隊產生化學作用的方法……
 .容許建設性的混亂,過度強調秩序只會排擠人才。
 .給員工一個足夠安靜、不受無謂干擾的辦公環境。
 .知識工作者就像自由電子,無為而治才是最有效的管理。
 .終極的管理罪惡,就是浪費員工的時間。例如儀式性的會議。

 如何真正發揮人才的力量,這本書做了最佳建議。對於今天越來越重要的知識型產業、創意產業,這本書都值得參考。對於管理者來說,則是每年都該讀一次。



目錄

致謝
第二版序
初版序
第一部 管理人力資源 
1 當下,有個專案即將失敗
2 做起司漢堡,賣起司漢堡 
3 維也納等著你 
4 品質──倘若時間允許的話 
5 重審帕金森定律 
6 苦杏仁素 
第二部 辦公室環境
7 傢俱糾察隊 
8 「從上午九點到下午五點根本做不了任何事」 
9 在空間上省錢 
插曲:生產力評量與幽浮
10 腦力時間與身體時間 
11 電話 
12 把門找回來
13 雨傘步(辦公空間的永恆之道)
第三部 適任的人 
14 霍布洛爾因素 
15 僱用雜耍小丑 
16 很高興能待在這裡
17 自我修復系統 
第四部 培育高生產力的團隊
18 一加一大於二
19 黑色團隊
20 團隊殺手
21 義大利麵晚餐
22 敞開心胸
23 團隊形成的化學作用 
第五部 在此工作應是樂事一樁
24 混亂與秩序
25 自由電子
26 霍爾格.丹斯克 
第六部 續集
27 再談團隊殺手
28 競爭
29 流程改善計畫
30 讓改變發生
31 人力資本
32 組織學習
33 終極的管理罪惡是……
34 打造社區
註釋 
參考文獻
索引
譯後記