開啟 apache
sudo su
apachectl start
/Library/WebServer/Documents
http://localhost/
開啟php
cd /etc/apache2
vim httpd.conf
開啟
LoadModule php5_module libexec/apache2/libphp5.so
apachectl restart
2015年9月23日 星期三
2015年7月29日 星期三
[Tools] Android Studio 快速鍵
功能
|
Windows
|
Mac
|
刪除整行
|
Ctrl + Y
|
Cmd + Delete
|
清除沒用import
|
Alt + Ctrl + O
|
Option +
Control + O
|
跳到目前變數宣告位置
|
Ctrl + B
or Ctrl + 滑鼠左鍵
|
|
程式架構
|
Ctrl + F12
|
Cmd + F12
|
尋找
|
Ctrl + F
|
Cmd + F
|
繼承架構圖
|
Ctrl + H
|
|
跳到警告位置
|
F2
|
|
把程式碼變註解 //
|
Ctrl + /
|
Cmd + /
|
把程式碼變註解 /* */
|
Ctrl + Shift
+ /
|
Cmd + Option +
/
|
取代
|
Ctrl + R
|
Cmd + R
|
縮排
|
Ctrl + Alt + L
|
Cmd + Option +
L
|
擴大縮小選取範圍
|
Ctrl + W/Ctrl
+ Shift + W
|
Option +
Up/Down
|
定位到字首/尾
|
Ctrl +
Left/Right
|
Cmd +
Left/Right
|
大小寫轉換
|
Ctrl + Shift +
U
|
Cmd + Shift +
U
|
跳行
|
Ctrl + G
|
Cmd + L |
最近開啟文件
|
Ctrl+E
|
|
最近編輯文件
|
Ctrl+Shift+E
|
|
search
everywhere
|
double Shift
|
|
全部尋找
|
Ctrl+Shift+R
|
|
列出目前class 的function和變數
|
Ctrl+O
|
|
回到上次修改處
|
Alt+←
|
|
到下一個修改處
|
Alt+→
|
|
Replace in path
|
Ctrl+Shift+R
|
|
Settings
|
Ctrl+Alt+S
|
|
Project Structure |
Ctrl+Alt+Shift+S
|
|
快速加上If/For/While/try-catch
|
Ctrl+Alt+T
|
Command+option+T
|
2015年7月10日 星期五
[Apache ] win7 灌 Apache HTTP Server
下載網址
http://www.apachelounge.com/download/
Apache 2.4.12 Win64
修改 Apache24\conf\httpd.conf
Start apache in a DOS box:
>httpd.exe Install as a service:

爬文網友表示skype 會佔據 port 80
關閉 skype 重開 apache 即可
2015年7月2日 星期四
[ubuntu] Shell Script 筆記
function 使用方式
function Sync() { echo "sync $1" p4 sync "@$1" } Sync
時間使用方式
Date=$(date +%Y%m%d) Time=$(date +%H%M%S)
if else 使用方式
if [ -d "$tar" ] then echo "$tar found." else mkdir "$tar" fi
[ string1 = string2 ] string1 and string2 are equal
[ string1 != string2 ] string1 and string2 are not equal
[ string1 \< string2 ] string1 is lexically less than string2(e.g. 'a' is less than 'b')
[ string1 \> string2 ] string1 is lexically greater than string2(e.g. 'b' is greater than 'a')
[ -e file ] file exists
[ -f file ] file is a file
[ -d file ] file is a directory
[ n1 -eq n2 ] true if integer n1 = integer n2
[ n1 -ne n2 ] true if integer n1 <> n2
[ n1 -gt n2 ] true if n1 > n2
[ n1 -ge n2 ] true if n1 >= n2
[ n1 -lt n2 ] true if n1 < n2
[ n1 -le n2 ] true if n1 <= n2
2015年4月9日 星期四
2014年9月27日 星期六
[android] 開啟圖檔
private Bitmap openPic(String file) { if (file == null) return null; if (DEB_PIC) Log.d(TAG,"openPic() file = " + file); File f = new File(file); if (f.exists()) { return BitmapFactory.decodeFile(file); } else { Log.d(TAG,"openPic() "+ file+" not exists"); return null; } }
[android] 轉存png檔
private void savePic(Bitmap b,String strFileName) { //Log.e(TAG, "savePic()"); FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
[android] 抓螢幕截圖 java code
private void getPic() { Bitmap mScreenBitmap; Matrix mDisplayMatrix; mDisplayMatrix = new Matrix(); DisplayMetrics metrics = new DisplayMetrics(); WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); if (wm == null) { Log.d(TAG,"getPic() wm = null"); return; } wm.getDefaultDisplay().getRealMetrics(metrics); float[] dims = {metrics.widthPixels, metrics.heightPixels}; float degrees = getDegreesForRotation(wm.getDefaultDisplay().getRotation()); boolean requiresRotation = (degrees > 0); if (requiresRotation) { // Get the dimensions of the device in its native orientation mDisplayMatrix.reset(); mDisplayMatrix.preRotate(-degrees); mDisplayMatrix.mapPoints(dims); dims[0] = Math.abs(dims[0]); dims[1] = Math.abs(dims[1]); } mScreenBitmap = SurfaceControl.screenshot((int) dims[0], (int) dims[1]); if (mScreenBitmap == null) { Log.d(TAG,"getPic() mScreenBitmap = null"); return; } if (requiresRotation) { // Rotate the screenshot to the current orientation Bitmap ss = Bitmap.createBitmap(metrics.widthPixels, metrics.heightPixels, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(ss); c.translate(ss.getWidth() / 2, ss.getHeight() / 2); c.rotate(degrees); c.translate(-dims[0] / 2, -dims[1] / 2); c.drawBitmap(mScreenBitmap, 0, 0, null); c.setBitmap(null); // Recycle the previous bitmap mScreenBitmap.recycle(); mScreenBitmap = ss; } // Optimizations mScreenBitmap.setHasAlpha(false); mScreenBitmap.prepareToDraw(); }
[android] 抓top activity 名稱
private String getTopActivity() { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); if (am == null) { Log.d(TAG,"Go() am = null"); return null; } // get the info from the currently running task List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); //Log.d("topActivity", "CURRENT Activity ::" // + taskInfo.get(0).topActivity.getClassName()); ComponentName componentInfo = taskInfo.get(0).topActivity; //Log.d(TAG, "getPackageName = " + componentInfo.getPackageName()); return componentInfo.getPackageName(); }
[android] java code 送touch event
private void touch(int x, int y) { try { Runtime.getRuntime().exec("input tap "+x+" "+y); } catch (Throwable t) { } }
[android] service 處理音量鍵
android service 收不到key event.
可以透過 AUDIO_SERVICE
可以透過 AUDIO_SERVICE
public class SettingsContentObserver extends ContentObserver { int previousVolume; Context context; public SettingsContentObserver(Context c, Handler handler) { super(handler); Log.d(TAG,"SettingsContentObserver()"); context=c; AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); previousVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC); } @Override public boolean deliverSelfNotifications() { Log.d(TAG,"deliverSelfNotifications()"); return super.deliverSelfNotifications(); } @Override public void onChange(boolean selfChange) { Log.d(TAG,"onChange()"); super.onChange(selfChange); AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_SYSTEM); Log.d(TAG,"onChange() currentVolume = "+currentVolume); } } } @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate()"); mSettingsContentObserver = new SettingsContentObserver(this,new Handler()); getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver ); } @Override public void onDestroy() { Log.d(TAG,"onDestroy()"); getContentResolver().unregisterContentObserver(mSettingsContentObserver); }
[android] 關於android 手機遊戲外掛
一點小小的想法!
經過實作確定可行!
python + adb command 實作andorid 手機的遊戲外掛
透過python 下adb command 截圖並pull 到電腦端
接著透過 python PIL lib 做圖形識別
接著對手機送touch event
優點:
實作超快! 省時省力
缺點:
需要開著電腦!
經過實作確定可行!
python + adb command 實作andorid 手機的遊戲外掛
透過python 下adb command 截圖並pull 到電腦端
def getPic(): os.chdir(adb) os.system("adb shell screencap -p /sdcard/screen.png") os.system("adb pull /sdcard/screen.png "+pic_dir+"pic.png") os.system("adb shell rm /sdcard/screen.png")
接著透過 python PIL lib 做圖形識別
接著對手機送touch event
def touch(x,y): os.chdir(adb) os.system("adb shell input tap "+str(x)+" "+str(y))
優點:
實作超快! 省時省力
缺點:
需要開著電腦!
2014年9月26日 星期五
[程式語言] syntaxhighlighter
syntaxhighlighter
可讓程式碼變得更好看
官網: http://alexgorbatchev.com/SyntaxHighlighter/
安裝方式 參考
http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.html
程式碼用下面語法包起來
可讓程式碼變得更好看
官網: http://alexgorbatchev.com/SyntaxHighlighter/
安裝方式 參考
http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.html
Brush name
|
Brush aliases
|
File name
|
bash, shell
|
shBrushBash.js
| |
cpp, c
|
shBrushCpp.js
| |
css
|
shBrushCss.js
| |
js, jscript, javascript
|
shBrushJScript.js
| |
java
|
shBrushJava.js
| |
perl, pl
|
shBrushPerl.js
| |
php
|
shBrushPhp.js
| |
py, python
|
shBrushPython.js
| |
xml, xhtml, xslt, html, xhtml
|
shBrushXml.js
|
程式碼用下面語法包起來
<pre class=
"brush: java"
>
</pre
"
>
public class Hello { public static int gvar; public static void say(String s) { int x = 10; System.out.print(s+x); } public static void main(String[] argv) { float y = 0; say("Hello, world\n"); } }
<pre class=
"brush: python"
>
</pre
"
>
print("Hello, world!")
2014年7月15日 星期二
2014年2月21日 星期五
[Windows] 快速鍵
電腦鍵盤上你不知道的秘密
1.很多時候,需要暫時離開座位去做別的事情,如果對自 己的電腦安全很重視,不妨按住windows鍵後,再按 L鍵,這樣電腦就直接鎖屏了,這樣就不用擔心電腦的資料 外泄啦
2.要找電腦上的文件時,一般人會先找到“我的電腦”, 然後點擊打開,而高手總是很酷的,輕輕按下鍵盤上的Wi ndows鍵不放然後再按E鍵,直接打開電腦的資源管理 器,而一般人還在慢慢尋找“我的電腦”的圖標呢,嗯,高 手就是這樣直接把一般人給秒殺!
3.正在玩遊戲或看羞羞的東西的時候,Boss進來了! 鼠標一下子點不到右下角的顯示桌面,怎麽辦,怎麽辦?別 緊張!直接按下Windows鍵和D鍵,看,桌面閃現!
4.一個小花招,蠻炫的。按下windows鍵按後再按 Tab鍵,可以以3D效果顯示切換窗口
5.windows自帶的錄像功能。按下windows 鍵+R,輸入psr.exe回車,然後就可以開始記錄了 。
6.你知道怎樣一次過調整顯示器亮度、音量大小,打開無 線網,還能夠看到本本電池電量嗎?把本本的畫面放到電視 上,已經連好線了,需要怎麽設置?小case啦,想要這 些功能,你只需要按下Windows鍵+X,一次性滿足 你的所有願望啦!
7.Windows + R輸入osk,出現炫酷虛擬鍵盤!你按下一個鍵,它也會 同樣顯示出來按下的狀態喔!
8.圖片太小,眼神不好使咋辦?試試windows鍵和 +++++++++,放大鏡出現!
9.現在很多程序,比如QQ,IE,都是在同一個窗口里 面打開幾個頁面。用Ctrl+Tab,可以在幾個頁面之 間互相切換。用Ctrl+w,可以關閉當前的頁面。
10.按下windows鍵不放,再按下Fn,再按下H ome,你就可以打開系統屬性了。(其實用鼠標在我的電 腦上面右鍵->屬性也一樣,不過不覺得用鍵盤操作更帥嘛 ~^^
11.shift + 任務欄的窗口圖標 = 新建一個該窗口
Ctrl+S 保存
Ctrl+W 關閉程序
Ctrl+N 新建 Ctrl+O 打開 Ctrl+Z 撤銷 Ctrl+F 查找 Ctrl+X 剪切 Ctrl+C 複制
Ctrl+V 粘貼 Ctrl+A 全選 Ctrl+[ 縮小文字
Ctrl+] 放大文字 Ctrl+B 粗體 Ctrl+I 斜體
Ctrl+U 下劃線
Ctrl+Shift 輸入法切換 Ctrl+空格 中英文切換
Ctrl+回車 QQ號中發送信息
Ctrl+Home 光標快速移到文件頭
Ctrl+End 光標快速移到文件尾
Ctrl+Esc 顯示開始菜單
Ctrl+Shift+Ctrl+Shift+> 快速放大文字
Ctrl+F5 在IE中強行刷新
Ctrl+拖動文件 複制文件
Ctrl+Backspace 啟動\關閉輸入法
拖動文件時按住Ctrl+Shift 創建快捷方式
Alt+空格+C 關閉窗口
Alt+空格+N 最小化當前窗口
Alt+空格+R 恢複最小化窗口
Alt+空格+X 最大化當前窗口
Alt+空格+M 移動窗口
Alt+空格+S 改變窗口大小
Alt+Tab 兩個程序交換
Alt+255 QQ號中輸入無名人
Alt+F 打開文件菜單
Alt+V 打開視圖菜單
Alt+E 打開編輯菜單
Alt+I 打開插入菜單
Alt+O 打開格式菜單
Alt+T 打開工具菜單
Alt+A 打開表格菜單
Alt+W 打開窗口菜單
Alt+H 打開幫助菜單
Alt+回車 查看文件屬性
Alt+雙擊文件 查看文件屬性
Alt+X 關閉C語言
Shift快捷鍵
Shift+空格 半\全角切換
Shift + Delete 永久刪除所選項,而不將它放到“回收站”中。
拖動某一項時按 CTRL 複制所選項。
拖動某一項時按 CTRL + SHIFT 創建所選項目的快捷鍵。
WORD全套快捷鍵小技巧
CTRL+O 打開
CTRL+P 打印
CTRL+A 全選
CTRL+[/] 對文字進行大小設置(在選中目標情況下)
CTRL+D 字體設置(在選中目標情況下)
CTRL+G/H 查找/替換; CTRL+N 全文刪除;
CTRL+M 左邊距(在選中目標情況下);
CTRL+U 繪制下劃線(在選中目標情況下);
CTRL+B 加粗文字(在選中目標情況下);
CTRL+I 傾斜文字(在選中目標情況下);
CTRL+Q 兩邊對齊(無首行縮進),(在選中目標情況下)或將光標 放置目標文 字的段尾,亦可操作
CTRL+J 兩端對齊(操作同上)
CTRL+E 居中(操作同上)
CTRL+R 右對齊(操作同上)
CTRL+K 插入超鏈接
來源: https://www.facebook.com/photo.php?fbid=674993699205787&set=a.169369159768246.29841.100000854901718&type=1&theater
1.很多時候,需要暫時離開座位去做別的事情,如果對自
2.要找電腦上的文件時,一般人會先找到“我的電腦”,
3.正在玩遊戲或看羞羞的東西的時候,Boss進來了!
4.一個小花招,蠻炫的。按下windows鍵按後再按
5.windows自帶的錄像功能。按下windows
6.你知道怎樣一次過調整顯示器亮度、音量大小,打開無
7.Windows + R輸入osk,出現炫酷虛擬鍵盤!你按下一個鍵,它也會
8.圖片太小,眼神不好使咋辦?試試windows鍵和
9.現在很多程序,比如QQ,IE,都是在同一個窗口里
10.按下windows鍵不放,再按下Fn,再按下H
11.shift + 任務欄的窗口圖標 = 新建一個該窗口
Ctrl+S 保存
Ctrl+W 關閉程序
Ctrl+N 新建 Ctrl+O 打開 Ctrl+Z 撤銷 Ctrl+F 查找 Ctrl+X 剪切 Ctrl+C 複制
Ctrl+V 粘貼 Ctrl+A 全選 Ctrl+[ 縮小文字
Ctrl+] 放大文字 Ctrl+B 粗體 Ctrl+I 斜體
Ctrl+U 下劃線
Ctrl+Shift 輸入法切換 Ctrl+空格 中英文切換
Ctrl+回車 QQ號中發送信息
Ctrl+Home 光標快速移到文件頭
Ctrl+End 光標快速移到文件尾
Ctrl+Esc 顯示開始菜單
Ctrl+Shift+Ctrl+Shift+> 快速放大文字
Ctrl+F5 在IE中強行刷新
Ctrl+拖動文件 複制文件
Ctrl+Backspace 啟動\關閉輸入法
拖動文件時按住Ctrl+Shift 創建快捷方式
Alt+空格+C 關閉窗口
Alt+空格+N 最小化當前窗口
Alt+空格+R 恢複最小化窗口
Alt+空格+X 最大化當前窗口
Alt+空格+M 移動窗口
Alt+空格+S 改變窗口大小
Alt+Tab 兩個程序交換
Alt+255 QQ號中輸入無名人
Alt+F 打開文件菜單
Alt+V 打開視圖菜單
Alt+E 打開編輯菜單
Alt+I 打開插入菜單
Alt+O 打開格式菜單
Alt+T 打開工具菜單
Alt+A 打開表格菜單
Alt+W 打開窗口菜單
Alt+H 打開幫助菜單
Alt+回車 查看文件屬性
Alt+雙擊文件 查看文件屬性
Alt+X 關閉C語言
Shift快捷鍵
Shift+空格 半\全角切換
Shift + Delete 永久刪除所選項,而不將它放到“回收站”中。
拖動某一項時按 CTRL 複制所選項。
拖動某一項時按 CTRL + SHIFT 創建所選項目的快捷鍵。
WORD全套快捷鍵小技巧
CTRL+O 打開
CTRL+P 打印
CTRL+A 全選
CTRL+[/] 對文字進行大小設置(在選中目標情況下)
CTRL+D 字體設置(在選中目標情況下)
CTRL+G/H 查找/替換; CTRL+N 全文刪除;
CTRL+M 左邊距(在選中目標情況下);
CTRL+U 繪制下劃線(在選中目標情況下);
CTRL+B 加粗文字(在選中目標情況下);
CTRL+I 傾斜文字(在選中目標情況下);
CTRL+Q 兩邊對齊(無首行縮進),(在選中目標情況下)或將光標
CTRL+J 兩端對齊(操作同上)
CTRL+E 居中(操作同上)
CTRL+R 右對齊(操作同上)
CTRL+K 插入超鏈接
來源: https://www.facebook.com/photo.php?fbid=674993699205787&set=a.169369159768246.29841.100000854901718&type=1&theater
2014年2月14日 星期五
[C] printf
unsigned long n;
printf("%lu", n); // unsigned long
long n;
printf("%ld", n); // signed long
jlong %llu
2014年2月13日 星期四
[Python] python 送 gmail
import os import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText def sendGmailSmtp(strGmailUser,strGmailPassword,strRecipient,strSubject,strContent): strMessage = MIMEMultipart() strMessage['From'] = strGmailUser strMessage['To'] = strRecipient strMessage['Subject'] = strSubject strMessage.attach(MIMEText(strContent)) mailServer = smtplib.SMTP('smtp.gmail.com', 587) mailServer.ehlo() mailServer.starttls() mailServer.ehlo() mailServer.login(strGmailUser, strGmailPassword) mailServer.sendmail(strGmailUser, strRecipient, strMessage.as_string()) mailServer.close() return 'send successed' print sendGmailSmtp('GmailUserName','GmailPassword','receive@XXX.XXX.XXX','subject','testcontent')
參考網址
http://infotecresearch.blogspot.tw/2012/05/python-gmail-smtp-email.html
2014年1月7日 星期二
[程式語言] Python 筆記
環境安裝
System Setup for Python, PyDev and Eclipse
基本語法print "Be careful not to fall off!"
>>> word = 'Hello Python' >>> word 'Hello Python' >>> word[2] 'l' >>> word[0:2] 'He' >>> word[2:4] 'll' >>>
+---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1
>>> word = "ABCDE" >>> word 'ABCDE' >>> len(word) 5
>>> x = int(raw_input("Please enter a number: ")) >>> if x < 0: ... x = 0 ... print 'Negative changed to zero' ... elif x == 0: ... print 'Zero' ... elif x == 1: ... print 'Single' ... else: ... print 'More' ...
>>> # Measure some strings: ... a = ['cat', 'window', 'defenestrate'] >>> for x in a: ... print x, len(x) ... cat 3 window 6 defenestrate 12
in 這個指令,可以檢查字串是否在某個變數裡面若存在會return True
ex:
print 'B' in string_test
2013年8月9日 星期五
訂閱:
文章 (Atom)