2013年4月2日 星期二

[Django]引用ajax,出現csrf錯誤



2013年3月11日 星期一

[Django] refresh div with JQuery

Example:

Template 1 

<script>

function refresh_infos(element){
    var id = "test"
    $.ajax({
        type: "POST",
        url: '/part_update/',
        data: {'id':id},
        success: function(data) {
            $('#testDIV').html(data);
        }
    });
}
</script>
<div id="testDIV"></div>



View 

def part_update(request):

    id = request.POST.get('id', "")
   
    #/* get infomation */
    infos = DB.objects.filter(id = id)
   

    return render_to_response('supply/template.html', { 'infos': infos })

Template 2 
    {% for info in infos %}
        <p>{{ info.id }}</p>
    {% endif %}


Urls 
    adding:
    (r'^/part_update/$','part_update'),

2013年3月9日 星期六

[Codeigniter]ajax upload


Simple Example:

Controller:

public function upload_file(){
        $file_element_name = $_POST['file_element_name'];
        $config['file_name'] = "test.jpg";
        $config['upload_path'] = "/upload/";
        $config['allowed_types'] = 'gif|jpg|png|doc|txt|pdf';
        $config['max_size']  = 1024 * 8;
        $config['encrypt_name'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $this->load->library('upload', $config);
            if (!$this->upload->do_upload($file_element_name)){
                $status = 'error';
                $msg = $this->upload->display_errors('', '');
            }else{
                $data = $this->upload->data();
                $file_id = true;
                if($file_id){
                    $status = "success";
                    $msg = "File successfully uploaded";
                }else{
                    unlink($data['full_path']);
                    $status = "error";
                    $msg = "Something went wrong when saving the file, please try again.";
                }
            }
            @unlink($_FILES[$file_element_name]);
        }
        $upload_info = $this->upload->data();
        echo json_encode( array(
            "status" => $status,
        ));
}


View:

<form method="post" action="" id="form">
        <input type="file" name="file" id="file" />
</form>

<script type="text/javascript">
    $(function() {
        $('#form').submit(function(e) {
            $.ajaxFileUpload({
                url         :'<?=site_url("upload/")?>',
                secureuri      :false,
                fileElementId  :'file',
                dataType    : 'json',
                data        : {
                    'file_element_name' : 'file'
                },
                success  : function (data){
                    alert(data.status);
                }
            });
            return false;
      });
    }
</script>



2013年2月21日 星期四

[Code_Note] 引用外部API - 設計排版

在設計排版部分,可以將外部API獨立成method,
只要將需要的資料利用變數丟入即可
這樣可以加強程式的彈性


ex:



requestData("1")

def requestData(a):

   request_data =
   '''<%s xmlns="urn:ebay:apis:eBLBaseComponents">'''%a


2013年1月30日 星期三

[Django] 如何取得django form資料


先簡單記錄一下,如何在python後台取得前端傳送的django form資料:


if request.method == "POST":
    form = xxForm(request.POST , prefix='fd')
    if form.is_valid(): # 通過驗證才可取得資料
        print form.cleaned_data['col']
else:
   
    print "It's not from POST !!"

2013年1月21日 星期一

[Python] 開發環境檔案夾選擇


小技巧:

在不同系統中可以建立多個不同變數:

local_folder = 'D:/projects/a'
online_folder = '/django_projects/b'


利用if判斷讓系統自行判斷存入資料夾

if os.path.exists(local_folder):
    base_folder = local_folder  
if os.path.exists(online_folder):
    base_folder = online_folder

2012年9月2日 星期日

[Django-Firebird] Django連結Firebird整理

首先:

    檔案部分位於:
        Django 1.3 (or higher)  >  django-firebird
        Django 1.4                    >  django-firebird driver on github

    安裝前有一些必須事先安裝的套件:


在安裝時,直接將firebird檔案夾放置於兩個檔案夾下

  •      C:\Python27\Lib\site-packages\django‌​\contrib\gis\db\backends 
  •      C:\Python27\Lib\site-packages


這樣應該就可以順利使用嚕!
更詳細的敘述見參考資料。


參考資料:
http://stackoverflow.com/questions/11930701/django-firebird-can-not-work
http://code.google.com/p/django-firebird/

[Python] Virtualenv 安裝問題 - on mac

前言:
最近開始設置工作的環境,主要的環境是:
    Python + Django + Firebird
來開發網站!

之前都是利用Windows設置環境,不過這是第一次設置在Mac OS上。

首先開始找尋設置專案的一些工具,就先記錄下來!
1. Virtualenv -- 可建置開發的虛擬環境
2. Pip -- Python 的套件管理工具

基本介紹和使用方法就問Google大神唄!

主題:

在設置Virtualenv時,進行建置環境資料夾時總是會發生錯誤...

    virtualenv [Project_Name] --no-site-packages

執行時都會出現問題:

....
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/__init__.py'
....


雖然一開就可以知道是沒有__init__.py檔案的關係!沒錯就這麼容易...
不過!不對阿,Python是mac裡內建的,沒有這檔案我要怎麼辦....

解決方法:
其實解決方法非常容易! 首先進入(cd) 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/
接著執行:
sudo touch __init__.py
就可以正常的建立專案資料夾嚕:)



