江苏快三开奖结果

posts - 20,comments - 15,trackbacks - 0
創建wingide的擴展腳本
1. 在腳本目錄中創建腳本
c:\Users\${username}\AppData\Roaming\Wing Pro 7
~/.wingpro7
wing6
/Applications/WingIDE.app/Contents/Resources/scripts
2. 執行腳本
Edit->Command By Name (ctrl+/)
在最下面出現一個Edit框, 輸入scripts目錄里的py文件里函數的名稱, 系統會給出自動完成提示
3. 在scripts目錄里存入自己的文件
一個例子, 獲取編輯框, 在當前光標插入日期
import wingapi
import time
def insert_date():
    editor = wingapi.gApplication.GetActiveEditor()
    
    txt = time.strftime('%Y-%m-%d')
    fields = [(0,1)]
    editor.PasteSnippet(txt, fields)
4. 綁定快捷鍵, 快捷鍵設置里的自定義快捷鍵, insert-date
posted @ 2019-11-10 15:39 wangkang 閱讀(14) | 評論 (0)編輯 收藏
/Files/wangkang2009/gyp-master.rar

該下載文件里包含一個gyp的VC模板, gyp_template.gyp
包含一些常用的編譯器參數, 同時修改了gyp的源碼使vc2015支持xp v140_xp
posted @ 2018-12-12 15:48 wangkang 閱讀(34) | 評論 (0)編輯 收藏
git bash提交github
跟著網上的教程進行了一次github的提交, 發現中間還是碰到了一些問題, 因此再記錄一次
環境只針對windows
1. 安裝好git后不能直接使用git, 而是要使用git bash
2. 注冊好github并創建一個新的倉庫
3. 運行gitbash.bat, 產生一個類似cmd的窗口, 以下命令行全部在gitbash中執行
4. 產生ssh使用的公鑰
ssh-keygen.bat -t rsa -C "youemail"
默認產生在C:\Users\Administrator\.ssh
打開id_rsa.pub拷貝里面的內容到github里的ssh key里
ssh -T git@github.com
驗證密鑰是否生效
配置git
git config --global user.name "youname"
git config --global user.email "youemail"
5. 用資源管理器創建一個空目錄作為代碼目錄, 例如c:\test
6. 下載代碼
cd c:/test
git init
git remote add origin git@github.com:youname/yourep.git
下載倉庫
git pull origin master
7. 在windows環境中把需要提交的代碼拷貝至test
8. 添加代碼,提交代碼
git add .
添加代碼或提交代碼時會跑出一個vim界面, 用:q退出
git commit -m "first commit"
這里必須要寫注釋, 不寫提示 aborting commit due to empty commit message
git push -u origin master
這里開始出現上傳的百分比, 100%后代碼提交成功
9. github頁面刷新, 可以看見提交已經生效
posted @ 2017-02-05 16:51 wangkang 閱讀(101) | 評論 (0)編輯 收藏
簡單說下步驟吧
1. 需要收集分紅送股的數據, 姑且稱之為分紅表,給一個例子
600617的分紅表, 股數,現金,除權日
   0     1           2
0  7     0  2015-04-20
0  0  0.26  2001-07-19
0  0   0.2  2000-08-24
0  0   0.4  1998-07-29
0  0  0.38  1996-06-25
0  2   1.5  1995-05-31
0  0     3  1994-06-06
2. 當然需要有日k線數據, 轉換為pd.DataFrame格式, 最高價最低價等對應的col名稱為ohlcv
3. 根據除權數據, 按倒序來復權, 就是先復權日期早的
def calc_fuquan_use_fenhong(df, df_fenhong):
    """獲取復權后的歷史數據, 用分紅表來計算復權 , 前復權
    df: 日k線
    df_fenhong: 分紅表
    return: df
"""
    #日期早的在前面
    df_fenhong = df_fenhong.sort_index(by=2)
    for i in range(len(df_fenhong)):
    gu, money, date = df_fenhong.irow(i)
    if len(df.ix[:date]) < 2:
        continue
    date = agl.df_get_pre_date(df, date)
    if money > 0:
        money = money * 0.1
        df['o'].ix[:date] -= money
        df['h'].ix[:date] -= money
        df['c'].ix[:date] -= money
        df['l'].ix[:date] -= money
    if gu > 0:
        # x = cur / (1+y/10)
        gu = 1+gu/10
        df['o'].ix[:date] /= gu
        df['h'].ix[:date] /= gu
        df['c'].ix[:date] /= gu
        df['l'].ix[:date] /= gu
    return df        
