顯示具有 Internet 標籤的文章。 顯示所有文章
顯示具有 Internet 標籤的文章。 顯示所有文章

2009年2月3日 星期二

Scene7 的說明



http://help.adobe.com/en_US/Scene7/4.0/WS26AB0D9A-F51C-464e-88C8-580A5A82F810.html

Scene7 的使用說明


Scene7 的使用說明

http://help.adobe.com/en_US/Scene7/4.0/WS26AB0D9A-F51C-464e-88C8-580A5A82F810.html

2009年1月21日 星期三

Camera rankings

Camera rankings


http://www.dxomark.com/index.php/eng/DxOMark-Sensor/Camera-rankings

Microsoft Silverlight DeepZoom

Viewing Large Images - OpenLayers, GSIV, ModestMaps, DeepZoom, and Python







Viewing Large Images - OpenLayers, GSIV, ModestMaps, DeepZoom, and Python






Lately
I’ve been experimenting with displaying very large images on the
internet via a web browser, with pan and zoom functionality. The guts
of this functionality are the same regardless of implementation. On the
server, a tile cutter processes a large image, and constructs an image
pyramid. The image pyramid is a hierarchical structure composed of n
levels of the same image at different resolutions. Starting with the
bottom level as the original image, each successive level reduces the
image size by half, and the process is repeated log_2( max( width,
height)) times until finally an image of only 1 pixel (average of
entire image) is generated as the top of the pyramid. Each level’s
image is split into a set of fixed size tiles. A web browser client
implementation ( flash, ajax, etc) constructs  a zoom interface, that
responds to zoom in events by moving the viewport progressively further
down the pyramid, showing tile images of the larger resolution to give
the effect of zooming into an image. A nice illustrated write up of the
concept can be found here. I’ve probably made it sound more complicated than it really is.


The initial implementation I was working with utilized OpenLayers, which implements a client for accessing OpenGIS Web Feature Servers (WFS) and Web Mapping Servers (WMS).
Unfortunately the size of the library seems to be constantly increasing
(~200K in the last year) and currently weighs in at 560K uncompressed,
and requires a special implementation to serve up the tile images, ie.
a WMS Compliant system, in this case TileCache. For scaling and efficiency purposes, I’d much prefer to directly serve these images off a CDN, disk (nginx), or via varnish
and bypass any application code. Additionally the sheer size of the
OpenLayers code was unwieldy for the integrations requirements I had,
which did not include any GIS functionality.


Surveying the land for other non-commercial image viewers, turned up a few of interest. GSIV
( Giant Scalable Image Viewer), was a fairly basic but capable
javascript based viewer, that fit my requirements bill, small size at
26Kb uncompressed, and focused on pan and zoom functionality (demo).
However as a project it appears to be abandoned, and hasn’t been
touched in two years, although several patches have been submitted
which retrofit the implementation using jquery are extant.


I came across ModestMaps next, which is a flash (2 & 3 ) based implementation, with a small size (demo).
One nice feature of modest maps, is that it performs interpolation
between successive levels giving a smooth zoom experience to an end
user unlike somewhat jerky experience that GSIV produced. Unfortunately
being flash based meant a whole different chain of development tools. I
looked around at what was available for an opensource flash compiler
toolchain and found MTASC (Motion Twin Action Script Compiler ) and Haxe.
In the end i decided against it, partly due to its GIS focus, and the
customization/ maintenance cost for developing on propretiary platform
(Flash). Despite that, i think its the best of the opensource viewer
implementations if your already have/use an adobe flash development
stack.


