2010年11月29日 星期一

[PHP] 解決 date(): It is not safe to rely on the system's timezone settings

Message:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

解決方法:

修改php.ini, 加上預設timezone, 重新啟動Apache即可

date.timezone = "Asia/Taipei"

2010年11月25日 星期四

[PHP] 解決使用Windows IIS執行PHP時的檔案上傳限制

今天在解決一個PHP檔案大小上傳限制的問題


系統是Windows 2008 Server
Web Server是IIS


原以為跟Apache一樣, 改一下php.ini的兩個設定即可



post_max_size = 10M
upload_max_filesize = 10M



沒想到開phpinfo出來看還是沒有作用, Google一下發現, 原來Windows Server本身基於安全性問題, 自己就有限制。


解決方法如下:


Step 1. 系統管理工具 -> 服務 (或是直接用 執行 -> services.msc)


Step 2. 停止IIS Admin ServiceWorld Wide Web Publishing Service服務 (否則修改檔案後要存檔時, 他會說有服務在使用)


Step 3. 用文字編輯器開啟 C:\Windows\system32\inetsrv\metabase.xml


Step 4. 尋找 AspMaxRequestEntityAllowed,原本預設為 204800 (代表 200 KB)

Step 5. 我的需求為10M 所以我改成 10240000

Step 6.存檔後重新啟動上述兩個服務即可



2010年11月21日 星期日

[Django] 相關資源網站






Django focuses on automating as much as possible and adhering to the DRY principle.

Django Document

modwsgi - Python WSGI adapter module for Apache.




The Python Haven - Django powered AJAX Chat – Part 1

ericks - 用 Python + django 10分鐘內作出一個 blog


fcamel - Django 內建的 template

[phpmyadmin] Windows 7 phpmyadmin首頁空白 無法登入

今天灌好Apache + MySQL + PHP時, 一直用phpmyadmin一直無法登入

最後到網路上去查才發現原來Windows 7的hosts預設是空的

hosts的路徑在 C:\Windows\System32\drivers\etc\hosts



把127.0.0.1前面的# 拿掉存檔就可以了

[Software] Firefox + Selenium IDE 網頁自動測試

 先貼起來放, 有空再補用法跟圖。

錄製網頁的使用畫面, 然後自動測試, 例如新增, 刪除, 修改, 可以省下Web Developer的測試時間, 順便可以做功能性的Demo

Selenium IDE
http://seleniumhq.org/projects/ide/

2010年11月18日 星期四

[J2EE] Install Tomcat and Ant on CentOS 5.5 安裝Tomcat, Ant在CentOS

== Download 下載檔案 ==


JDK 1.6
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Apache Ant
http://ftp.twaren.net/Unix/Web/apache//ant/binaries/apache-ant-1.8.1-bin.tar.gz

Apache Tomcat
http://apache.stu.edu.tw//tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz



== Install 安裝 ==

安裝SDK
cd /opt
mkdir java
cd java
sh jdk-6u22-linux-i586.bin

解壓縮Ant, Tomcat

tar -zxv -f apache-ant-1.8.1-bin.tar.gz -C /opt/
tar -zxv -f apache-tomcat-6.0.29.tar.gz -C /opt/

ln -s /opt/apache-ant-1.8.1/bin/ant /usr/bin

複製serlet-api.jar給ant
cp /opt/apache-tomcat-6.0.29/lib/servlet-api.jar /opt/apache-ant-1.8.1/lib

設定環境變數
export ANT_HOME=/opt/apache-ant-1.8.1/
export JAVA_HOME=/opt/java/jdk1.6.0_22/
export PATH=${PATH}:${ANT_HOME}/bin

啟動Tomcat
cd /opt/apache-tomcat-6.0.29/bin
./startup.sh

檢查Server Log
less /opt/apache-tomcat-6.0.29/logs/catalina.out

== Automate startup 自動啟動Tomcat ==

cd /etc/init.d
vim tomcat