參考資料:
Python can't locate distutils_path on Mac OSX

2011年3月10日 星期四

[Android]Service紀錄

1.生命週期,Service的從onCreate()->onStart(int,Bundle)->onDestroy()顯得更為簡單。但是它的onStart是帶參數的,第一個ID可用來標識這個service,第二個參數顯示是用來傳遞資料的了。比較Activity,傳遞資料的Bundle是在onCreate就帶進入的。

2.Service的啟動由Context.startService開始,其實Activity或者Service都是Context的派生類。結束於Context.stopService()或者它自己的stopSelf()。

3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder物件。關於這方面的細節,以後再看,這裏只做個記錄罷。

4.與Service有關的還有一個安全的問題,可以在AndroidManifest.xml中用標籤來聲明一個Service的訪問許可權

2010年11月2日 星期二

[名言]座右銘

還沒死就活得更刺激一點 - 刈草
選擇之後別讓自己後悔就好 - gg澤

[碎型]Mandelbrot 集合產生器

Mandelbrot Set是碎形裡一個相當經典的例子。原理是對複數平面上每一點 z= a+bi 利用疊代式 f(xn+1)=xn2+zx0=0 判斷其發散與否。將不會發散的區域保留下來就是所謂的Mandelbrot Set。

詳細參考文件:

2010年9月6日 星期一

[撇步]輕鬆解決無法刪除檔案

當桌面出現無法刪除之檔案或是資料
無論是被鎖等等雜七雜八原因
"此項目已經不在 請檢查項目的位置,然後再試一次" 也可以
請依照下列步驟解決:
  1. 首先新增一個文字文件檔

    在裡面輸入以下二行
    DEL /F /A /Q \\?\%1
    RD /S /Q \\?\%1
  2. 輸入好後就存檔,再把副檔名改成.bat
  3. 把要刪除的檔案點選,拖移到剛剛新增的.bat檔上
  4. 完成

2009年4月26日 星期日

[Linux]權限關係

檔案:
* r (read):可讀取此一檔案的實際內容,如讀取文字檔的文字內容
* w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案)
* x (eXecute):該檔案具有可以被系統執行的權限
目錄:
 * r (read contents in directory):

  表示具有讀取目錄結構清單的權限,所以當你具有
  讀取(r)一個目錄的權限時,表示你可以查詢該目錄
  下的檔名資料。 所以你就可以利用 ls 這個指令將該
  目錄的內容列表顯示出來!

 * w (modify contents of directory):

  這個可寫入的權限對目錄來說,是很了不起的! 因為
  他表示你具有異動該目錄結構清單的權限,也就是底下
  這些權限:
  o 建立新的檔案與目錄;
  o 刪除已經存在的檔案與目錄(不論該檔案的權限為何!)
  o 將已存在的檔案或目錄進行更名;
  o 搬移該目錄內的檔案、目錄位置。
 總之,目錄的w權限就與該目錄底下的檔名異動有關就對了啦!

 * x (access directory):

  目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途!
  所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉
  例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作
  目錄。而變換目錄的指令是『cd』(change directory)囉!

  

  取自:鳥哥的Linux私房菜 - 目錄與檔案之權限意義