I was set on using GSIV, and then i came across a blurb on ajaxian
about Seadragon Ajax and Deep Zoom from Microsoft’s Live Labs.
Microsoft’s done some impressive work with image manipulation over the
last few years. The PhotoSynth TED talk is one of the most impressive technology demos i’ve seen to date. Deep Zoom is a SilverLight technology ( more propretiary platform lockin), that allows for multiscale image zooming with smooth zooming. The Seadragon Ajax
is a javascript implementation of the same functionality in a 154k
library ( 20k minimized and gzipped). It fit the bill perfectly,
standards (javascript) based, image zoom and pan, with a great user
experience. One problem unlike all the other tools mentioned here,
which have python based tile cutting implementations, Deep Zoom was
utilizing a Windows only based program to process images and cut tiles.
I had a couple of hundred gigabytes of images to cut, and not a windows
system in sight. But based on this excellent blog write up by Daniel Gasiencia,
I constructed a python program using PIL that can be used as a command
line tool or library for constructing Deep Zoom Compatible image
pyramids. It can be found here,
hopefully its useful to others. As a bonus, it runs in a fraction of
the memory (1/6 by my measurements) needed by the GSIV image tile
cutter and faster as well ( 100 images in 5m vs 1.25hr). Unfortunately
the Seadragon Ajax Library is not opensource, but non commercial usage
seems to be okay with the license, and i’ll give it over to some
lawyers to figure it out.


To process the several hundred gigabytes of images, i utilized this library and wrote a batch driver utilizing  pyprocessing remote queues, a small zc.buildout and cloudcontrol to process the images across a cluster, but thats left as an implementation detail for the reader

Photo Zoom Tools


http://www.softsia.com/flash-photo-zoom-download-1.html

2009年1月20日 星期二

Image Optimization 讀書心得


前言



上個月在 YUI Blog 上有 4 篇 Image Optimization 的連載,若你重視網站的效能,這篇是非常經典且必讀的文章。
主要在於圖片格式的介紹、使用免費的命令列工具縮小圖片但不失真。難能可貴的是,作者 Stoyan Stefanov 也做了許多的實際測試,讓這系列的文章非常有說服力。以下為文章列表:

http://josephj.com/entry.php?id=209


Flash Image Zoom



http://www.flashden.net/item/zoom-pan-controls-with-dynamic-image-settings/15713?page=5

2009年1月15日 星期四

Popular Science Magazine架站案例分享


http://drupaltaiwan.org/forum/20080325/1976

Popular Science Magazine screenshot

2009年1月7日 星期三

PHP: Object Oriented Web Forms

As I've gone from project to project over the years I've built up my
personal code library. One piece of code that I've found extremely
useful time and time again is an object oriented class for building web
forms. It allows me to keep consistent looking/acting forms throughout
a web application, rapidly develop new forms, make global changes by
editing a single file, and keep all the logic of a form within one file.


The following code and examples are for php version 5 or higher.


Example 1: The Basics

include("forms.php");
 
function Button1Clicked(&$data,&$error){
$error .= "Field 1 = ".$data["field1"]."<br/>";
$error .= "Field 2 = ".$data["field2"]."<br/><br/>";
$error .= "You clicked Button 1. <br/>";
 
return true;
}
 
$form = new form("myform");
 
$element = new form_element_text("field1","Field 1","This is field 1");
$form->add($element);
 
$form->newline();
 
$element = new form_element_text("field2","Field 2","This is field 2");
$form->add($element);
 
$form->newline();
 
$element = new form_button("Button 1","Button1Clicked");
$form->add($element);
 
$form->run();
Download or View Demo




Example 2: Pre-loading Data

function LoadData(&$data,&$error){
 
// Load initial data here.
$error .= "Data Loaded!!<br/>";
 
return true; // return true to show form and false to not show it.
}
 
...
 
$form = new form("myform", "LoadData"); // Call LoadData on load.
 
...
Download or View Demo




Example 3: Buttons

...
 
function Button1Clicked(&$data,&$error){
$error .= "You clicked Button 1. <br/>";
return true;
}
 
function Button2Clicked(&$data,&$error){
echo "You clicked Button 2. <br/>";
echo "<a href='example3.php'>Click here to go back.</a>";
return false;
}
 
...
 
$element = new form_button("Button 1","Button1Clicked");
$form->add($element);
 
$element = new form_button("Button 2","Button2Clicked");
$form->add($element);
 
$element = new form_button("Button 3");
$element->submit = false;
$element->on["Click"] = "alert('You clicked Button 3!!');";
$form->add($element);
 
...
Download or View Demo




Example 4: Individual Element Styling

Most of the styling is done via the forms.css file but occasionally you'll need to apply a style to an individual element.