#!/bin/bash
# chkconfig: 234 20 80
# description: Tomcat Server start/shutdown script
# processname: tomcat
JAVA_HOME=/opt/java/jdk1.6.0_22
export JAVA_HOME
TOMCAT_HOME=/opt/apache-tomcat-6.0.29/bin
START_TOMCAT=/opt/apache-tomcat-6.0.29/bin/startup.sh
STOP_TOMCAT=/opt/apache-tomcat-6.0.29/bin/shutdown.sh

start() {
echo "Starting tomcat: "
cd $TOMCAT_HOME
${START_TOMCAT}
echo "Tomcat start done."
}
stop() {
echo "Shutting down tomcat: "
cd $TOMCAT_HOME
${STOP_TOMCAT}
echo "Tomcat shutdown done."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0


chmod 755 tomcat

/sbin/chkconfig --add tomcat
/sbin/chkconfig --level 234 tomcat on
/sbin/chkconfig --list tomcat

2010年11月12日 星期五

[Android] 預設開啟Menu選單 openOptionsMenu

在Activity加上onAttachedToWindow() 方法

public void onAttachedToWindow() {
  super.onAttachedToWindow();
  openOptionsMenu();
}

2010年11月11日 星期四

[Linux] VirtualBox - Kubuntu 調整解析度

用VirtualBox灌完KUbuntu後調解析度時, 只有800x600和640x480, 那麼大的螢幕, 解析度當然要調高點。

System Setting -> Display and Monitor
系統設定 -> 顯示與螢幕



























可以透過VirtualBox的安裝Guest Additions...來達成

[Python] 相關資源筆記

Last update: 2010-11-11


Frozen Binary
cx_Freeze
py2exe
Pyinstaller


GUI
wxPython - a GUI toolkit


Web Framework
Django is a high-level Python Web framework
http://www.djangoproject.com/
http://docs.djangoproject.com/en/dev/
http://www.djangobook.com/


Specialize Compiler
Psyco - High-level languages need not be slower than low-level ones. - Just-in-time compiler
shedskin - An experimental (restricted) Python-to-C++ compiler


Books
Dive Into Python 3(英文書籍)


酷!學園 - Python相關資源
Python課堂(簡)
啄木鳥社區(簡)
Python天天美味(总)

Style Guide for Python Code


Cinpy - C in Python



thenewboston - Python Programming Tutorial




lxml - Processing XML and HTML with Python

2010年11月10日 星期三

[JavaEE] 防止偽造跨站請求(CSRF) Prevent Cross-Site Request Forgery

防止偽造跨站請求(CSRF) Prevent Cross-Site Request Forgery

if(request.getHeader("Referer") == null || request.getHeader("Referer").indexOf("http://localhost:8080/myProject/") < 0) return false;

透過referer來判斷Domain是否相同


==

在survey時有搜尋到一篇文章, 說Tomcat7新的feature有支援擋csrf

有興趣可以看看

Tomcat 7 新特性学习之一 - 防止CSRF攻击

[Android] Conversion to Dalvik format failed with error 1 解決方法

今天Eclipse的Console突然出現一堆錯誤訊息都是
Conversion to Dalvik format failed with error 1

解決方法


1. 選取所有的Project

2. 點選單列的Project -> Clean


3. 選Clean All Projects, 然後按OK就解決了!


可能有其他情況會出現一樣的錯誤, 如果這成功/不成功 解決你的問題, 請讓我知道 :)  thanks

2010年11月9日 星期二

[彈彈唱唱] 至少還有妳(cover by me)。想一個人,唱一首歌。


我怕來不及 我要抱著妳 直到感覺妳的皺紋 有了歲月的痕跡
直到肯定妳是真的 直到失去力氣 為了妳 我願意

動也不能動 也要看著妳 直到感覺妳的髮線 有了白雪的痕跡
直到視線變得模糊 直到不能呼吸 讓我們 形影不離

如果 全世界我也可以放棄 至少還有妳 值得我去珍惜
而妳在這裡 就是生命的奇蹟
也許 全世界我也可以忘記 就是不願意 失去妳的消息

