發表文章

一定要自己踢過一次鐵板才能學會 (二)

圖片
經過一夜的蒐集資料, 看了 Google I/O 的影片, 覺得用 MapReduce 就是正解啦. 用法很簡單 Step 1 Download最新的 MapReduce , 在local自己的appengine程式的地方執行. svn checkout http : //appengine-mapreduce.googlecode.com/svn/trunk/python/src/mapreduce Step 2 修改app.yaml, 固定都是加上下列這段code. - url: /mapreduce(/.*)? script: mapreduce/main.py login: admin Step 3 新增一個mapreduce.yaml檔 mapreduce: - name: Count the number of entities mapper: input_reader: mapreduce.input_readers.DatastoreInputReader handler: jobs.process params: - name: entity_kind default: main.Report 第一個name, 就是之後會顯示在mapreduce的網頁介面上的job name. input_reader, 目前有四種reader可以選, 詳情可見 這裡 . 主要是從DataStore裡抓, 或是從BlobStore裡抓, 或是從zip檔裡抓資料. handler, 指定之後會被MapReduce call的function. 這裡有點tricky, 文件寫得不是很清楚, 查了MapReduce的source才知道要填什麼. 簡單的說它可以吃三四種格式, 會試著用不同的方法去找到對應的python檔, class定義跟function定義. 最簡單的方法就是"file.function". 像這裡就是有一個叫jobs.py的檔, 裡面有一個process(). 之後MapReduce就會一直重覆地呼叫這個function. param, 這裡可以指定一些參數, 最重要的是entity_kind這個欄位, 這裡指定了預設值是main.py裡定義的R...

一定要自己踢過一次鐵板才能學會 (一)

在公司的一個appengine程式, 終於蒐集了一小筆資料(不到一千筆), 現在想對這些資料做些統計, 再用Google Chart API顯示出來. 可以預期等到這個程式正式上線, 資料是幾十幾百萬來計算的時候, 這個統計方法一定會有問題, 不過我還沒什麼想法, 現在一開始是這麼做的.

interview

最近畢業季, 一口氣interview了不少台大, 交大, 台科大畢業的新鮮人. 雖然有些不是根正苗紅的資訊相關科系畢業, 但是平均來說水準堪憂. 我已經搞不懂現在的資訊系在教什麼了, 最基本資料結構, 演算法都沒什麼概念. 寫個sort也寫得零 零落落. 別人可以說我不用會那麼多, 只要會用library就可以了. 但是身為相關科系的畢業生也不知道裡面的原理跟門道就說不過去了. 程式語言也是, 現在很多學生可能在大學的六年就只接觸Java. 其實會Java很好, 但是不夠底層, 它把太多 CPU特性包裝起來, 寫程式的時候接觸不到. 習慣後以為這就是電腦科學的全部, 無法寫系統程式. 如果C也不會, 那其它像是Lisp, Scheme, Prolog這些語言應該更是沒有概念. 會不會寫這些語言不是重點, 而是這些語言背後代表的想法. 如果從來沒有接觸過, 就會缺少一種把問題抽象化的可能想法. 那麼在解決問題的時候就可能是用硬幹的, 而不是一個優雅的解法. 面試這些人的感覺是, 大家的興趣都很廣, 通識修了不少, 自己本科的東西修的不多. 我考的題目他們在考研究所的時候一定都會, 但是當場就是寫不出來, 代表這些東西曾經是用背的, 而不是理解後又常常用到. 所以我猜本科的的課程的作業或是Project又不是太難, 所以底子不深. 再面試一輪就要做決定了, 再看看有沒有讓人驚艷的吧...

CSS之二

很多屬性都有分top, bottom, left, right. 通常可以合在一行寫, 有四種組合. padding: 25px 50px 75px 100px (上25, 右50, 下75, 左100) padding: 25px 50px 75px (上25, 左右50, 下75) padding: 25px 50px (上下25, 左右50) padding: 25px (上下左右都25) Grouping 可以用逗號隔開幾個selectors, 這幾個的效果是一樣的. h1,h2,p { color: green; } Nesting p { color: blue; text-align:center; } .marked { background-color: blue; } .marked p { color: white; } 要把某個東西隱藏起來. 用display: none; 或是visibility: hidden; 但是這兩個有點不同. display: none; (東西消失, 後面的東西擠過來) visibility: hidden; (東西消失, 但是還是會佔據一塊同樣大小的位置, 後面的東西不會擠過來) block element 像是<h1>, <p>, <div>這種, 它會把所有可用的寬度都佔掉. 而且在前後都換一行. inline element 像是<span>, <a>這些, 它只會用掉它自己需要的寬度. 以上這兩種屬性, 可以用display來改掉. li { display: inline; }

CSS之三 Positioning

這個是我比較有興趣的地方. 有四種定位的方法 Static Positioning 預設的方法 不受top, bottom, left, right影響 Fixed Positioning (position: fixed;) 指定東西出現在某個相對於browser window的位置 即使window在捲動時, 它還留在原位, 不會跟著捲 example 它接下來的element會當它不存在一樣, 繼續往下排 Relative Positioning (position: relative;) 相對於它原本應該出現的位置, 另外加上一個offset ex. (left: -20px;) 雖然用了relative positioning的element的顯示位置會變, 但是接下來的element, 還是會用它用本應該存在的座標, 繼續畫下去 Absolute Positioning (position: absolute;) 相對於他的parent的位置. 如果沒有parent, 那就是<html> 它接下來的element會當它不存在一樣, 繼續往下排 z-index, 大的排前面, 小的排後面. 可以是負的. cursor , 有一大堆屬性, 可以改變cursor的外觀 overflow: scroll; 可以讓內容超出範圍時, 加上一個scroll bar

買GMail空間了...

圖片
GMail終於要爆了, 剩下不到50MB囉. 於是乎決定花個一年五塊美金加大空間. 買了之後變這樣. 剩20G了 要注意喔, 買這個需要一個工作天的時間才生效, 不能等到信箱真的爆了才申請, 否則就會有一段時間收不到信了...

CSS之一

現在在施行混亂學習大法, 寫到哪裡卡到哪裡, 卡到哪裡學到哪裡. 今天是卡在CSS上. 有個簡單排版的效果我做不出來, 查了好一陣子. 最後還是在PTT上問到答案... 在這裡記錄一下CSS我在W3CSchool做了啥. CSS是Cascading Style Sheet的縮寫 (話說cascading出現在我的碩士論文裡很多次) HTML本來不是設計來做排版的, 而是設計來描述一篇文章的結構. 例如head, title, paragraph等等. 用font, color來做一些效果, 一直都是問題. 在HTML 4之後, 號稱可以把這些描述怎麼畫內容的方法, 都獨立於HTML之外, 寫在css檔裡. selector 跟 declarations selector有幾種方法, 最簡單的就是統html的tag, 像是p, h1等等. p { color: red; text-align: center; } css裡的註解寫法跟C的一樣, 用/* */包起來. 也可以設id的style, id就是某個element的特定的名字, 應該只能有一個. 要用#來指定. #para1 { color: red; text-align: center; } id不可以是數字開頭的! class是第三種, 跟id不同的是, 它是描述一"類", 而不只是特定一個tag. 它是用.來指定. .center { text-align: center; } class也可以特別指定要在哪一種tag上生效. 例如下面, 就只有<p class="center"></p>的會生效. p.center { text-align: center; } 加入CSS也有三種方法, external, internal, inline. external就是在HTML一開始include一個css檔進來. <head> <link rel="stylesheet" type="text/css" href="xxx.css" /> </head> internal則是在HTML一開始的hea...