學生管理

看[House M.D.]時中間的廣告穿插了[爸媽囧很大]的預告,是有關「小學生帶手機到學校」的事。
因為(有些)大人們上班期間也會用手機聊天,所以用「小孩子上課時不應該用手機」來解釋是不公平的(但我們放縱之)。不過我倒是可以接受像是舞台表演的作法:「節目演出中請勿使用手機,曲目/段落之中請勿走動」
但這不是重點,因為身為大人的我們的目的是「便於管理」,所以我們會很直覺的使用不人道的方式對待「下位者」(我標題是打「學生管理」,所以不只侷限在未成年人,當然也可以很容易的延伸到其他關係不對等的狀態),而害怕被戳破「這樣的規定其實不合理/不公平」的心態也很容易讓我們因此使用了「權力」和「經驗」來壓制下位者。

那麼,為什麼我們需要「便於」管理「小孩」?
我想是因為我們覺得小孩容易惹麻煩,小孩判斷力不足所以會傷害自己,而我們不希望他們被傷害,而害怕他們受傷害有很多其實是出自於「他們受傷害的話我會很麻煩」的心態。
這是一個循環的現象:即使不是自己真正關心的小孩,若是因為發生了「其他人會制止而我沒有制止的行為」進而導致危險的話,我們會害怕其他人對自己有所指責。而其他人之所以會對自己有所指責,是起因於他們也害怕著被指責「不跟著大家一起指責」這件事。
關於這個「因為覺得其他大人也想壓制小孩,所以自己也一起施行」的情形,正是Disney的[Recess](下課後)某集的主題之一(但我目前找不到是哪集...orz)

結論:我們管理或放縱(自己不愛的)小孩的無理行為,都是盲從自我們對社會觀感的錯誤認知。

PS:雖然我也不敢稱之為「錯誤」,不過我們放縱慈濟的許多強迫行為,也跟前述的恐懼有關。

PS2:越想越覺得以前就想寫的「管教小孩時不應該說的話」要來實踐一下:

  • 我真的很不想講你
  • 等你長大後就知道了
  • 你這樣會吵到隔壁的叔叔阿姨喔;不乖的話醫生要打針
  • 翅膀硬了就想飛了是吧!?
  • 你這是對長輩的態度嗎?
想要列出來時就想不起來了...orz 到時其他的可能要到BBS請鄉民們補充..........
... read more

英雄伝説空の軌跡

這跟我的暱稱沒有什麼關係,是遊戲的名字。
當初因為Ban哥知道我只玩單機RPG而且喜歡肌肉男,所以丟了Zin的圖片介紹給我,就這麼開始了。
對之前只玩過20世紀的遊戲的我來說,畫質是非常好的,而我那已屆四歲的NB也跑的動,算是非常不錯。

戰勝後取得經驗值的計算方式很不錯,角色等級越低,得到的經驗值就越多,也就容易很快升級。也就是說,兩個等級相差懸殊的角色被放在隊伍裡的話,等級會越來越相近。這個設定的特點就是:到下一個迷宮後會更好練功。
再加上人物每逢升級時,HP和EP都會被補滿,所以在攻略迷宮時也會更有戰略性:因為等級高的角色比較不容易升級,也就比較容易發生EP(魔力值)用盡的狀況,所以應該要讓等級低的角色多使用魔法。
以下僅分別針對三部作品提供個人意見分享,我盡量不放雷....

First Chapter

只有很核心的角色講話時在對話框會出現人物畫像,也就是很容易猜到:初登場的人物如果有畫像的話就是重要角色。在這一代中,遊戲還沒有配音,就製作上來說是很合理的,畢竟第一代需要從無到有地生出整個遊戲的設定和架構,而後作只需要沿用之前的設定即可。
因為是全新的遊戲,所以「說明」的部份很多。也因為是全新的地圖,所以玩的時候有很多時間在探索地圖。
戰鬥系統的部份,不同角色能裝備的魔石有不同的限制,遊戲設定有七個屬性,再加上女主角沒有魔石裝備的屬性限制,剛好就是八個角色。

Second Chapter

FC都是在同一個國家的事件,我原本以為SC會有很多國外的場合,但實際上鮮少。地圖的再使用率高達七成,之前走過的地方幾乎劇情上全都要再走一遍(有些不用,但為了寶箱....),這個部分我不喜歡。
戰鬥系統中加入了"合體技"(儘管變化性欠佳,但總是個新的戰鬥要素),還有出招和挨打的配音,也有較多的魔王有大絕招的動畫。除了原本的八個角色之外,也有其他機會使用其他角色--但都不是很長久/必要。
劇情的部份,說實話我覺得還蠻虎頭蛇尾的。雖然畫面和迷宮設計還是OK,但是最後一兩章的劇情卻是把之前被設定成強到爆炸的角色們輕鬆突破;而之前緊鑼密鼓的邏輯思維和心理戰也都消失的無影無蹤,完全變成老式破迷宮打魔王的內容了。

the 3rd