...
 
$element = new form_element_text("field1","Field 1");
$element->style = "width: 400px;";
$form->add($element);
 
...
Download or View Demo




Example 5: Validation

Form validation is done through making an element required and/or
applying a regular expression to an element that the value must match.
If you need more complicated validation then you would put that logic
within the function associated with a form_button.

...
 
function Button1Clicked(&$data,&$error){
if ($data["field1"] == strtoupper($data["field1"])){
echo "Form Validated!<br/>";
echo "<a href='example5.php'>Click here to continue.</a>";
return false; // Don't show form.
}else{
$error .= "Field 1 must be all uppercase.<br/>";
return true;
}
}
 
...
 
$element = new form_element_text("field1","Field 1","UPPERCASE only.");
$element->required();
$form->add($element);
 
...
 
$element = new form_element_text("field2","Field 2","Integer value only.");
$element->required();
$element->regex("\d+","Field 2 must be an integer.");
$form->add($element);
 
...
Download or View Demo




Note that Button1Clicked() never gets called until the built-in form validation passes.





Example 6: Other Form Elements

...
 
$element = new form_element_text("field1","text");
$form->add($element);
 
$form->newline();
 
$element = new form_element_password("field2","password");
$form->add($element);
 
$form->newline();
 
$element = new form_element_textarea("field3","textarea");
$element->cols = 50;
$element->rows = 3;
$form->add($element);
 
$form->newline();
 
$element = new form_element_checkbox("field4","checkbox");
$form->add($element);
 
$form->newline();
 
$element = new form_element_select("field5","select");
$element->option("","");
$element->option("option1","Option 1");
$element->option("option2","Option 2");
$form->add($element);
 
$form->newline();
 
$element = new form_element_select("field6","select (multiple)");
$element->multiple = true;
$element->option("option1","Option 1");
$element->option("option2","Option 2");
$element->option("option3","Option 3");
$element->option("option4","Option 4");
$form->add($element);
 
$form->newline();
 
$element = new form_element_radio("field7","radio");
$element->option("option1","Option 1");
$element->option("option2","Option 2");
$form->add($element);
 
...
Download or View Demo




Download the Code


forms.php
The form class to include in your php code.

PHP: Easy Tabs for your webpages

PHP: Easy Tabs for your webpages









Easy tabs is a short and simple php class that makes it very easy to have tabbed dialogs in your webpages.



Usage


$tabs = new tabs("mytabs");
 
$tabs->start("Tab1");
// Tab1's content goes here....
$tabs->end();
 
$tabs->start("Tab2");
// Tab2's content goes here...
$tabs->end();
 
$tabs->run();





Examples




Here we just create 3 tabs and put some text in each one.


include("tabs.php");
 
$tabs = new tabs("example1");
 
$tabs->start("Tab #1");
echo "This is tab number one.<br/>";
$tabs->end();
 
$tabs->start("Tab #2");
echo "This is tab number two.<br/>";
$tabs->end();
 
$tabs->start("Tab #3");
echo "This is tab number three.<br/>";
$tabs->end();
 
$tabs->run();


View Example or Download Source




For a bit of a more complicated example, we use the forms class from a previous article to put some simple forms in each tab.

include("tabs.php");
include("forms.php");
 
function Form1_Button1_Clicked(&$data,&$error){
$error .= "You clicked button 1 on Form 1!<br/>";
return true;
}
 
function Form2_Button1_Clicked(&$data,&$error){
$error .= "You clicked button 1 on Form 2!<br/>";
return true;
}
 
 
$tabs = new tabs("example2");
 
$tabs->start("Form 1");
$form = new form("form1");
$element = new form_element_text("field1","Field 1","This is field 1");
$form->add($element);
$element = new form_element_text("field2","Field 2","This is field 2");
$form->add($element);
$element = new form_button("Button 1","Form1_Button1_Clicked");
$form->add($element);
$form->run();
if ($form->submitted){ $tabs->active = "Form 1"; }
$tabs->end();
 