4. 結果
                    o          h          l          c         v
2010-06-01   6.158824   6.458824   6.158824   6.158824   1922980
2010-06-02   5.941176   6.294118   5.941176   6.235294    837740
經過測試, 前復權結果與同花順,通達信的計算相同
posted @ 2015-04-25 09:28 wangkang 閱讀(1695) | 評論 (0)編輯 收藏
關鍵字: png bmp txt pil 

下面的代碼可以把圖像轉換成文本, 是從網上的一段程序改的, 本來是想在控制臺使用的, 但輸出的文本過大, 縮放過小又會造成像素丟失的情況。
先貼出來. 這個版本適用于文件輸出, 可以保持更好的顯示效果
from PIL import Image
import os
def PngToTxt(f):
    Palette={'000':'#'#榛?
    ,'010':'@'#鏆楃豢
    ,'020':'/'#緇?
    ,'001':'$'#娣辮摑
    ,'011':'<'#闈?
    ,'021':'"'#浜?豢鑹?
    ,'002':'='#钃?
    ,'012':'\\'#闂?摑鑹?
    ,'022':'_'#嫻呯豢
    ,'100':'>'#鏆楃孩
    ,'110':'*'#鏆楅粍
    ,'120':'~'#榛勭豢鑹?
    ,'101':'%'#鏆楃傳
    ,'111':'+'#鐏?
    ,'121':'^'#嫻呯豢鑹?
    ,'102':'|'#绱?綏鍏?
    ,'112':'!'
    ,'122':'-'
    ,'200':'&'#綰?
    ,'210':';'#姍欒壊
    ,'220':"'"#榛?
    ,'201':')'#娣辯矇鑹?
    ,'211':'.'#綺夌孩鑹?
    ,'221':'`'
    ,'202':']'#绱?
    ,'212':','
    ,'222':' '#鐧?
    }    
    img = Image.open(f)
    if 0: img = Image.Image
    #縮小, 結果比較模糊, 還是用原比例較好
    #img = img.resize((80,60))
    w,h = img.size[:2]
    print w,h
    result = []
    for i in range(h):
        result1 = []
        for j in range(w):
            pixel = img.getpixel((j,i))[:3]
            result1.append(Palette[''.join([str(int(x//85.3)) for x in pixel])])
        result.append(result1)
    r="\n".join(["".join(x) for x in result])
    print r
    object_file=os.path.splitext(f)[0]+".txt"
    open(object_file,'w').write(r)    



經過一些改進, 下面的代碼可以適用于控制臺輸出

def PngToTxt(f):
    Palette={'000':'#'#榛?
    ,'010':'@'#鏆楃豢
    ,'020':'/'#緇?
    ,'001':'$'#娣辮摑
    ,'011':'<'#闈?
    ,'021':'"'#浜?豢鑹?
    ,'002':'='#钃?
    ,'012':'\\'#闂?摑鑹?
    ,'022':'_'#嫻呯豢
    ,'100':'>'#鏆楃孩
    ,'110':'*'#鏆楅粍
    ,'120':'~'#榛勭豢鑹?
    ,'101':'%'#鏆楃傳
    ,'111':'+'#鐏?
    ,'121':'^'#嫻呯豢鑹?
    ,'102':'|'#绱?綏鍏?
    ,'112':'!'
    ,'122':'-'
    ,'200':'&'#綰?
    ,'210':';'#姍欒壊
    ,'220':"'"#榛?
    ,'201':')'#娣辯矇鑹?
    ,'211':'.'#綺夌孩鑹?
    ,'221':'`'
    ,'202':']'#绱?
    ,'212':','
    ,'222':' '#鐧?
    }    
    img = Image.open(f)
    if 0: img = Image.Image
    #縮小, 結果比較模糊, 還是用原比例較好
    img = img.resize((60,20))
    w,h = img.size[:2]
    #print w,h
    result = []
    for i in range(h):
        result1 = []
        is_empty_line = True
        for j in range(w):
            pixel = img.getpixel((j,i))[:3]
            #result1.append(Palette[''.join([str(int(x//85.3)) for x in pixel])])
            if pixel==(255,255,255):
                s = '222'
            else:
                s = '110'
                is_empty_line = False
            result1.append(Palette[s])
        #去除空行
        if is_empty_line == False:
            result.append(result1)
    r="\n".join(["".join(x) for x in result])
    print r
    object_file=os.path.splitext(f)[0]+".txt"
    open(object_file,'w').write(r)

圖例:


posted @ 2014-03-20 09:36 wangkang 閱讀(1339) | 評論 (2)編輯 收藏
關鍵詞: 用python仿造matlab發布報告, html

經常用matlab的人有時候會用到publish發布報告的功能, 也就是生成一個html的瀏覽頁, 而python中貌似就沒有這種功能。現在本人做了一個簡單的類似功能,大概的樣式如下:





雖然比較簡陋,但至少可以在瀏覽器中看了。

大概的原理是用發布類替換pl, 因此如果您的pl使用了較多的函數, 那么需要相應的在Publish中加入類似的代碼。

 1     def figure(self, id=1):
 2         pl.figure(id)
 3     
 4     def plot(self, *args, **kwargs):
 5         pl.plot(*args, **kwargs)
 6     
 7     def subplot(self, *args, **kwargs):
 8         pl.subplot(*args, **kwargs)
 9     
10     def title(self, s, *args, **kwargs):
11         pl.title(s, *args, **kwargs)
對于要發布的代碼, 只需要在前面加上Publish類就可以了
1 from pypublish.publish import *
1     #不發布把該行注銷
2     pl = Publish()
3     print 'test python html publish.'
4     for i in range(2):
5         pl.figure(i)
6         pl.plot(np.arange(0,10*(i+1)))
7     pl.show()
當然以上假設您用的都是import pylab as pl
如果不是這種情況該方式就不適用了。
/Files/wangkang2009/pypublish.rar
posted @ 2014-03-07 19:32 wangkang 閱讀(261) | 評論 (0)編輯 收藏

pythonDIAOYONGc dll api


江苏快三开奖结果關鍵字: python dll調用 np類型轉換 double


關于python調用dll的文章有很多, 本篇主要描述對double數組傳參的實現, 本人還沒有發現類似的文章, 因此書寫本文檔加以說明。

本文實現主要參考《用python進行科學計算》一書, 因此對環境有要求, 環境需要安裝python(x,y), 該軟件可以很好的支持numpy庫,
江苏快三开奖结果否則用sf上下載的numpy安裝包直接在python里安裝貌似裝了不生效, 也就是import numpy失敗

XIAMIANJIANDANJIANGXIASHIXIANGUOCHENG

1. 制作dll, 假設dll中有如下的導出函數, dll名為smooth
// @param: n   數組長度
// @param: x   [input/output] 一維數組
// @param: y   [input/output]
// @param: weights   [input]  可為0
// @param: s   [input/output] 單值,返回新的x,y長度
int smooth(int n, double* x, double* y, double* weights, double* s);


2. 加載dll
import numpy as np
江苏快三开奖结果from ctypes import *

dll = np.ctypeslib.load_library('smooth', '.')


3. 執行函數
c里的double是64位的, 因此簡單的傳參會是32位的, 比如用下面的實現就會有這樣的問題
smooth = dll.smooth
#[Warning:下面是一個錯誤的演示]
#描述參數類型
smooth.argtypes = [c_int, POINTER(c_double), POINTER(c_double), POINTER(c_double), POINTER(c_double)]
#返回值類型
smooth.restype = c_int
x = [3.2, 3.9, 5.4, 5.9]
x = np.array(x)
y = np.array(x)
w = np.array(0)
s = np.array(10)
smooth(len(x), x.ctypes.data_as(POINTER(c_double)), y.ctypes.data_as(POINTER(c_double)), w.ctypes.data_as(POINTER(c_double)), s.ctypes.data_as(POINTER(c_double)) )

調用后python沒有報錯, 但不能得到正確的結果, 進入vc附加python進程, 在函數頭加上斷點, 查看參數內存, 可看出其是以int*方式傳入的
要讓python以真正的64位double*傳入可使用下面的實現
#正確的調用
smooth.argtypes = [
    c_int,
    np.ctypeslib.ndpointer(dtype=np.float64, ndim=1, flags="C_CONTIGUOUS"), #一維數組,且內存連續的
    np.ctypeslib.ndpointer(dtype=np.float64, ndim=1, flags="C_CONTIGUOUS"),
    np.ctypeslib.ndpointer(dtype=np.float64),
    np.ctypeslib.ndpointer(dtype=np.float64)
]
smooth.restype = c_int
m = [3.2, 3.9, 5.4, 5.9]
x = np.arange(4, dtype=np.float64)
y = np.arange(4, dtype=np.float64)
w = np.cast["float64"](0)
s = np.cast["float64"](10)
for i in range(0, len(m)):
 x[i] = m[i]
 y[i] = m[i]
smooth(len(x), x, y, w, s)

TIWAIHUA: pythonDECANSHUJIBENKEYIKANWEIZHIZHEN, LEISIYINYONGDENGCAOZUODOUKEYIQINGSONGWANCHENG

江苏快三开奖结果BENRENDUInumpyBUSHIHENSHU, KENENGDUIYUnpDECANSHUCHUSHIHUAYOUGENGHAODEFANGSHI, CICHUJIUSUANPAOZHUANYINYUBA,

 

 


 

posted @ 2013-08-27 11:34 wangkang 閱讀(2445) | 評論 (0)編輯 收藏
編輯框的背景色一般是白色的, 時間長了看起來比較費勁, 用vc自帶的也可以改背景色, 這里提供一個更快捷的方案.
注意,for vc2010

1. 用vc2010建一個擴展項目


2. 創建該項目,按照下面圖示走完向導。






3. 完成后項目建立, 依次修改
STDMETHODIMP CConnect::OnStartupComplete (SAFEARRAY ** /*自定義*/ )   // 項目加載后觸發

STDMETHODIMP CConnect::Exec(BSTR bstrCmdName, vsCommandExecOption ExecuteOption, VARIANT * /*pvarVariantIn*/, VARIANT * /*pvarVariantOut*/, VARIANT_BOOL *pvbHandled) // 選擇命令后觸發
 1 // 項目啟動后觸發
 2 STDMETHODIMP CConnect::OnStartupComplete (SAFEARRAY ** /*自定義*/ )
 3 {
 4     //RunBackGroundChange();
 5     CAddMyComment ac(m_pDTE);
 6     COLORREF clrBlack = 0x00c2c2c2;    // 銀色
 7     ac.SetColor(clrBlack);
 8     ac.SetColor(clrBlack);
 9 
10     return S_OK;
11 }
STDMETHODIMP CConnect::Exec(BSTR bstrCmdName, vsCommandExecOption ExecuteOption, VARIANT * /*pvarVariantIn*/, VARIANT * /*pvarVariantOut*/, VARIANT_BOOL *pvbHandled)
{
    *pvbHandled = VARIANT_FALSE;
    if(ExecuteOption == vsCommandExecOptionDoDefault)
    {
        if(!_wcsicmp(bstrCmdName, L"backgroundchange.Connect.backgroundchange"))
        {
            RunBackGroundChange();

            *pvbHandled = VARIANT_TRUE;
            return S_OK;
        }
    }
    return S_OK;
}

 1 
 2 // 改變編輯器背景顏色
 3 void CAddMyComment::ChangeFont(void)
 4 {
 5     CComPtr<EnvDTE::Properties> spProperties;
 6 
 7     // Modify font size
 8     m_spDTE->get_Properties(CComBSTR("FontsAndColors"), CComBSTR("TextEditor"), &spProperties);
 9     CComPtr<EnvDTE::Property> spProperty;
10     spProperties->Item(CComVariant(L"FontSize"), &spProperty);    // FontSize
11     ATLASSERT(spProperty);
12     spProperty->put_Value(CComVariant(11));
13 
14     CComPtr<EnvDTE::Property> spProperty1;
15     spProperties->Item(CComVariant(CComBSTR(L"FontsAndColorsItems")), &spProperty1);    // FontsAndColorsItems
16     ATLASSERT(spProperty1);
17     CComPtr<IDispatch> spDispatch;
18     spProperty1->get_Object(&spDispatch);
19     CComPtr<EnvDTE::FontsAndColorsItems> spFontsAndColorsItems;
20     spFontsAndColorsItems = spDispatch;
21     ATLASSERT(spFontsAndColorsItems);
22 #if 0
23     // 顯示顏色命名
24     long count ;
25     spFontsAndColorsItems->get_Count(&count);
26     for(long i=0; i<count; ++i) {
27         CComPtr<EnvDTE::ColorableItems> spColor;
28         spFontsAndColorsItems->Item(CComVariant(i), &spColor);
29         if(spColor) {
30             CComBSTR bstrName;
31             spColor->get_Name(&bstrName);
32             ATLTRACE(L"[%d]%s\n",i, bstrName);
33         }
34     }
35 #endif
36 
37 #if 1
38     // Modify Plain Text Background
39     CComPtr<EnvDTE::ColorableItems> spColorableItems_PlainText;
40     spFontsAndColorsItems->Item(CComVariant(1), &spColorableItems_PlainText);
41     CComPtr<EnvDTE::ColorableItems> spColorableItems_LineNumber;
42     spFontsAndColorsItems->Item(CComVariant(5), &spColorableItems_LineNumber);
43     //CComPtr<EnvDTE::ColorableItems> spColorableItems_Identifier;
44     //spFontsAndColorsItems->Item(CComVariant(L"Identifier"), &spColorableItems_Identifier);
45 
46     COLORREF clrWhite = #ffffff;
47     COLORREF clrBlack = #000000;
48     clrBlack = 0x00c2c2c2;    // 銀色
49     COLORREF clrWhite2 = 12632256;
50     clrWhite2 =  clrWhite;
51     OLE_COLOR color;
52     spColorableItems_PlainText->get_Background(&color);
53     if(color == clrBlack) {
54         spColorableItems_PlainText->put_Background(clrWhite);
55         spColorableItems_LineNumber->put_Background(clrWhite);
56         //spColorableItems_PlainText->put_Foreground(clrBlack);
57     }else {
58         spColorableItems_PlainText->put_Background(clrBlack);
59         spColorableItems_LineNumber->put_Background(clrBlack);
60         //spColorableItems_PlainText->put_Foreground(clrWhite2);
61     }
62 #endif
63 }
64 

4. 執行命令, 進入項目后, 在菜單工具下會創建一個菜單項


點選后, 會在白色背景和銀色間切換, 初始會進入銀色背景。


5. 可直接使用msi安裝包安裝該插件, 同時該附件包含源代碼
/Files/wangkang2009/backgroundchange.rar











posted @ 2013-04-17 14:55 wangkang 閱讀(1787) | 評論 (0)編輯 收藏
   今天又犯了一個低級錯誤, 情況是這樣的, 編譯好的代碼下斷點后總是與源代碼不匹配, 弄了半天才想起來主項目沒有編譯。

   對于這樣的問題應該注意需要編譯主項目, 最好的辦法是設上依賴項。
posted @ 2012-12-07 13:34 wangkang| 編輯 收藏

windows XIAVC6ZHIZUOphpKUOZHANdll

網上有很多該問題的文章, 之所以再寫一遍, 是因為我根據他們的文章沒有跑通, 綜合了多人的文章加上一些自己的理解
最終解決了這個問題。

1. XIAZAIDAIsourceDEphp(v5.2)BAOJITONGBANBENBIANYIHAODEBAO(phpZUIHAOSHIYONGTONGBANBENDE), ZHESHIvc6BIANYIDE, ZAIphp.netKEXIAZAI

江苏快三开奖结果2. JIEYAsourceBAOHOUZHAODAOext\skeleton, FUZHICHUYIFENXINDE, MULUGAIMINGWEIhello

3. DAKAIMULULIMIANDE.dsp, .c, .h, BALIMIANextnameQUANBUTIHUANWEIhello

4. BAphp5ts.libKAOBEIZHIKAIFAMULU, XIUGAIlibLIDEYILAIphp5ts_debug.lib ZHIphp5ts.lib, XIUGAIdllSHUCHUDAOphpDEextMULU

5. f7BIANYI, BUCHUYIWAIYINGBIANYITONGGUO。 ZHUYI, YIDINGYAOSHIYONGreleaseBIANYI, YONGdebugJIAZAISHIBUREN, WOJIUYINWEIZHEGEWENTIKAZHULEHENJIU。

6. php.ini里加入extension=php_hello.dll, 沒設置擴展目錄的話加上extension_dir = "d:/Progra~1/Apache/PHP/ext/",
重啟apache

7. BUCHUYIWAI, ZAIphpinfo()ZHONGKEYIKANJIANhelloMOKUAILE。

8. 寫一個php, 內容如下
<?
echo confirm_hello_compiled("kdskf");
?>
江苏快三开奖结果頁面執行后可看見string輸出。


參考

posted @ 2012-08-15 11:00 wangkang 閱讀(754) | 評論 (0)編輯 收藏