2012年4月28日 星期六

教育部

2012-04-25
弱勢學生補助喊停 綠批馬政府「沒良心夭壽骨」
http://www.appledaily.com.tw/realtimenews/article/politics/20120425/119978
幹事長潘孟安痛批,馬政府1年花10億廣設游泳池,但區區1.7億補助卻如此苛刻...

2010-01-23
南部缺水!學校缺錢!教部砸120億 全國蓋泳池
http://www.libertytimes.com.tw/2010/new/jan/23/today-t1.htm
教育部預計以每年十億預算,推動長達十二年的「泳起來專案」...

2009-06-17
教部砸12億 要讓台灣有品
http://www.lihpao.com/?action-viewnews-itemid-14894
】教育部租下一列電車,宣告將投入2年12億元推動「品德、品質、品味」的台灣有品運動...

2012年4月27日 星期五

C&C++: 強迫float做低階運算的方法

強迫float做低階運算的方法

float a, b;
long i;
a=0.1;
b=0.2;
i=*(long*)&a^*(long*)&b;
a=*(float*)&i;
i=*(long*)&a^*(long*)&b;
b=*(float*)&i;
i=*(long*)&a^*(long*)&b;
a=*(float*)&i;

=========================================

float a=4.3,b=2.4;
*(long*)&a = *(long*)&a ^ *(long*)&b;
*(long*)&b = *(long*)&b ^ *(long*)&a;
*(long*)&a = *(long*)&a ^ *(long*)&b;
cout << a << ", " << b << endl ;

2012年4月22日 星期日

C&C++: Re: [問題] 請教如何只用x,y兩變數來交換彼此數值

 作者  LPH66 (-858993460)                                     看板  C_and_CPP
 標題  Re: [問題] 請教如何只用x,y兩變數來交換彼此數值
 時間  Mon Apr 11 23:40:29 2011
───────────────────────────────────────

: → littleshan:不要這樣寫!這是 implementation-defined behavior     04/11 15:48
: → littleshan:就是十誡之八啦                                       04/11 15:49
基本上這個寫法的確是 implementation-defined behavior

不管有沒有加括號都一樣

事情是這樣的

a ^= b ^= a ^= b;
1 2 3 4 5 6 7

這樣寫的人想要做的事的順序是
                                值為
(7) 取 b 的值                   原來的 b
(5) 取 a 的值                   原來的 a
(6) 做 (5)^(7) 並把值放回 a 去  原來的 a^b
(3) 取 b 的值                   原來的 b
(4) 做 (3)^(6) 並把值放回 b 去  原來的 a
(1) 取 a 的值                   原來的 a^b
(2) 做 (1)^(4) 並把值放回 a 去  原來的 b

但有些 compiler (如我手上的 g++ 4.1.0 for win) 會編成這個順序

                                值為
(1) 取 a 的值                   原來的 a
(3) 取 b 的值                   原來的 b
(5) 取 a 的值                   原來的 a
(7) 取 b 的值                   原來的 b
(6) 做 (5)^(7) 並把值放回 a 去  原來的 a^b
(4) 做 (3)^(6) 並把值放回 b 去  原來的 a
(2) 做 (1)^(4) 並把值放回 a 去  一定是 0

結果是原來 a 的值在 b  但 a 卻變成 0 了

問題在於

雖然這個式子的確是分析成

     ^= (2)
   /    \
 a      ^= (4)
(1)   /    \
    b      ^= (6)
   (3)   /    \
       a        b
      (5)      (7)

這個樣子  但在計算 a ^= b 時  a b 取值的順序卻是 implementation-defined

也就是在上面那棵語法樹的後序走訪中先走左子樹還是先走右子樹

如果先走左子樹  就是 1 3 5 7 6 4 2 的順序

    先走右子樹  就是 7 5 6 3 4 1 2 的順序

而這兩個順序  上面我也寫出來了

後者是順利交換沒錯  前者卻是把 a 搬到 b 後把 a 炸成 0 !

所以結論是千萬不要用這個寫法

---
其實簡單一句話就是十三誡之八裡說的

    你不可以在一個運算式(expression)中,對一個基本型態的變數修改其值
    超過一次以上。否則,將導致未定義的行為(undefined behavior)

如果真要用 xor 來交換  乖乖寫三條

x ^= y; y ^= x; x ^= y;

就什麼事都沒有....

當然最好的寫法還是 int temp = x; x = y; y = temp; 就是了

--
  'You've sort of made up for it tonight,' said Harry. 'Getting the
sword. Finishing the Horcrux. Saving my life.'
  'That makes me sound a lot cooler then I was,' Ron mumbled.
  'Stuff like that always sounds cooler then it really was,' said
