賈爾.雷諾思(Garr Reynolds)
簡報製做初期如果能從"類比世界"出發,用指語比將構想擬成草稿,那麼等到我們以數位方式表達構想時,會看得看清楚,催生出更具創意的成果
----------------------------------------------------------------------
一旦敲定故事,設計投影片輕而易舉。
擄獲觀眾想像力告的是故事,不是投影片。
一個願景就算簡單到可以寫在餐巾紙上,也不要低估他的潛力。
卓越簡報9要素
新聞式標題
熱情宣言
三個關鍵訊息
隱喻與類比
itune是他們最愛用的Windows應用程式,就像在煉獄受苦的人拿到一杯冰水。
2010年4月12日 星期一
MS SQL 2005
很討厭,從SQL2000轉換到SQL2005真的有點痛心,雖有支援PARTION但能量卻不及於2000,cpu, memory 一瞬間較標高,降不下來,真不知該怎麼辦,我真的還要用他嗎?
查察SQL2005的資料庫吧,到底是哪個語法讓資料庫CPU一直狂漲。
查詢CPU的語法
SELECT
total_cpu_time,
total_execution_count,
number_of_statements,
s2.text
--(SELECT SUBSTRING(s2.text, statement_start_offset / 2, ((CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(NVARCHAR(MAX), s2.text)) * 2) ELSE statement_end_offset END) - statement_start_offset) / 2) ) AS query_text
FROM
(SELECT TOP 50
SUM(qs.total_worker_time) AS total_cpu_time,
SUM(qs.execution_count) AS total_execution_count,
COUNT(*) AS number_of_statements,
qs.sql_handle --,
--MIN(statement_start_offset) AS statement_start_offset,
--MAX(statement_end_offset) AS statement_end_offset
FROM
sys.dm_exec_query_stats AS qs
GROUP BY qs.sql_handle
ORDER BY SUM(qs.total_worker_time) DESC) AS stats
CROSS APPLY sys.dm_exec_sql_text(stats.sql_handle) AS s2
P.S. 有一個奇怪的地方,我沒卻搞懂 "sys.dm_exec_sql_text" 為啥有些電腦不能跑?
查察SQL2005的資料庫吧,到底是哪個語法讓資料庫CPU一直狂漲。
查詢CPU的語法
SELECT
total_cpu_time,
total_execution_count,
number_of_statements,
s2.text
--(SELECT SUBSTRING(s2.text, statement_start_offset / 2, ((CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(NVARCHAR(MAX), s2.text)) * 2) ELSE statement_end_offset END) - statement_start_offset) / 2) ) AS query_text
FROM
(SELECT TOP 50
SUM(qs.total_worker_time) AS total_cpu_time,
SUM(qs.execution_count) AS total_execution_count,
COUNT(*) AS number_of_statements,
qs.sql_handle --,
--MIN(statement_start_offset) AS statement_start_offset,
--MAX(statement_end_offset) AS statement_end_offset
FROM
sys.dm_exec_query_stats AS qs
GROUP BY qs.sql_handle
ORDER BY SUM(qs.total_worker_time) DESC) AS stats
CROSS APPLY sys.dm_exec_sql_text(stats.sql_handle) AS s2
P.S. 有一個奇怪的地方,我沒卻搞懂 "sys.dm_exec_sql_text" 為啥有些電腦不能跑?
2010年4月10日 星期六
大家來看賈伯斯