$tabs->start("Form 2");
$form = new form("form2");
$element = new form_element_text("field1","Field 1","This is field 1");
$form->add($element);
$element = new form_element_text("field2","Field 2","This is field 2");
$form->add($element);
$element = new form_element_text("field3","Field 3","This is field 3");
$form->add($element);
$element = new form_button("Button 1","Form2_Button1_Clicked");
$form->add($element);
$form->run();
if ($form->submitted){ $tabs->active = "Form 2"; }
$tabs->end();
 
$tabs->run();


View Example or Download Source




Download


If you would like to use Easy Tabs you can download and include the tabs.php file below.

Also included is a sample tabs.css file to get you started on styling it to fit your website.

memcached - 解決高流量問題

memcached - 解決高流量問題




###################################################

# 文章來源 http://www.ecstart.com

# 作者 : FIEND

# 轉貼請註明出處

###################################################



介紹 :





現在機器的記憶體真的比起過去便宜太多了....



看到這個套件 感觸蠻多的 ^^ ....



使用這個套件 必需是個有經驗 而且具備分析和規畫能力的 programer ..



因為它必需要建置 services 時 就開始想怎麼去規畫它 .





http://tw2.php.net/manual/en/intro.memcache.php





什麼是 memcache :



memcache 官方網站的介紹 -



memcached is a high-performance, distributed memory object caching
system, generic in nature, but intended for use in speeding up dynamic
web applications by alleviating database load.



Danga Interactive developed memcached to enhance the speed of LiveJournal.com, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of webservers and a bunch of database servers.
memcached dropped the database load to almost nothing, yielding faster
page load times for users, better resource utilization, and faster
access to the databases on a memcache miss.





##############



台灣同時幾萬人就很了不起了 @@



百萬人環境 存取資料庫將會非常的可怕 , 一般這種流量等級的網站是絕對不會輕易的把資料庫的存取對外的 .



所以 能夠節省 動態網頁 / user 存取動作去接觸到 db 的動作 能快取就盡量快取 ( 最好能沒有 db 就盡量全部從 db doump 出靜態 html )



當然這樣的苦和想法 早在很久以前就大家都玩過了 , 很多做 http 技術多年的朋友們看到這個工具應該都會覺得現在的硬體科技進步太多了 ^^ .



而 這個工具主要是為了 降低 存取 資料庫次數及要求 將 動態網頁 所需要的存取行為快取下來 , 而沿生出來的工具 .



當然 它還有一個好處是可以去避免 sql injection 啦... @@





感想 :



@@ 不過 這麼幹算你狠 ....



我記得多年前 在某一家流量蠻大的公司...



@@ 同時線上人數四萬人 , 會員人數二百多萬..每日點擊次數 幾千萬 , 而且 server 還是 p4 1.x 及 p3 古董 等級的 cpu 而 記憶體 也才 幾百mb 就是屌了.



光是靜態的一個服務就要幾台 做 分散式架構了 ...而且 我們在做這種東西時都只能存在 硬碟 .. ( 記憶體那有這麼大 @@ )



而它提供了 記憶體存取 物件 , 而且可以 分散式的存取 .



現在寫程式的人真幸福... @@ 看到這個 tool 我直接聯想就是... 記憶體真便宜 哈哈哈....



這個玩法 之前和一個南非工程師在閒聊 他們公司是 java 好像也是用類似這樣的工具來做的 在南非有五萬人會同時去存取他們的伺服器...



用這個方法 一台伺服器就可以搞定五萬人同時存取... @@ 只是 記憶體用的超兇... 不過總比 買一堆伺服器好吧  ccc



在無名還沒賣掉前 我在 it home 看到 無名小站用了 幾百台伺服器才搞定 超高流量存取量的問題 ( 我家伺服器還在貨櫃上 厚~ 別跟大家說你用 php 架 services  ) .....



看到這篇報導時我覺得當時還真是會亂花錢 , 還好賣掉了 cccc ....



你家網站存取量超級高而且機器用很兇嗎??? 玩看看吧. ^^





範例

In this example, an object is being saved in the cache and then
retrieved back. Object and other non-scalar types are serialized before
saving, so it's impossible to store resources (i.e. connection
identifiers and others) in the cache.
複製內容到剪貼板
代碼:
<?php