Harry. 'I've been trying to tell you that for years.'
                               -- Harry Potter and the Deathly Hollows, P.308

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.142
推 attomahawk:推薦這棵 語法樹!                                    04/12 00:02
推 glennchen:好強大                                                04/12 00:07
推 loveme00835:不管多炫, 在可讀性上永遠是個失敗品, 是禁忌          04/12 00:09
推 james732:原來如此!                                             04/12 00:12
推 VictorTom:推語法樹:)                                            04/12 00:16
→ bibo9901:借問一下, 那寫成 a+=b; b=a-b; a-=b; 可以嗎             04/12 00:39
推 purpose:有緩衝區溢位的風險,如 a = INT_MAX; b = 1;              04/12 00:41
→ purpose:沒有緩衝區,打太快了                                    04/12 00:41
推 littleshan:overflow 是 undefined behavior                       04/12 00:43
推 xatier:語法樹! 推                                              04/12 07:36
推 wanwan2:讚!!                                                    04/12 08:40
推 genghiskii:3F正解                                               04/12 10:08
推 j094097:大推                                                    04/12 21:23
推 yauhh:都忘了這件事,果然imperative就怕太依賴state                04/12 21:40
推 h520:用樹講解好清楚啊!! 大推                                    04/14 13:42

2012年4月15日 星期日

猜數字 AB值研究

                    xxxx
ijkl                ijkl
1234 ++++ ==== ++++ 2345
4A0B 1234 0A3B 2345 4A0B
2A2B 2134 0A3B 3245 2A2B
.... .... .... .... ....
3A0B 1235 0A3B 2341 3A0B
...

xi,i=0~9, xi為0~9之間的整數,不重複

x0~x9 可能是0123456789, 也可能是3578642190, 也就是沒有重複的數字

以下確定是成立的:

若 AB( 1  2  3  4,  i  j  k  l)=cAdB

則 AB(x1 x2 x3 x4, xi xj xk xl)=cAdB

是否存在一組xi, 使:

若AB( 1  2  3  4, x1 x2 x3 x4)=aAbB

則AB( i  j  k  l, xi xj xk xl)=aAbB

ijkl為10個整數0~9,10取4

目前已確定, 當a+b=4時是成立的

那a,b等於其他值呢?

請問經濟部長 Google 工業合作回饋在那裡

請問經濟部長 Google 工業合作回饋在那裡
http://ltcctl.blogspot.com/2012/04/google_10.html

test java extends cast 繼承 轉型