2009年4月14日 星期二

[影像]視訊規格

 規格   水平掃描線數  水平掃描頻率  垂直掃描頻率/每秒畫面數
       <垂直解析度>
 NTSC    525              60 Hz /30畫面

 PAL      625      15.75KHz     50 Hz /25畫面

 SECAM    625              50 Hz /25畫面

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

NTSC規格的特點有三個:

1、每秒有30個圖框(Frame)

2、每個圖框都包含了二個圖場(Field)

3、每個圖框為525條的交錯式掃描,水平掃描頻率約為15.7KHz
 
 
 

2009年4月3日 星期五

[Ubuntu]使用階段紀錄

紀錄一些目前在摸的 Ubuntu 8.10 好了!

● 暫時擁有使用者權限來執行指令
    sodo
● 更新套件庫:
    
sudo apt-get update

 
-----------------------------------------------------
Linux :
 ★ man page
  ☆利用man page 查詢:
   $ man date
   DATE(1*) User Commands DATE(1)
       ........
   * 紀錄3個重要的_(背)
   (1)使用者在shell環境中可以操作的指令或可執行檔
   (5)設定檔或者是某些檔案的格式
   (8)系統管理員可用的管理指令
 
  ☆常用到的man page按鈕: 

指令
進行工作
/string向『下』搜尋 string 這個字串,如果要搜尋 vbird 的話,就輸入 /vbird
?string向『上』搜尋 string 這個字串
n, N利用 / 或 ? 來搜尋字串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行『反向』搜尋。舉例來說,我以 /vbird 搜尋 vbird 字串, 那麼可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字串, 那我可以用 n 繼續『向上』查詢,用 N 反向查詢。
q結束這次的 man page
  
  ☆搜尋特定指令/檔案的man page說明文件
   $ man -f man  
   ...
   man (1) - format and display the on-line manual pages
   man (7) - macros to format man pages
   
   通常直接輸入指令 man man 會直接讀取第一個找到的
   所以可以輸入指令 man 7 man 來讀取 man(7)
  
 ★ 關機/重新開機相關的指令
    ●
將資料同步寫入硬碟中的指令: sync
   
  慣用的關機指令: shutdown
     重新開機,關機: reboot, halt, poweroff
 ★ 執行等級<共有7個等級>
   run level 0:關機
   run level 3:純文字模式
   run level 5:含有圖形介面模式
   run level 6:重新開機

   可以利用 init 來切換各模式! ex: 關機:init 0
-----------------------------------------------------
  ☆符號:
    ^ = [ctrl]
    M = [alt]
    範例:^x → [Ctrl][x]
       M-m → [Alt][m]

sudo /etc/init.d/firestarter stop 關閉防火牆
"Ctrl"+"Alt"+"F1"(~F6) 切換介面


資料學習來源:鳥哥的Linux私房菜
進度:Linux 基礎文件 - 5 首次登入與線上求助 man page

2009年3月24日 星期二

[其他]指揮大腦

①慢慢來。瞭解的越多,你就越不需要死記。

  別只是要看過去,要停下來思考。讀到習題時,
  不要直接跳去答案。就當作真得有人問你問題。
  你越強迫大腦記憶,你就越有機會學習和記憶。

②作習題、寫筆記

  我們幫你出題,但若是靠我們解題,那也就等於
  是別人幫你作功課。不要只是看題目而已。自己
  作答。許多證據能證明練習活動能夠提昇學習效
  率。

③認真閱讀〝沒有蠢問題〞
  
  這些段落確實是內容重要的一部分。有時好的問
  題比答案更重要!
 
④不要只用一種姿勢

  站起來、伸展一下、到處走走、換個位置、換間
  咖啡廳。這樣會讓你的大腦有不同的感受,並能
  防止學習過程與特定地點產生過多的連結。
 
⑤把這本書當作睡前讀物。不然至少當作每天的最後
 一項挑戰。
 
  放下書本之後的時間也是學習的一部分(特別是
  轉換成長期記憶的過程)。大腦需要自己的時間
  來處理。如果在處理過程還有其他輸入,多少會
  跑掉一些東西。
 