我覺得這是個「非常偷懶」的後作,地圖的再使用率雖是一回事,但是新的地圖有著極高的重複性。許多迷宮都是架構在「異空間」,這在設計上是非常容易的--而實際的遊戲迷宮又有著高度的重複性(特別是第七章),這樣的設計方式彷彿回到了早期的迷宮打怪的劇情。
戰鬥系統的部份,雖然能夠操控的角色又變多了(FC的兩倍),但是除了女主角是全新的角色之外,其他人的招式幾乎都沒有「進步」。Olivier明明就換了造型,但是「完全」沒有新招。而某些有新招的角色,除了Richard之外,全都是「氣功砲」的形式,這跟前作許多仍是「體技」的設定方式來比是相對偷懶的(Joshua的招都是體技,但我覺得很帥啊)
另外一個很糟糕的設定,就是遊戲裡面的「手冊」裡面,居然一開始根本就記載著整個遊戲能找到哪些夥伴,這不是被雷大了嗎?....
而比FF6還要多的夥伴數量,某種形式上也是種困擾。最後的迷宮就很大剌剌地得分成四個隊伍前進,而四支隊伍最後要打的大魔王又是車輪戰(所以裝備真的是被分散的,不能打完其中一個隊伍的劇情時把裝備卸下)
不過新夥伴們的屬性設定倒是不錯,16個角色卻只有12種武器(某些人的武器可以共用),而每個人的魔石裝備限制卻很平均分配:每個屬性都是兩個人,至於跟前作女主角一樣沒有屬性限制的是誰,相信有玩到SC的朋友們都猜的到了....(註:會這麼說,就表示不是本作才出現的人)
......
... read more

最新健美運動詳解

以下全為該書節錄,選擇標準為個人喜好而非全書重點,版權仍屬原作者。頁碼依照[增訂版]而非[增訂二版]。

第30頁-體型分類

  • 瘦長型(Ectomorph):細骨骼、窄肩者,想要練大肌肉,組數、次數不能太多;組與組織間要休息稍久(約三分鐘);每餐(尤其練完後)的熱量、蛋白質要增加。其他的運動(尤其是有氧運動)或耗體力活動要減少。
  • 肌肉型(Mesopmorph)
  • 肥胖型(Endomorph):組數、次數要比其他體型者做更多,才能把脂肪練掉。有氧運動一週至少三次,每次三十分鐘以上。飲食低脂、少鹽、無糖。

第35頁

「隨身聽」無法讓肌肉變大

第43頁-暖身與拉筋

「暖身」(Warm-up)
每次開始健身運動之前,要做:
  • 全身性的暖身:跑步機(或腳踏車或暖身操)五到十分鐘
  • 局部性肌肉的暖身:每次鍛鍊一個肌肉部位之前,先做一、兩組輕的動作(15RM或更輕)
「拉筋伸展」(Stretch)
增加肌肉的柔軟度與伸展度,時機為:
  1. 全身性暖身之後
  2. 局部性暖身之後
  3. 全部課程練完之後(又稱緩和動作Warm-down)

第67頁

最安全保險的減脂(減重)速度是:每星期約減掉你體重的百分之一

第379頁

努力「壓過腿」的朋友,常常誇讚它卻能增強男性的各項「功能」。

第385頁

「Sissy Squat」筆者實在想不出什麼好的中文譯名,只好暫時音譯為「西西式深蹲」
......
... read more

魯班尺