妳掌心的痣 我總記得在那裡

我們好不容易 我們身不由己
我怕時間太快 不夠將妳看仔細
我怕時間太慢 日夜擔心失去妳
恨不得一夜之間白頭 永不分離

2010年11月8日 星期一

[Android] 將ImageButton背景設為透明

左邊透明, 右邊是一般



我發現設為透明最快的方法, 就是設為@null:
<ImageButton android:id="@+id/ImageButton01"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/normal"
  android:background="@null"
  />

在網路上看到有人說
透明是#00000000
半透明是#e0000000
不過目前我試不出半透明跟透明差在哪= ="

[Android] Activity Lifecycles 生命週期




































執行App時: OnCreate() -> OnStart() -> OnResume()
結束App時: OnPause() -> OnStop() -> OnDestroy()
Finish() -> OnPause() -> OnStop() -> OnDestroy()
暫停App時: OnPause() -> OnStpop()
重啟App時: OnRestart() -> OnStart() -> OnResume()

以下是測試程式 (使用Toast顯示文字):

package com.demo.activitycycle;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class ActivityLifeCycle extends Activity {

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     Toast.makeText(this, "OnCreate()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  Toast.makeText(this, "OnDestroy()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onPause() {
  super.onPause();
  Toast.makeText(this, "OnPause()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onRestart() {
  super.onRestart();
  Toast.makeText(this, "OnRestart()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onResume() {
  super.onResume();
  Toast.makeText(this, "OnResume()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onStart() {
  super.onStart();
  Toast.makeText(this, "OnStart()", Toast.LENGTH_SHORT).show();
 }

 @Override
 protected void onStop() {
  super.onStop();
  Toast.makeText(this, "OnStop()", Toast.LENGTH_SHORT).show();
 }
}

Reference:
http://developer.android.com/guide/topics/fundamentals.html#lcycles
http://developer.android.com/reference/android/widget/Toast.html

[Android] ADB常用指令

adb [-d | -e | -s <serialNumber>] <command>

-d 是送到USB的實際連接設備
-e 是只送到模擬器

如果執行複數個模擬器, 就要用serialNumber來區別
-s <serialnumber>


安裝或移除apk


install安裝後面接的參數是apk的檔案路徑名稱
uninstall移除後面接的參數是package name
ex:
adb -s emulator-5554 install helloworld.apk
adb uninstall com.myandroid.helloworld



偵測設備資訊


# List of devices attached
adb devices 

# device(運作中), offline(離線), bootloader(開機中)
adb get-state

# 取得執行模擬器的序號
adb get-serialno


進入shell命令列模式

指令跟Linux一樣

adb shell
# ls /data/data
# ls /data/app

2010年11月5日 星期五

[Android] HTC Desire 開發機環境設置

安裝Android SDK

安裝HTC Sync

USB連線類型選HTC Sync

手機設定:
設定->應用程式
未知的來源 -> 打勾
開發 -> 除錯 -> 打勾

2010年11月2日 星期二

[Codeigniter] 使用URI Routing來做網址自訂及SEO

URI Routing
http://codeigniter.com/user_guide/general/routing.html


上周在思考製作Blog時, 如何讓網址可以一個name對應到一個post_id

假設我有一個網址

http://localhost/post/list/10

我想要他不要每篇post都只是跟隨著post_id

我可以利用route來做

在route.php中加入
$route['post/cool'] = "post/list/10";

這樣我就可以用
http://localhost/post/cool

來mapping到post/list/10

來達到SEO的效果。

2010年11月1日 星期一

[PHP] 用microtime 記錄PHP執行時間

在PHP的開頭貼上:
$mtime = explode(" ", microtime()); 
$startTime = $mtime[1] + $mtime[0];

在結尾貼上

$mtime = explode(" ", microtime()); 
$endTime = $mtime[1] + $mtime[0]; 
$totalTime = ($endTime - $startTime); 
echo $totalTime." seconds";


就會顯示如
3.99565601349 seconds
的結果
Related Posts Plugin for WordPress, Blogger...