顯示具有 程式語言 標籤的文章。 顯示所有文章
顯示具有 程式語言 標籤的文章。 顯示所有文章

2015年9月23日 星期三

[Mac] 開啟內建apache

開啟 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年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 httpd-2.4.12-win64-VC14.zip 9 Jul '15 13.284K

修改 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日 星期四

[Excel VBA] 筆記

開啟開發人員選項
     1.[檔案]/[選項]
     2.[自訂功能區]/將[開發人員]打勾

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

    
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 到電腦端

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


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年2月21日 星期五

[Windows] 快速鍵

電腦鍵盤上你不知道的秘密
1.很多時候,需要暫時離開座位去做別的事情,如果對自己的電腦安全很重視,不妨按住windows鍵後,再按L鍵,這樣電腦就直接鎖屏了,這樣就不用擔心電腦的資料外泄啦
2.要找電腦上的文件時,一般人會先找到“我的電腦”,然後點擊打開,而高手總是很酷的,輕輕按下鍵盤上的Windows鍵不放然後再按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,再按下Home,你就可以打開系統屬性了。(其實用鼠標在我的電腦上面右鍵->屬性也一樣,不過不覺得用鍵盤操作更帥嘛~^^
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

[Python] python 執行帶參數

import sys 
    len(sys.argv)
    sys.argv[1]
    sys.argv[2]
    sys.argv[3]

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日 星期五

[google map] 測試