從長度判吉凶
長度:公分 (或使用Google進行單位換算)
結果:
雖然魯班尺的吉凶論定一般是指家宅、傢俱之用,不過既然傳藝中心舉人宅正門牆上也有相同的東西,我想就不用那麼計較了,人生也不是用長度定論的。(註:華人用的捲尺除了魯班尺的吉凶論定之外,也有量陰宅、祖先牌位之用的丁蘭尺,詳見參考資料
個人小意見:在中文中多以「陰」字開頭的性器官應該不適合用魯班尺的吉凶判斷標準。......
... read more

用SQL求得資料順位

原本是想要看看PHP Plurk API,在亂點roga部落格的MySQL分類時看到了roga大在去年六月有在想SQL的問題,於是心血來潮地試了一下。

(卻花了我兩個多小時,而這篇文不知道又要打多久了XD)

在仔細寫本文之前,先把結論呈現一下:DELETE FROM tbl
USING tbl INNER JOIN (
SELECT id, count(*) AS place
FROM (
SELECT t1.id
FROM tbl AS t1, tbl AS t2
WHERE t1.url_id = t2.url_id
AND t1.id <= t2.id
) AS t3
GROUP BY id
) AS t4
WHERE tbl.id = t4.id
AND t4.place > 1500
其中tbl是roga大大的url_detail_history,單純是名字太長所以被我換掉。此法受限於資料庫系統對Multiple-table DELETE的支援度,已知MySQL支援。


以下詳述我的思考過程(有些是繞圈子,所以看起來可能跟結果沒啥關係)
roga原本的需求大致上是「資料表中url_id欄位相同的,只留下最新的1500筆」。而該資料表有一個`id`主鍵欄位是AUTO_INCREMENT。
我試著將問題從最簡單的模式開始推導:

第一步:求「指定url_id的最新資料」

這很直覺,使用Aggregate Function中的MAX()就可以了:SELECT MAX(id) FROM tbl WHERE url_id = 'XXXX'

第二步:求「各url_id最新的一筆」

也是基本題,加上GROUP BY就可以了:SELECT url_id, COUNT(*)
FROM tbl
GROUP BY url_id
雖然沒什麼困難,不過我們稍比較一下這個和前一個SQL後會發現:
  1. WHERE變成GROUP BY
  2. SELECT區塊也要多一欄url_id,也就是GROUP BY用的欄位


第三步:求「各url_id最新的n筆」

咦....慘了,沒頭緒,也許我們第二步不應該這樣走。回到第一步,把問題改成「指定url_id的最新n筆」。(注意到題目的不同嗎?我一次只變動題目的一部分,嘗試在這樣的步驟中統整出比較有系統的解法。)

新的第二步:求「指定url_id的最新n筆」

嗯....如果不用MAX()的話,確實不難做到:SELECT id
FROM tbl
WHERE url_id = 'XXXX'
ORDER BY id DESC
LIMIT n


還是第三步:求「各url_id最新的n筆」

....我還是不知道要怎麼做

我卡了一個多小時,直到想起多年前在網路上看到的某個題目:「用SQL將名次排序出來」,雖然已經忘了網址在哪,但是解法卻非常的有趣。(效率如何我就不清楚了):
假設資料表ss的資料如下:+---------+-------+
| student | score |
+---------+-------+
| 1 | 7 |
| 2 | 5 |
| 4 | 3 |
| 5 | 4 |
+---------+-------+
而我們要產出的結果為:+---------+-------+-------+
| student | score | place |
+---------+-------+-------+
| 1 | 7 | 1 |
| 2 | 5 | 2 |
| 4 | 3 | 4 |
| 5 | 4 | 3 |
+---------+-------+-------+
也就是學生1是第一名;學生5是第三名;...

試重新思考「名次」的定義。我們直覺上對於此詞彙的解釋是:「分數第n高者為第n名」,但這個作法則是將「第n名」界定為「有n個人(含自己)的分數跟自己相同或較高」。
依照這個想法,要排序名次,資料表就得跟自身比較。讓我們試寫「列出分數不比自己低的人」的指令,也就是:SELECT t1.student, t2.student
FROM ss AS t1, ss AS t2
WHERE t1.score <= t2.score
結果為:+------------+------------+
| t1.student | t2.student |
+------------+------------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 4 | 1 |
| 4 | 2 |
| 4 | 4 |
| 4 | 5 |
| 5 | 1 |
| 5 | 2 |
| 5 | 4 |
+------------+------------+

但其實我們並不需要知道「哪些人」分數不比自己低,而是要知道有「幾個人」,所以即使沒有顯示t2.student也沒有關係:SELECT t1.student
FROM ss AS t1, ss AS t2
WHERE t1.score <= t2.score
假設這張表叫做t3,那麼「列出分數不比自己低的人的總數」,SQL指令就是:SELECT student, COUNT(*)
FROM t3
GROUP BY student
(有沒有覺得最後的指令簡潔到令人吐血?)
當然啦,通常你不需要另存t3,而會把整串步驟寫成一個指令:SELECT student, COUNT(*) AS place
FROM (
SELECT t1.student
FROM ss AS t1, ss AS t2
WHERE t1.score <= t2.score
) t3
GROUP BY student
得出來的就會是名次列表

而如果資料表裡面的主鍵並不是單一欄位組成,比方說:+---------+---------+-------+
| student | subject | score |
+---------+---------+-------+
其中Primary Key為(student, subject),那麼題目就變成「各學生在各科目的排名」,SQL指令為:SELECT student, subject, COUNT(*)
FROM (
SELECT t1.student, t1.subject
FROM ss AS t1, ss AS t2
WHERE t1.score <= t2.score
AND t1.subject = t2.subject
) t3
GROUP BY student, subject


上述的作法遇到考試科目同分時會有些狀況,不過由於今天我只想針對roga大的問題,也就是對primary key做排序,所以就不管了。

根據以上的作法,我們就可以輕易得知每一筆資料的排序順位,也就可以很輕易的執行相關的操作。而像是「列出各科目中考最差的五名」這樣的問題,即使每個科目的修課人數不同,也只要將「名次」的定義改成「分數不比自己高的人數」就可以輕易做到了。
回歸正題,roga大的狀況就會變成:DELETE FROM tbl
USING tbl INNER JOIN (
SELECT id, count(*) AS place
FROM (
SELECT t1.id
FROM tbl AS t1, tbl AS t2
WHERE t1.url_id = t2.url_id
AND t1.id <= t2.id
) AS t3
GROUP BY id
) AS t4
WHERE tbl.id = t4.id
AND t4.place > 1500
至於哪邊用大於,哪邊用小於,可得想清楚了....

(編輯終了,本文花了我一個半小時)
......
... read more