$memcache = new Memcache;

$memcache->connect('localhost', 11211) or die ("Could not connect");



$version = $memcache->getVersion();

echo "Server's version: ".$version."

\n";



$tmp_object = new stdClass;

$tmp_object->str_attr = 'test';

$tmp_object->int_attr = 123;



$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");

echo "Store data in the cache (data will expire in 10 seconds)

\n";



$get_result = $memcache->get('key');

echo "Data from the cache:

\n";



var_dump($get_result);



?>
複製內容到剪貼板
代碼:
<?php



$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,&nbsp; ,tcp://$host:$port  ";

ini_set('session.save_handler', 'memcache');

ini_set('session.save_path', $session_save_path);



?>

2008年12月29日 星期一

Web Application 自動測試軟體

Selenium IDE - 測試,原來也可以這麼輕鬆


Filed under: JavaScript, Programming, Technologies, 技術 — Alan @ 23:27



Selenium IDE: Selenium IDE


今天介紹的這個工具真是做 web testing 的終極武器。Selenium IDE,是一個 Browser 的
plugin,安裝之後,你可以把你在網頁上的操作錄製起來。加上一些 check point 之後,就是一個全自動的 web testing
了。以前猛點、一直 key in
資料、搞不清楚自己按了什麼的日子不再出現。觀念簡單,操作容易,我想多寫幾句話去解釋它都有點難。如果還沒有弄懂的就看一下 demo影片吧


安裝方面,下載後直接安裝就好了。雖然是 Firefox plugin 但在 Flock 用也沒問題喔!


使用上,就是像影片看到的,用錄的方式,你點什麼或打什麼字就會錄起來了。關鍵是 check point 的設定,如同 xUnit
一派的做法,可以由一些 assertXXX 來當 check point。最當用的大概就是把文字選取起來,點右鍵就會出現
assertTextPresent 的選項,目的當然是希望來到這頁時需要檢查有沒有出現目標字串囉。錄製好之後,按 run 就會從頭跑一次,到
check point 的地方如果正確就會是綠色,出現錯誤會是紅色。而錄起來的 script 可以存成多種格式。


曾經在開發專案時開玩笑的說如果 UAT (User Acceptence Test) 能夠自動化就好了。因為 UAT 有幾十到幾百個
test case,由專人去跑一遍可能也要個一兩天,對時程是很傷的。而且大家都知道,測試通常會找出一些問題,那問題改了是要全部重測還是只測
fail case?考量到人力跟時間資源,大部份會只測 fail case,好一點再加抽幾個 test case
做抽檢。問題是,天知道改一個東西會影響到哪些部份,除非你敢保證你的 change impact analysis
做得很好。如果沒有,那還是乖乖全測比較保險。有了 Selenium IDE,那就好辦啦,把 script 開始來重跑一次就好了嘛!UAT
自動化不是夢!


另一個可行的用途是,網管或 MIS 需要確保 service alive,把 Selenium IDE 當作 service
monitor 也沒有什麼不行的,至少它簡單好用,在你學會或有錢買那些重型產品前之前,用 Selenium IDE
先頂住至少日子會好過一點。說穿了 service monitoring 就是一種測試嘛 (測試 service 有沒有活著)。


Selenium IDE 是由 OpenQA 所開發的,lincense 是親切可愛的 Apache 2.0。除了 Selenium IDE 以外,OpenQA 還有很多不錯的產品都是在 QA 方面會有用的。目前還沒有詳細做研究,但是 Selenium RC 似乎可以把 Selenium IDE 錄製的 script 再做點事。因為存 script 時的格式有些就是 for Selenium RC 的。如果你是 developer/tester,那不要懷疑了,趕快安裝 Selenium IDE 吧。

2008年12月16日 星期二

嵌入式作業系統為用戶帶來嶄新連接體驗


http://www.eettaiwan.com/ART_8800479675_676964_TA_49ec953e.HTM

未來的家庭和辦公室都離不開連接體驗(connected experience),這些連接將從現有的PC擴展到包括電視、GPSVoIP在內的更多設備,催生新一代不僅可享受服務,而且能與服務互動的設備。