說故事 並不是每個都會的 我的語言笨拙、文筆又不好 想有一番做為 到時也是辛苦
誰願意賺辛苦錢? 希望從這書中找到學習與努力的方法
文中提到幾句有意思的話,咀嚼一番...
葛瑞格里.伯恩斯(Gregory Berns)
一個人如果無法說服別人,就算擁有全世界最偉大、最獨特、最新穎的構想,也是徒勞無功。
彼得.杜拉克(Peter Drucker)
只要你開始從職場基層向上移動,你的成敗將決定於能否運用語言和文字來與別人溝通。
賈伯斯(Steve Jobs)
我們要做品質的標竿。當工作環境要求個人做出卓越的表現,有些人就是無法適應。
我們上路吧(Now let's get started)
----------------------------------------------------------------------
1. 無法利用簡報有效溝通傳播,構想與努力可能化為泡影,個人事業可能一蹶不振。
2. 每當你看到人們將熱情轉化為有利可圖的事業,你就應該問問自己:為什麼我做不到?
3. 最能激勵人心的溝通者都有這樣的特質:從內行專業或者尋常平凡的產品中,創造出意義豐富的事物。
4. 光是產品並不足已鼓舞人心,你必須展現這項產品如何改變生活,才能夠博得人們的支持。如果展現過程樂趣洋溢,美不勝收,你還可以讓人成為你的忠實信徒。
5. 就算是全世界最了不起的產品,如果沒有鍥而不捨地推廣,也是無用武之地。如果你無法讓人關心在意,你的產品永遠與成功無緣。
2010年3月25日 星期四
Android and HttpRequest I
public String getHttpRequest(String urlstr) {
// TODO Auto-generated constructor stub
String result="";
try
{
HttpClient hc = new DefaultHttpClient();
HttpEntity entity = null;
HttpGet httpget = new HttpGet(urlstr);
HttpResponse rp = hc.execute(httpget);
if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
entity = rp.getEntity();
result = EntityUtils.toString(entity);
}
else
{
result="err";
}
hc.getConnectionManager().shutdown();
}
catch (Exception se)
{
result=se.getMessage();
}
return result;
}
// TODO Auto-generated constructor stub
String result="";
try
{
HttpClient hc = new DefaultHttpClient();
HttpEntity entity = null;
HttpGet httpget = new HttpGet(urlstr);
HttpResponse rp = hc.execute(httpget);
if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
entity = rp.getEntity();
result = EntityUtils.toString(entity);
}
else
{
result="err";
}
hc.getConnectionManager().shutdown();
}
catch (Exception se)
{
result=se.getMessage();
}
return result;
}
2010年3月16日 星期二
Android and SQLite II
private String mDBPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/";
private String mDBFilename = "";
SQLiteDatabase database;
String mDirectory ="myDB";
//設定資料庫路徑
public void setDatabase(String Directory,String DBFile ) {
// TODO Auto-generated constructor stub
mDirectory = Directory;
mDBFilename = DBFile;
}
//將資料庫傳送到記憶卡
public SQLiteDatabase OpenDB(Context con,int RFile)
{
try
{
String DBFile = mDBPath + mDirectory+"/" + mDBFilename;
File dr = new File(mDBPath + mDirectory);
if(!dr.exists()) dr.mkdir();
if(!(new File(DBFile)).exists())
{
InputStream is = con.getResources().openRawResource(RFile);
FileOutputStream fos = new FileOutputStream(DBFile);
byte[] b = new byte[8192];
int count=0;
while((count=is.read(b))>0)
{
fos.write(b,0, count);
}
fos.close();
is.close();
}
database = SQLiteDatabase.openOrCreateDatabase(DBFile, null);
return database;
}
catch(Exception se)
{
throw new RuntimeException(se.getMessage());
}
}
//讀取資料庫內容
// [HASPMap[String,String]] > < 不能用 ][取代
public ArrayList [HASPMap[String,String]] getDBTable(String table, String[] Fields)
{
ArrayList[HASPMap[String,String]] dbdata = new ArrayList[HASPMap[String,String]]();
Cursor c= database.query(table, Fields, null, null, null, null, null);
for(int i=0;i {
c.moveToPosition(i);
[HASPMap[String,String]] d = new [HASPMap[String,String]] ();
for(int j=0; j {
d.put(Fields[j], c.getString(j));
}
dbdata.add(d);
}
return dbdata;
}
private String mDBFilename = "";
SQLiteDatabase database;
String mDirectory ="myDB";
//設定資料庫路徑
public void setDatabase(String Directory,String DBFile ) {
// TODO Auto-generated constructor stub
mDirectory = Directory;
mDBFilename = DBFile;
}
//將資料庫傳送到記憶卡
public SQLiteDatabase OpenDB(Context con,int RFile)
{
try
{
String DBFile = mDBPath + mDirectory+"/" + mDBFilename;
File dr = new File(mDBPath + mDirectory);
if(!dr.exists()) dr.mkdir();
if(!(new File(DBFile)).exists())
{
InputStream is = con.getResources().openRawResource(RFile);
FileOutputStream fos = new FileOutputStream(DBFile);
byte[] b = new byte[8192];
int count=0;
while((count=is.read(b))>0)
{
fos.write(b,0, count);
}
fos.close();
is.close();
}
database = SQLiteDatabase.openOrCreateDatabase(DBFile, null);
return database;
}
catch(Exception se)
{
throw new RuntimeException(se.getMessage());
}
}
//讀取資料庫內容
// [HASPMap[String,String]] > < 不能用 ][取代
public ArrayList [HASPMap[String,String]] getDBTable(String table, String[] Fields)
{
ArrayList[HASPMap[String,String]] dbdata = new ArrayList[HASPMap[String,String]]();
Cursor c= database.query(table, Fields, null, null, null, null, null);
for(int i=0;i
c.moveToPosition(i);
[HASPMap[String,String]] d = new [HASPMap[String,String]] ();
for(int j=0; j
d.put(Fields[j], c.getString(j));
}
dbdata.add(d);
}
return dbdata;
}
2010年3月13日 星期六
Android and SQLite I
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
public class main extends Activity implements OnClickListener, TextWatcher {
private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/myDB";
private final String DATABASE_FILENAME = "etraffic.sqlite";
SQLiteDatabase database;
Button btnSelectWord;
AutoCompleteTextView actvWord;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
database = openDatabase();
btnSelectWord = (Button) findViewById(R.id.btnSelectWord);
actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord);
btnSelectWord.setOnClickListener(this);
actvWord.addTextChangedListener(this);
}
public void onClick(View view)
{
String sql = "SELECT * FROM FreewayPoint_CCTV where cctv_id=?";
Cursor cursor = database.rawQuery(sql, new String[]{
actvWord.getText().toString()
});
String result = "找不到";
if(cursor.getCount()>0)
{
cursor.moveToFirst();
result=cursor.getString(cursor.getColumnIndex("roadsection"));
}
myClass cl =new myClass();
cl.Alert(result, "Title", this);
}
private SQLiteDatabase openDatabase() {
try {
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is = getResources().openRawResource(
R.raw.etraffic);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
import java.io.FileOutputStream;
import java.io.InputStream;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
public class main extends Activity implements OnClickListener, TextWatcher {
private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/myDB";
private final String DATABASE_FILENAME = "etraffic.sqlite";
SQLiteDatabase database;
Button btnSelectWord;
AutoCompleteTextView actvWord;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
database = openDatabase();
btnSelectWord = (Button) findViewById(R.id.btnSelectWord);
actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord);
btnSelectWord.setOnClickListener(this);
actvWord.addTextChangedListener(this);
}
public void onClick(View view)
{
String sql = "SELECT * FROM FreewayPoint_CCTV where cctv_id=?";
Cursor cursor = database.rawQuery(sql, new String[]{
actvWord.getText().toString()
});
String result = "找不到";
if(cursor.getCount()>0)
{
cursor.moveToFirst();
result=cursor.getString(cursor.getColumnIndex("roadsection"));
}
myClass cl =new myClass();
cl.Alert(result, "Title", this);
}
private SQLiteDatabase openDatabase() {
try {
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is = getResources().openRawResource(
R.raw.etraffic);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
PostGIS and PostgreSql 功能說明
環域
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.0),"gisPoints");
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.1),"gisPoints");
select * from "GISpoint" where st_within "gisPoints“,buffer(st_geomfromtext('Point(2 2)'),1.1))
交集
select "CountyNameCht","TownNameCht","CountyNameEng","TownNameEng","CountyId","TownId"
from "CityTown" where st_intersects("geom",buffer(st_geomfromtext('Point({0} {1})'),{2})
吸附
select astext("geom"),line_interpolate_point("geom", line_locate_point("geom", PointFromText('Point(322655 2778900)')))
from "RoadSpeed"
order by Distance("geom",PointFromText('Point(322655 2778900)')) limit 1
坐標轉換
spatial_ref_sys
select * from "spatial_ref_sys"
select * from "spatial_ref_sys" where "srid"=4326 (WGS84)
select * from "spatial_ref_sys" where "srid"=3828 (TWD67 -121)
select * from "spatial_ref_sys" where "srid"=3826 (TWD97 -121)
select "Id", "TownId","TownCode","CountyNameCht", "TownNameCht","CountyNameEng", "TownNameEng", "CountyId",
st_transform(setsrid(geom,4326),3826) as geom
into "CityTown_67“ from "CityTown“
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2)
由空間資訊轉換坐標字串
select st_astext(geom) from \"BusPathLine\"
算距離
st_distance(geom,st_geomfromtext('Point(121.12341 24.23432)')
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.0),"gisPoints");
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.1),"gisPoints");
select * from "GISpoint" where st_within "gisPoints“,buffer(st_geomfromtext('Point(2 2)'),1.1))
交集
select "CountyNameCht","TownNameCht","CountyNameEng","TownNameEng","CountyId","TownId"
from "CityTown" where st_intersects("geom",buffer(st_geomfromtext('Point({0} {1})'),{2})
吸附
select astext("geom"),line_interpolate_point("geom", line_locate_point("geom", PointFromText('Point(322655 2778900)')))
from "RoadSpeed"
order by Distance("geom",PointFromText('Point(322655 2778900)')) limit 1
坐標轉換
spatial_ref_sys
select * from "spatial_ref_sys"
select * from "spatial_ref_sys" where "srid"=4326 (WGS84)
select * from "spatial_ref_sys" where "srid"=3828 (TWD67 -121)
select * from "spatial_ref_sys" where "srid"=3826 (TWD97 -121)
select "Id", "TownId","TownCode","CountyNameCht", "TownNameCht","CountyNameEng", "TownNameEng", "CountyId",
st_transform(setsrid(geom,4326),3826) as geom
into "CityTown_67“ from "CityTown“
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2)
由空間資訊轉換坐標字串
select st_astext(geom) from \"BusPathLine\"
算距離
st_distance(geom,st_geomfromtext('Point(121.12341 24.23432)')
訂閱:
意見 (Atom)