最近因為project的關係,需要用到動畫,最近CSS動畫又很紅!!
就來找了幾個資料來看看,發現用CSS支援很多
以下是參考的網站,可以看看都寫的還錯(希望我沒看錯,如果有更好的可以留言推薦一下)
Animation
CSS 动画指南: 原理和实战 (一)
CSS 动画指南: 原理和实战(二)
CSS3與濾境(12)-影格動畫
CSS Animation Tutorial
[CSS3 Note.] CSS3 Transform Matrix 筆記
Transform
CSS transform 能旋轉、傾斜、縮放變形 box
2011年12月5日 星期一
2011年11月11日 星期五
JavaScript 判斷是什麼瀏覽器
Android
var isAndroid = navigator.userAgent.toLowerCase().match(/android/i);
iPad
var isiPad = navigator.userAgent.match(/iPad/i)
iPhone
var isiPhone = navigator.userAgent.match(/iPhone/i)
iPod
var isiPod = navigator.userAgent.match(/iPod/i)
參考網站:http://hsinyu00.wordpress.com/2011/04/05/mobile-web-user-agent-sniffing/
2011年11月4日 星期五
修改blogger版面寬度
在Blogger後台,範本修改
就不囉唆直接參考
http://etblue.blogspot.com/2010/12/blogger-flexible-width-changes-with.html
就不囉唆直接參考
http://etblue.blogspot.com/2010/12/blogger-flexible-width-changes-with.html
當Android螢幕轉向的問題
當Android螢幕轉向時(如下)
系統都會將當前的Activity關閉並重新開啟。
為了不要讓他重新執行一次,要對AndroidManifest.xml文件做一些修改
AndroidManifest.xml文件
說明:android:name=".Magazine" 為當前要修改的activty。這樣是讓程序能夠響應旋轉屏幕的事件。
然後重寫onConfigurationChanged方法:
這樣系統就不會關閉重新開啟。
參考網站:
http://www.aslibra.com/blog/post/android-onConfigurationChanged.php
http://tonycube.blogspot.com/2011/10/dont-reload-when-rotate-device.html
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
系統都會將當前的Activity關閉並重新開啟。
為了不要讓他重新執行一次,要對AndroidManifest.xml文件做一些修改
AndroidManifest.xml文件
<activity android:name=".Magazine">
</activity>
//修改為:
<activity android:name=".Magazine" android:configChanges="orientation|keyboard"> </activity>
說明:android:name=".Magazine" 為當前要修改的activty。這樣是讓程序能夠響應旋轉屏幕的事件。
然後重寫onConfigurationChanged方法:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(D) Log.d(TAG, "+++ onConfigurationChanged +++"); }
這樣系統就不會關閉重新開啟。
參考網站:
http://www.aslibra.com/blog/post/android-onConfigurationChanged.php
http://tonycube.blogspot.com/2011/10/dont-reload-when-rotate-device.html
2011年10月13日 星期四
Android 畫面方向
Android 畫面方向
//螢幕未指定 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); //螢幕橫向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //螢幕直向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
2011年9月25日 星期日
Android 3.0 解決 android.os.NetworkOnMainThreadException
Android 3.0 解決 android.os.NetworkOnMainThreadException 這問題,
似乎是在3.0在網路上做了更嚴格的限制
在 onCreate()裡面加入
參考網站:http://liangfangli86.blog.163.com/blog/static/96848631201172314036329/
似乎是在3.0在網路上做了更嚴格的限制
在 onCreate()裡面加入
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build());
參考網站:http://liangfangli86.blog.163.com/blog/static/96848631201172314036329/
2011年8月24日 星期三
在 FreeBSD上的Apache,PHP的一些小設定
目前這個設定是針對我們Lab,大概就openssl不一樣
php.ini
-------------------------------------------------
error_reporting = E_ALL & ~E_NOTICE
extension=php_openssl.dll
date.timezone = "Asia/Taipei"
short_open_tag = On
httpd.conf
-------------------------------------------------
AllowOverride All
解釋
php.ini
-------------------------------------------------
error_reporting = E_ALL & ~E_NOTICE #是要讓PHP對變數不要太嚴警
extension=php_openssl.dll #因為Gmail的關係所以會要拿掉
date.timezone = "Asia/Taipei" #設定時區
short_open_tag = On #開啟短標籤 <? ?>
httpd.conf
------------------------------------------------
AllowOverride All #讓.htaccess可以執行
2011年8月9日 星期二
[PHP] 將Mysql 的時間轉換到PHP 並轉換格式
這裡就不講怎麼從 Mysql 抓值
mysql date : 2011-08-06 03:53:32
php echo : Saturday, Aug 06, 2011 03:53 AM
<?php echo date("l, M d, Y", strtotime($row['date'])); echo date("h:i A", strtotime($row['date'])); ?>
mysql date : 2011-08-06 03:53:32
php echo : Saturday, Aug 06, 2011 03:53 AM
2011年8月8日 星期一
[PHP] 上傳圖片
最近用php寫一個上傳圖片的程式
HTML
PHP
這樣就完成了!!
其中可以用 is_uploaded_file(file) 這個函數去判斷是否有上傳檔案
函數連結:http://php.net/manual/en/function.is-uploaded-file.php
參考網站:http://ckone1209.com/blog/?p=306
http://blog.yam.com/eviles/article/10921956
HTML
<form name="form1" action="" method="post" enctype="multipart/form-data"> <label><input name="file" type="file"></label> </form>
PHP
$file_name= $_FILES['file']['name']; //檔案名字 $file_temp_name = $_FILES['file']['tmp_name']; //伺服器上暫存檔名 $DestDIR = '............./'.$file_name;move_uploaded_file($file_temp_name, $DestDIR); //將上傳的檔案儲存到指定的目錄
這樣就完成了!!
其中可以用 is_uploaded_file(file) 這個函數去判斷是否有上傳檔案
函數連結:http://php.net/manual/en/function.is-uploaded-file.php
參考網站:http://ckone1209.com/blog/?p=306
http://blog.yam.com/eviles/article/10921956
2011年8月6日 星期六
[jQuery]Nivo Slider
Nivo Slider
這個是一個相當有質感的Slider,不僅滑動的圖片特效很多,還不固定
讓人有一種期待的心,想接著再看下一張
Dome:http://nivo.dev7studios.com/demos/
Downloads:http://dev7studios.com/downloads/42
這個是一個相當有質感的Slider,不僅滑動的圖片特效很多,還不固定
讓人有一種期待的心,想接著再看下一張
Dome:http://nivo.dev7studios.com/demos/
Downloads:http://dev7studios.com/downloads/42
[jQuery] jQuery progressbar
讓你的網頁擁有像Blog的文章編輯器
CKEditor
這個網站提供很方便編輯器,他所提供的功能不僅有一般文字修改(粗體、斜體)
還包含超連結、圖片、縮行、以及表格等等的
功能十分強大,即使你的網站色系是暗色他也能做調整,是個還不錯的套件
Dome:http://ckeditor.com/demo
Downloads :http://ckeditor.com/download
這個網站提供很方便編輯器,他所提供的功能不僅有一般文字修改(粗體、斜體)
還包含超連結、圖片、縮行、以及表格等等的
功能十分強大,即使你的網站色系是暗色他也能做調整,是個還不錯的套件
Dome:http://ckeditor.com/demo
Downloads :http://ckeditor.com/download
2011年7月23日 星期六
在GAE使用Distinct(配合template)
前幾天在使用資料庫的時候發現了一個方法,通常在讀取資料庫的時候沒辦法使用MySQL、MS SQL裡的 Distinct,在抓重複的值的時候會多抓但又沒辦法只抓單筆
於是我也不知道去哪裡想出來的方法,配合template語法,在for裡加入ifchanged就可以有Distinct效果
{% for i in billdb %} {% ifchanged %} <option value="{{i.bill_idnum}}">{{i.bill_idnum}}</option> {% endifchanged %} {% endfor %}
2011年6月5日 星期日
[Android] layout_gravity 和 gravity 的區別
layout_gravity 和 gravity 主要的區別是在於layout_gravity是針對父元素,也就是在他之前的元素做調整;而 gravity 是指他裡面去做調整。
android:layout_gravity="left"
android:layout_gravity="center"
android:gravity="right"
各屬性詳細的說明可以看 Drawable Resources
-
以上圖片連結參考 kuluto 的 此篇文章 若原創者有任何問題,可以寄信通知。
android:layout_gravity="left"
android:layout_gravity="center"
android:gravity="right"
各屬性詳細的說明可以看 Drawable Resources
-
以上圖片連結參考 kuluto 的 此篇文章 若原創者有任何問題,可以寄信通知。
2011年6月2日 星期四
[JavaScript] 開啟視窗
HTML
可以直接開啟新視窗,並且再最可以隱藏工具列等其他的設定
下面是jQuery 寫法
HTML
jQuery
以下是參數
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離瀏覽器上方的像素值;
left=0 窗口距離瀏覽器左側的像素值;
toolbar=no 是否顯示工具列,yes為顯示、no為不顯示;
menubar=no 是否顯示選單列,yes為顯示、no為不顯示;
scrollbars=no 是否顯示滑動軸,yes為顯示、no為不顯示;
resizable=no 是否允許改變窗口大小,yes為允許、no為不允許;
location=no 是否允許顯示網址列,yes為允許、no為不允許;
status=no 是否顯示狀態檔內的訊息,yes為允許、no為不允許;
參考網站:http://www.study-area.org/coobila/tutorial_275.html
http://www.javascript-coder.com/window-popup/javascript-window-open.phtml
http://kyo0183.blogspot.com/2008/10/windowopen.html
<a href="#" onclick="window.open('test.html','textfile',config='height=500,width=750,menubar=1')"> 詳細資料 </a>
可以直接開啟新視窗,並且再最可以隱藏工具列等其他的設定
下面是jQuery 寫法
HTML
<a href="#" id="userdata" >詳細資料</a>
jQuery
$("#userdata").click(function () { window.open('/','textfile',config='height=500,width=750,menubar=1'); });
以下是參數
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離瀏覽器上方的像素值;
left=0 窗口距離瀏覽器左側的像素值;
toolbar=no 是否顯示工具列,yes為顯示、no為不顯示;
menubar=no 是否顯示選單列,yes為顯示、no為不顯示;
scrollbars=no 是否顯示滑動軸,yes為顯示、no為不顯示;
resizable=no 是否允許改變窗口大小,yes為允許、no為不允許;
location=no 是否允許顯示網址列,yes為允許、no為不允許;
status=no 是否顯示狀態檔內的訊息,yes為允許、no為不允許;
參考網站:http://www.study-area.org/coobila/tutorial_275.html
http://www.javascript-coder.com/window-popup/javascript-window-open.phtml
http://kyo0183.blogspot.com/2008/10/windowopen.html
2011年5月30日 星期一
[jQuery] 指定select為選取狀態
範例 HTML
jQuery code
在網頁裡就會顯示"Number 2"
取得目前點選的val值
參考網頁 here
<select id="selectBox"> <option value="A">Number 0</option> <option value="B">Number 1</option> <option value="C">Number 2</option> <option value="D">Number 3</option> <option value="E">Number 4</option> <option value="F">Number 5</option> <option value="G">Number 6</option> <option value="H">Number 7</option> </script>
jQuery code
<script> $('#selectBox option[value=C]').attr('selected', 'selected'); </script>
在網頁裡就會顯示"Number 2"
取得目前點選的val值
<script> $("#selectBox").change(function(){ var t = $(this).val(); }) </script>
參考網頁 here
[GAE] reCaptcha 應用Python
首先先在 recaptcha 這裡申請網站 Domain Name
之後會給你 Public Key 跟 Private Key 等等會用到
接著在裡選擇語言 here 這裡介紹Python
先從 這裡下載python用的 python_recaptcha-client 下載解壓縮後將 \recaptcha\client\captcha.py 放在你的gae目錄底下
接著在你的檔案 import captcha
呼叫此函數captcha.displayhtml('public_key') 在public_key 裡放入剛剛取得的 Public Key,會回傳一段reCaptcha 的 html
前端的部份就完成,然後在你的post那裡取得你的 recaptcha_challenge_field 、recaptcha_response_field和設定你的private_key跟你的Domain Name
remoteip= 'domain_name ' #剛剛申請的domain_name
有問題可以參考這篇 reCaptcha_to_php 應該大同小異,或是
直接參考 google recaptcha api
之後會給你 Public Key 跟 Private Key 等等會用到
接著在裡選擇語言 here 這裡介紹Python
先從 這裡下載python用的 python_recaptcha-client 下載解壓縮後將 \recaptcha\client\captcha.py 放在你的gae目錄底下
接著在你的檔案 import captcha
呼叫此函數captcha.displayhtml('public_key') 在public_key 裡放入剛剛取得的 Public Key,會回傳一段reCaptcha 的 html
前端的部份就完成,然後在你的post那裡取得你的 recaptcha_challenge_field 、recaptcha_response_field和設定你的private_key跟你的Domain Name
recaptcha_challenge_field = self.request.get('recaptcha_challenge_field')
recaptcha_response_field = self.request.get('recaptcha_response_field')
private_key = 'private_key' #剛剛取得的private_keyremoteip= 'domain_name ' #剛剛申請的domain_name
呼叫 captcha.submit(recaptcha_challenge_field,recaptcha_response_field,private_key,remoteip)
會回傳你剛剛在reCaptcha t輸入的是否為正確(return boolean) 就完成啦!!
全部語法
import captcha
from google.appengine.ext import webapp
# Captcha
domain_name = 'you_domain_name'
public_key = 'public_key'
private_key = 'private_key'
class test(webapp.RequestHandler):
def get(self):
captcha_html = captcha.displayhtml(public_key)
self.response.out.write(captcha_html)
def post(self):
recaptcha_challenge_field = self.request.get('recaptcha_challenge_field')
recaptcha_response_field = self.request.get('recaptcha_response_field')
private_key = private_key
remoteip = domain_name
ans = captcha.submit(recaptcha_challenge_field,recaptcha_response_field,private_key,remoteip)
self.response.out.write('ans= '+str(ans.is_valid))
有問題可以參考這篇 reCaptcha_to_php 應該大同小異,或是
直接參考 google recaptcha api
2011年5月15日 星期日
Android MenuInflater的使用(layout menu)
1.建立一個 Android 工程我們命名為 MenuInflaterDemo .
2.在 res 目錄下創建 menu 目錄,並且創建 options_menu.xml (我們定義的菜單)文件,代碼如下:
3.在主要程式碼內加入,如下
當選單選到Add or Wallpaper ...則會執行 onOptionsItemSelected 底下
switch 的case
參考網站:http://blog.csdn.net/Android_Tutor/archive/2010/04/23/5522913.aspx
2.在 res 目錄下創建 menu 目錄,並且創建 options_menu.xml (我們定義的菜單)文件,代碼如下:
<?xml version= "1.0" encoding= "utf-8" ?>
<menu
xmlns:android= "http://schemas.android.com/apk/res/android" >
<item android:id= "@+id/menu_add"
android:title= "Add"
android:icon= "@android:drawable/ic_menu_add"
/>
<item android:id= "@+id/menu_wallaper"
android:title= "Wallpaper"
android:icon= "@android:drawable/ic_menu_gallery"
/>
<item android:id= "@+id/menu_search"
android:title= "Search"
android:icon= "@android:drawable/ic_search_category_default"
/>
<item android:id= "@+id/menu_setting"
android:title= "Settings"
android:icon= "@android:drawable/ic_menu_preferences"
/>
</menu>
3.在主要程式碼內加入,如下
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_add: break ; case R.id.menu_wallaper: break ; case R.id.menu_search: break ; case R.id.menu_setting: break ; } return super .onOptionsItemSelected(item); }
當選單選到Add or Wallpaper ...則會執行 onOptionsItemSelected 底下
switch 的case
參考網站:http://blog.csdn.net/Android_Tutor/archive/2010/04/23/5522913.aspx
2011年5月14日 星期六
GAE 使用Session
網址:gae-sessions
下載完後,將gaesessions資料夾放入子目錄
在修改 appengine_config.py 裡的 9行
使用方法和一些函數使用
詳細函數可以至gaesessions目錄下的__init__.py
下載完後,將gaesessions資料夾放入子目錄
在修改 appengine_config.py 裡的 9行
COOKIE_KEY = 'do not use this key'更改成
COOKIE_KEY = os.urandom(64)
使用方法和一些函數使用
session = get_current_session() session['a'] ='a' session.has_key('a') session.terminate()
session = get_current_session()建立 session
session['a'] ='a'設立一個為a的session值為'a'
session.has_key('a')判斷是否有a這個session return bool
session.terminate()刪除session並終止該用戶
詳細函數可以至gaesessions目錄下的__init__.py
Androd 播放音樂
private MediaPlayer mPlayer; mPlayer = new MediaPlayer(); mPlayer = MediaPlayer.create(BluetoothControl.this, R.raw.sound_file_1); mPlayer.start();
在 Android 中,要播放影音檔,新版的 SDK 會建議你用 MediaPlayer 這個類別。裡頭提到,有兩個方法。一個是播放存放在 res/raw 中的影音檔,用下面這種方式。
MediaPlayer.create(BluetoothControl.this, R.raw.sound_file_1);
MediaPlayer.create(context, R.raw.檔名);參考連結:
http://ysl-paradise.blogspot.com/2008/08/mediaplayercreate.html
http://toimy.blogspot.com/2009/10/android-mediaplayer.html
Eclipse Android SDK的emulator: ERROR: unknown virtual device name
如果遇到這個狀況
emulator: ERROR: unknown virtual device name 'XXX'
emulator: could not find virtual device name 'XXX'
解決方法
1.電腦(我的電腦) 右鍵 -> 內容 -> 進階系統設定 -> 環境變數
2.系統變數->新增
變數名稱:ANDROID_SDK_HOME (固定)
變數值:E:\android-sdk-windows (為你的android-sdk存放路徑)
3.重啟 Eclipse 執行即可。
註:這個方法可以直接在SDK路徑下建立AVD ,若不想直接在SDK下建立也是有其他方法,可以另行參拜Google大神
emulator: ERROR: unknown virtual device name 'XXX'
emulator: could not find virtual device name 'XXX'
解決方法
1.電腦(我的電腦) 右鍵 -> 內容 -> 進階系統設定 -> 環境變數
變數名稱:ANDROID_SDK_HOME (固定)
變數值:E:\android-sdk-windows (為你的android-sdk存放路徑)
3.重啟 Eclipse 執行即可。
註:這個方法可以直接在SDK路徑下建立AVD ,若不想直接在SDK下建立也是有其他方法,可以另行參拜Google大神
2011年1月12日 星期三
[FreeBSD] VMware Tools Install (8.1)
在安裝VMware Tools 之前要先安裝 perl5.10 跟 compat 6x
#cd /usr/port/lang/perl5.10 ; make install clean #cd /usr/ports/misc/compat6x ; make install clean
然後在掛載VMware Tools
【VM \ Guest \ Install/Upgrade VMware Tools】
#mount /cdrom
#cd /cdrom
#cp vmware-freebsd-tools.tar.gz /tmp
#cd /tmp ; umount /cdrom
#tar zxvf vmware-freebsd-tools.tar.gz
#cd vmware-tools-distrib/
#./vmware-install.pl
訂閱:
文章 (Atom)