時至今日,資訊不再只是儲存於PC和伺服器中並等待設備來存取。包括PC、電話、視訊轉換盒、視訊遊戲機、音樂播放設備在內的所有設備,已經能透過某種方式連接起來。用戶希望這些設備能夠有效連接,以便能隨時隨地在各類設備上獲得想要的工具、數據、資訊甚至娛樂體驗。

預計未來5年內,將有更多適合消費者和企業使用的互連產品上市。在這個互連環境下,供應商提供的服務也趨向多元化,所有服務都具備雙向傳輸能力,而系統中的所有設備也都必須具備智慧化能力,才能為消費者提供特別的體驗。

以三星最近開發的一款數位相框為例,該產品採用Windows Embedded CE
台,並運用Visual Studio 2005提供的工具和.NET緊密框架。這種數位相框既能利用Windows Media
Connect透過家庭網路從本地SD記憶卡擷取影像,也能連接到Flickr、Windows Live
Spaces或其他支援RSS的來源獲取影像。由於它能存取線上相簿,因此可接收由朋友或家人拍攝的照片。這種簡易性和互通作業性確實使連接體驗更加生
動。

如果是五年前,開發人員必須在類設備上安裝作業系統。但如今,這些設備就像一台PC一樣,不僅需要智慧功能,還必須能擴展並提供服務,而且必須易於使用。全球定位系統(GPS)設備是另一種可提供連接體驗的設備。在不久的將來,GPS設備將有更多的用途。

下一代智慧互連設備

過去幾年來,GPS日益普及。最初,GPS僅作為交通運輸和物流公司的必備技術,但目前它即將成為一種主流設備,特別是兼具可播放媒體檔案
功能的混合型設備。如今,用於定位服務的基礎設備在服務供應商承諾多年後終於架設完成,於是,GPS服務也從只能下載地圖資料,發展為可提供位置感知服務
(location aware
service)。據ABI研究公司預測,到2011年,基於定位的GPS服務將擁有3.15億用戶,遠高於2006年全球的1,200萬用戶數。

定位應用在增強並豐富用戶體驗方面的價值不可估量。隨著GPS定位技術日益普及,開拓此類資訊的應用和服務開始引人矚目。基於用戶訂購的
定位服務,如地圖更新和透過交通服務提供即時交通數據,能在考慮到事故資訊、臨時道路封閉和高速公路改道等情況下,為客戶找出到達目的地的最快路線。市場
上已經出現配備了歷史交通條件資料庫的GPS導航系統,此類系統主要用於大都市,它們能更準確地計算出客戶所需的最快路線。很快,用戶將可透過網際網路瀏
覽器或微軟的Outlook,將資訊(如一個地址)直接發送到車載GPS導航系統中。

在此同時,於汽車內整合這類系統的可能性也相對提高。在配備車輛位置監控系統後,用戶將可獲知汽車何時被開走以及開往何處。此外,開始日
益普及的即時交通訊息服務也將推動GPS設備(如車載GPS)的需求迅速成長。此類服務可以為消費者節省在路上花費的時間,同時減輕交通壓力。

除了地圖類應用之外,當GPS設備成為發佈點播廣告(demand-generated
advertising)的媒介時,它們同時成為了下一代智慧設備。今天的媒體聚合器(Media
aggregator)已經有能力發展行動購物服務,消費者可直接透過其手持設備的帳戶為所購買的商品買單,或透過手持設備下載最近一家銷售其所需商品的
商場優惠券。

對廣告商而言,具備GPS功能的設備將為區域化宣傳和銷售開闢一條新通路,尤其是在包含個人導航設備(PND)銷售量逐日攀升的情況下。

市調公司Frost & Sullivan指出,家人協尋(family finder)和子女定位(child locator)這類在GSM手機上採用GPS技術的定位服務可望於今年內推出。此外,股票報價、體育賽事分數播報和新聞播報需求也將持續提升。

儘管行動電話製造商也準備在電話中增加GPS導航功能,但PND市場將持續出現強勁需求。