/** CastTest.java */
class A{}
class B extends A
{
    public void f()
    {
        System.out.println("f() in B");
    }
}
public class CastTest
{
    public static void main(String args[])
    {
        A a = new B();
        ((B)a).f();
        (B)a.f(); //  error: not a statement
        a.f();
        /* error: cannot find symbol
                 a.f(); // error
                 ^
           symbol:   method f()
           location: variable a of type A */
    }
   

test java


/** CastTest.java */
public class CastTest
{
    class A{}
    public static void main(String args[])
    {
        A a = new A();
    }
}

輸出結果:
CastTest.java:7: error: non-static variable this cannot be referenced from a
static context
        A a = new A();
              ^
1 error


我不懂,哪裡錯了?

若是把 class A 寫在外面,就過了

/** CastTest2.java */
class A{}
public class CastTest
{
    public static void main(String args[])
    {
        A a = new A();
    }
}

2012年4月14日 星期六

test java gc

/** MyObject.java */
public class MyObject {
    static int count;
    MyObject() {
        ++count;
    }
    public static void main(String[] args) {
        MyObject obj1 = new MyObject();
        MyObject obj2 = new MyObject();
        MyObject obj3 = new MyObject();
        System.out.println("目前有" +count+ "個物件");
        obj2 = null;
        System.out.println("請求G.C.");
        System.gc();
        System.out.println("目前剩餘" +count+ "個物件");
    }
    protected void finalize() throws Throwable {
        --count;
        String tName = Thread.currentThread().getName();
        System.out.println("執行finalize()的是:" + tName);
    }
}

輸出結果:
目前有3個物件
請求G.C.
目前剩餘3個物件
執行finalize()的是:Finalizer

2012年4月11日 星期三

Use empty-element tag for iframe will not work in Firefox

[HTML][XML][JavaScript]
以下內容之環境為Firefox 11.0

在XML的規則下,start-tag 與 end-tag 中間沒東西的話,可改寫成 empty-element tag
所以 <iframe></iframe> 可以改寫成:
<iframe />

但是,當你把它存成HTML,並用Browser打開它
第一個 <iframe /> 之後的東西都無法顯示
你必須要改成
<iframe></iframe>
才能正常顯示

另外,將xml字串轉換成DOM物件,再將DOM物轉回xml字串,他會改變你的字串
var xmlText = "<iframe></iframe>";
var parser = new DOMParser();
//轉換成DOM物件
var xmlDoc = parser.parseFromString( xmlText, "text/xml" );
var serializer = new XMLSerializer();
//再將DOM物轉回xml字串
var newXmlText = serializer.serializeToString( xmlDoc );

newXmlText 會等於 "<iframe />"
也就是他會自動把 "<iframe></iframe>" 轉成 "<iframe />"

但是,如果xmlText的 <iframe></iframe> 的中間有個空白鍵
那他就不會自動轉換
也就是說 "<iframe> </iframe>" 依舊還是 "<iframe> </iframe>"

補充:
<iframe> Tag Syntax --- Rules for coding HTML iframe elements
http://www.html-5.com/tags/iframe-tag/syntax.html
...The iframe element is an empty element, with both a start tag and an end tag, not a void element.

Definition of HTML "void element"
http://www.html-5.com/definitions/#void-element

Definition of "empty element"
http://www.html-5.com/definitions/#empty-element


再補充:
,-<http://www.w3.org/TR/xml11/#sec-starttags>
|
| [...]
| Tags for Empty Elements
|
| [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [WFC: Unique Att Spec]
|
| Empty-element tags may be used for any element which has no content,
| whether or not it is declared using the keyword EMPTY. For
| interoperability, the empty-element tag SHOULD be used, and SHOULD
| only be used, for elements which are declared EMPTY.

See also <http://www.w3.org/TR/xhtml-media-types/#compatGuidelines>:

| A.3. Elements that have no content
|
| If an element permits content (e.g., the div element) but an instance
| of that element has no content (e.g., an empty section), DO NOT use
| the "minimized" tag syntax (e.g., <div />).
|
| Rationale: HTML user agents may give uncertain results when using the
| [...] minimized syntax permitted by XML when an element has no content.

2012年4月8日 星期日

JavaScript XML CSS 相關

觀念釐清:

[JavaScript] 這篇文章真是太棒了,學 JavaScript function 必看文章
JavaScript, 5 ways to call a function
http://devlicio.us/blogs/sergio_pereira/archive/2009/02/09/javascript-5-ways-to-call-a-function.aspx

[JavaScript] 有些奇特的例子,但解說容易令人混淆,強烈建議看完上篇再看這篇
令人又愛又恨的 JavaScript function
http://geek-cafe-hk.blogspot.com/2011/06/javascript-function.html

[XML] 這網站太棒了,完整詳細的介紹
XML namespace
http://zvon.org/xxl/NamespaceTutorial/Output_chi/contents.html


[WWW] 被中文翻譯混淆,查英文才知真意
What is synchronous?
http://www.webopedia.com/TERM/S/synchronous.html
What is asynchronous?
http://www.webopedia.com/TERM/A/asynchronous.html

好用工具:

[HTML][CSS]設計Table的好工具
HTML and CSS Table Border Style Wizard
http://www.somacon.com/p141.php

[JavaScript]
好用到掉渣的IE8 Developer Tools--JS效能調校經驗
http://blog.darkthread.net/post-2009-06-08-ie8-devtool-profiler.aspx

查資料好所在:

[JavaScript]非常好的解說與範例,且附懶人demo
關於 implementation 的 createDocument() 與 createDocumentType()
createDocument method (implementation)
http://help.dottoro.com/ljqlhagh.php

[JavaScript]非常好的解說與範例,且附懶人demo
比較 serializeToString 與 outerHTML
XMLSerializer object
http://help.dottoro.com/ljwwrcvr.php

[HTML][CSS] 從裡面找到了沒過時的方法(符合HTML4),不然我還真不知如何置中Box和Table
Centering Tables
http://theodorakis.net/tablecentertest.html

[CSS]
CSS Reference
http://www.w3schools.com/cssref/default.asp

[HTML]
HTML Tutorial
http://www.w3schools.com/html/default.asp

[JavaScript] 這網站不錯,都幫你整理好了
螞蟻的 JavaScript: document:方法(F-Z)
http://ant4js.blogspot.com/2008/12/documentmthfz.html

http://reference.sitepoint.com/javascript/Document/getElementsByTagName

Fancy:

[CSS] CSS學得不好,現在才發現有這麼酷的東西
CSS Pseudo-elements
http://meyerweb.com/eric/css/tests/css2/sec05-11-03.htm
http://zh.wikipedia.org/zh-hant/%E5%B1%82%E5%8F%A0%E6%A0%B7%E5%BC%8F%E8%A1%A8

[CSS] 計算上色,酷,可惜還沒統一
http://www.colorzilla.com/gradient-editor/
http://gradients.glrzad.com/
http://www.webdesignerwall.com/demo/css3-dropdown-menu/css-gradient-dropdown.html
http://webdesignerwall.com/