⑥多喝水。
 
  大腦在水分充足的情況下運作最好。失水(在你
  感覺到口渴前就可能發生)會讓人降低知覺能力
 
⑦大聲說出來
 
  說話活動會用到大腦其他部份。如果你想要了解
  某些東西,或增加記憶度,就大聲得說出來。最
  好是能夠解釋給某人聽。這樣能夠更快更好,甚
  至發覺閱讀時沒有想到的問題
 
⑧傾聽大腦聲音
 
  注意到是否負載過重。如果你感覺昏昏的,過目
  即忘,那就休息一下。閱讀到一定程度時,學習
  效率就會不好,甚至連之前的內容也會忘掉。
 
⑨感受內容
  
  必須要讓大腦知道這些內容很重要。進去故事的
  情境中,自己幫圖片下標題。取笑作者的冷笑話
  也會比沒有感覺要好。
 
⑩自己打程式並執行
 
  輸入範例程式並跑跑看。試著變化並改善程式碼
  (改到出錯也無所謂,有時候這反而讓你收穫更
  多)。
 
 
 
 
節錄:深入淺出Java程式設計 / O'REILLY
   Kathy Sierra & Bert Bates
 
 

2009年3月20日 星期五

[Java] AWT vs. Swing

◆ 所有會用到的控制與 GUI 的基本元素都是 Component(元件)類別的子類別
◆ Component 類別很少會被直接使用,通常都是利用它的子類別產生的物件來繼承
◆ AWT元件類別 (Andrew's Windows Toolkit )(Another Windows Toolkit )
  ◇ Java最早的圖形化類別
  ◇ WT package 中含有很多的類別與子類別。大部份的控制元,像按鈕和文字欄位都是從
    Component 類別繼承下來的。
◆ Swing元件類別
  ◇ Java 1.2以後提供,較AWT漂亮
◆ Frame(框架)類別用來建立標準的應用程式視窗,它直接繼承 Window 類別
◆ Frame 的類別繼承表
  java.lang.Object
   java.awt.Component
    java.awt.Container
     java.awt.Window
      java.awt.Frame
  AWT Swing
Class名 java.awt.* javax.swing.*
表單名 Frame JFrame
元件-按鈕 Button JButton
元件-標題 Label JLable
元件-畫布 Canvas
元件-核取方塊 Checkbox JCheckBox
元件-單選鈕 Choice JRadioButton
元件-標題 Label JLable
元件-列表 List JList
元件-捲動軸 Scrollbar
繼承關係與
常用方法屬性
 Object
  Component
  //setVisible(),setBounds(x,y,w,h),
     setBackground(color)

   Container
    //add(元件), setLayout()

    Window
    //setCursor(Cursor),setIConImage()
     Frame
      //setTitle()
  Object
   Component     
    //setVisible(),setBounds(x,y,w,h),

     setBackground(color)

    Container
    //add(元件), setLayout()
     javax.swing.JComponent
      //JLabel,JButton,....
 
 
 
        
    
           


轉自:JAVA Note
 
 

2009年3月19日 星期四

[感想]The life in 醒新社♥♥隊

兩年的日子!
不才的我...
拿了些成績、時間
換回一堆感動

有人問我值得嗎?
『值得!!』這句話,不需思考!

也許有些人覺得會不會太誇張了點
但對於真正瞭解愛愛隊的人
反而覺得在這的時間太少
甚至怨恨為啥一天就這麼長


在這
認識不同的朋友
甚至交到一輩子的知心朋友
熬夜聊天、互吐心事、分擔工作、甚至啥疑難雜症都會找他處理
這樣的朋友以前對我來說或許都是夢想
不過在這實現了!

在這
我從一個沒愛心、沒血沒累的小鬼
變成個有血有淚更有愛心的老人
『服務』
以前的我,壓根兒也不會想到我會實現它
孩子們的笑容、叫聲
就這樣進入了我的世界
甚至延伸到各個部份
服務!讓我開了眼界
看到了各個角落不同的人
也懂得用不同的觀點看這個社會


這個地方,其中奧妙
沒有你我想像簡單。
各樣人、事、物交互作用
如何搭配其中關係
編織豐富的生活
箇中滋味,仔細的去品嚐吧!

  The life in 醒新社♥♥隊
    
       鬍子 2009/3/20
    
 

2009年3月15日 星期日

[微積]審斂法紀錄

1.特殊型態之級數:
 ⑴ 幾何級數 ∑ a(r^n), |r|< 1時收斂,|r|≥ 1 時發散。

 ⑵ p-series ∑ 1/(n^p),p > 1時收斂,p ≤ 1時發散。

 ⑶ 交錯級數 ∑ an(-1)^(n-1),當 0 < a(n+1) ≤ an
   且 lim(x→∞)an = 0時收斂。

2.比較法:

 ⑴比較審斂法
 
 ⑵極限比較審斂法

3.一般測試法:
 
 ⑴n項測試法:當lim(x→∞)an ≠0時發散

 ⑵積分審斂法

 ⑶比值審斂法

 ⑷根式審斂法

★當解題時可考慮以下步驟:

 ⒈檢查其第n項是否趨近於0,若否則級數發散
 ⒉檢查是否為特殊型態之級數
 ⒊檢查是否能已一般測試法判斷
 ⒋選擇一適當特殊型態及數與之比較,以比較法檢驗之。
 
 

2009年3月14日 星期六

[影像]傅立葉性質

傅利葉轉換(Fourier Transform)
「FT」幾項重要的性質:

◎時間延遲(Time Delay):
  已知X(f) = F[x(t)],若y(t) = x(t-τ),則Y(f)=F[y(t)]=X(f)exp(-2πfτ)。

◎時軸改變(Scale Change):
  已知X(f) = F[x(t)],若y(t)=x(at),則Y(f)=F[x(at)]=1/∣a∣X(f/a)。

◎反向時間軸(Time Reversal):
  已知X(f) = F[x(t)],若y(t) = x(-t),則Y(f) = F[x(-t)]=X(-f)。

◎頻率轉移(Frequency Translation):
  已知X(f) = F[x(t)],若y(t)=x(t)exp(2πfct),則Y(f)=X(f-fc)。

◎調變定理(Modulation Theorem):
  已知X(f)=F[x(t)],若y(t)=x(t)cos2πfct,則Y(f)=1/2[X(f-fc)+X(f+fc)]。

◎時頻軸互偶性(Duality):
  已知X(f) = F[x(t)],若y(t)= X(t),則Y(f) = F[y(t)] = x(-f)。

◎迴旋定理(Convolution Theorem):
  已知X(f)=F[x(t)],H(f)=F[h(t)],若y=x(t)*h(t),則Y(f)=X(f)H(f)。


「時間延遲」
對應至頻域是相角(Phasor)的大小 (arg-1X(f)=-2πfτ)
,由於真實信號是由各種不同頻率正弦波或餘弦波所組成
,當這些頻率組成由甲端傳送至乙端時,若因為各自對時
間延遲的不同而造成相角的不同,則在通訊上則被稱為
「相位失真」(Phasor Distortion)。


「時軸改變」
時間信號若是變化地越劇烈,從頻譜角度則可分析其含有
更多高頻的成份,若從濾波器要將信號萃取出來,則需要
消耗更多頻寬 (Bandwidth),此乃濾波器設計的最基本概
念。


「頻率轉移」和「調變定理」
應用在信號的調變解調(Modem),根據天線理論我們將信號
調變至高頻來發射或接收則可以縮短天線長度,這是使用調
變的好處之一。


「迴旋定理」
為線性非時變系統(Linear Time-Invariant System)的基本運作
H(f)稱為系統轉換函式(Transfer Function)
h(t)則稱為系統的脈衝響應(Impulse Response)

由數學上推導,y(t)=x(t)*h(t) <<符號「*」為迴旋積分的表示式>>
若 x(t)以δ(t)脈衝函數代入
因任何時間函數和δ(t)做迴旋積分仍是它自己
所以y(t)=δ(t)*h(t)=h(t),故以此命名之。