為配合這一發展趨勢,微軟在Windows Embedded CE 6.0中推出了新的cell
core數據和語音組件,以便在該系統基礎上設計設備能透過蜂巢式網設立數據連接和語音呼叫,推動從機器到機器這類通訊連接的發展,使Windows
Embedded CE成為適合停車計時器、販賣機和GPS等設備使用的即時作業系統。

在基於Windows Embedded
CE的設備上用於獲取定位資訊的平台層稱為GPS中介驅動器與位置框架。GPS中介驅動器不僅有益於GPS設備的應用軟體設計,也能為GPS硬體製造商提
供優勢。因為它提供了一個中介層,讓真實的GPS設備從應用開發商和GPS設備製造商抽離開來,於是應用開發商編寫的程式碼能夠用於所有GPS硬體,而
GPS硬體製造商生產的硬體上也可以執行所有應用程式。

位置框架則有益於軟體開發商編寫基於定位的應用軟體。位置框架在應用軟體與底層硬體和/或提供設備實體位置的網路服務之間提供了一個抽象層,因此,應用軟體可登記並透過位置框架獲取經度和緯度等資訊。

本文小結

連接體驗將為OS(作業系統)和應用開發商創造許多商機。電信公司迫切需要除了行動上網和電子郵件之外,還能創造新收入來源的差異化服務。
而能夠為消費者提供連接體驗的線上服務正是他們需要的,此類服務的市場潛力不可限量。同時,應用供應商也可透過電信公司向消費者銷售其產品,充分利用現有
的數據服務。

今天,GPS技術的價格已低至可讓製造商將其整合在大多數消費者都買得起的可攜式CE設備中。目前,微軟在台灣的一家合作廠商正準備授權
電子設備製造商開發一款集GPS、MDTV(行動數位電視)和行動電話功能於一身,並支援數位相機和媒體播放器等許多其他應用的產品。該產品將採用採用由
微軟合作廠商所開發、基於Windows Embedded CE的軟體平台。

連接體驗將推動新一代技術和支援Web服務之開發工具的發展,這些技術與工具將協助人們在遠端控制家庭環境。在下一代版本的Windows Embedded CE中,媒體、導航和自動化將是三大發展重點。


作者:John Boladian

亞太、大中華暨日本首席產品經理

嵌入式視窗部門

微軟公司





2008年12月10日 星期三

Excel 趨勢線的公式

Excel 趨勢線的公式


Linear Trendline



Equation: y = m * x + b

m: =SLOPE(y,x)

b: =INTERCEPT(y,x)


Logarithmic Trendline



Equation: y = (c * LN(x)) - b

c: =INDEX(LINEST(y,LN(x)),1)

b: =INDEX(LINEST(y,LN(x)),1,2)


Power Trendline



Equation: y=c*x^b

c: =EXP(INDEX(LINEST(LN(y),LN(x),,),1,2))

b: =INDEX(LINEST(LN(y),LN(x),,),1)


Exponential Trendline



Equation: y = c *e ^(b * x)

c: =EXP(INDEX(LINEST(LN(y),x),1,2))

b: =INDEX(LINEST(LN(y),x),1)


2nd Order Polynomial Trendline



Equation: y = (c2 * x^2) + (c1 * x ^1) + b

c2: =INDEX(LINEST(y,x^{1,2}),1)

C1: =INDEX(LINEST(y,x^{1,2}),1,2)

b = =INDEX(LINEST(y,x^{1,2}),1,3)


3rd Order Polynomial Trendline



Equation: y = (c3 * x^3) + (c2 * x^2) + (c1 * x^1) + b

c3: =INDEX(LINEST(y,x^{1,2,3}),1)

c2: =INDEX(LINEST(y,x^{1,2,3}),1,2)

C1: =INDEX(LINEST(y,x^{1,2,3}),1,3)

b: =INDEX(LINEST(y,x^{1,2,3}),1,4)

2008年12月3日 星期三

TBsoft-G

TBsoft-GUI,一个很小的,功能一般的GUI,一个结合了某些现代程序设计要素的GUI

http://blog.mcuol.com/user/TBsoft/article/5326_1.htm