锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
闃呰鍏ㄦ枃
]]>
]]>
]]>
1. 浜掕仈緗戞湇鍔″櫒錛堝繀欏誨紑鍚?0錛?43绔彛錛?br />2. 鐢寵鍩熷悕錛屼笖緇戝畾鍒版湇鍔″櫒
3. 寰俊鍏紬鍙風敵璇鳳紝騫墮氳繃寰俊璁よ瘉錛?00浜烘皯甯侊級
鍏堜笂緋葷粺閮ㄧ講鍥?錛?nbsp;
鍑犱釜閮ㄤ歡闇瑕佷粙緇嶄竴涓嬶細
1. xampp 錛? 寮鍙憄hp鐨勫浠訛紝鍖呭惈浜哸pache錛宲hp錛宮ysql錛岀敤璧鋒潵寰堢畝鍗曪紝涓嶈繃鎴戞槸閮ㄧ講鍦╨inux鍜宮ac 涓婏紝瑕佺暀鎰忕殑鏄枃浠剁洰褰曡闂潈闄愮殑闂錛宮ac涓?鎵鏈夌殑鏈嶅姟榪涚▼璺戝湪root鐢ㄦ埛涓嬶紱
2. phpstrom錛?寮鍙憄hp鐨刬de錛屽嚭鑷猨etbrains錛堟垜涓漢鐞嗚В鏄洰鍓嶅紑鍙戝伐鍏鋒渶鐗涢肩殑鍏徃錛夈?綆$悊鏁版嵁搴撴帹鑽?DataGrip 杞歡銆?nbsp;
3. xdebug 錛?榪欎釜涓滆タ鏄痯hp涓巔hpstrom鐨勮皟璇曟帴鍙?錛宎pche鎺ユ敹鍒癶ttp璇鋒眰錛岃漿緇檖hp瑙i噴鍣紝php瑙i噴鍣ㄥ啀phpStorm榪涜璋冭瘯浜掑姩錛堝緩绔媥debug鐨?000绔彛鐨則cp榪炴帴錛夛紝寮鍙戣呭彲浠ュ湪phpStorm閲岄潰闅忔剰涓嬫柇鐐廣?娉ㄦ剰錛?鍦╬hp.ini涓渶閰嶇疆 ide-key:scott , 鎴戞槸鍦╪ginx鐨勮漿鍙戝ご閲岄潰娣誨姞浜?XDEBUG_SESSION=scott,浠ゆ墍鏈夌粡榪?nginx 鏈嶅姟鍣ㄧ殑http璇鋒眰閮借杞埌phpStorm涓紝鍚﹀垯鏃犳硶瀹炵幇浠g爜鏂偣銆?nbsp;
4. wxDebuger錛?榪欐槸寰俊鎻愪緵鐨勬湰鍦板井淇¢〉闈㈣皟璇曞伐鍏鳳紝寮鍙戣繖鍙互鍒╃敤winre鏉ヨ皟璇曟墜鏈轟笂鐨勯〉闈紝涔熷彲浠ヨ劚紱繪墜鏈猴紝鐩存帴璋冭瘯寰俊欏甸潰錛堣璋冭瘯寰俊鐨剋xjssdk蹇呴』浣跨敤wxDebuger錛夈?nbsp;
5. nginx 錛?鍦ㄥ叕緗戞湇鍔″櫒閮ㄧ講nginx浣滀負http鏈嶅姟鍣紝鎺ユ敹鍚勭鐢ㄦ埛璇鋒眰錛屽茍灝嗗叾杞彂鍒皒ampp銆?nbsp;
6. vpn : 榪欎釜鏄叧閿紝涓轟簡瀹炵幇鏈湴寮鍙戣皟璇曠殑鐩殑錛屾垜鍦ㄥ叕緗戞湇鍔″櫒涓婇儴緗蹭簡openvpn錛屽茍鍦╩ac寮鍙戞満涓婇儴緗蹭簡xampp錛宲hpstorm絳夛紝騫跺畨瑁卾pn瀹㈡埛绔?Tunnelblick錛屽叾鑷姩鎷ㄥ彿鍒板叕緗戞湇鍔″櫒錛岃幏寰楀湴鍧10.8.0.6錛宯ginx灝唄ttp璇鋒眰杞彂鍒頒簡鎴戞湰鍦扮殑寮鍙戞満鍣ㄤ笂錛岃繖鏍鋒垜鍙互寰堟柟渚跨殑榪涜榪滅▼鍜屾湰鍦拌皟璇曚簡銆?nbsp;
涓昏鐨勫姛鑳芥弿榪幫細
1. 鎵嬫満銆佹祻瑙堝櫒銆佽皟璇曞櫒 鍙戣搗鐨刪ttp璇鋒眰鍒拌揪鍏綉鏈嶅姟鍣紝nginx閫氳繃vpn杞彂鍒版湰鍦板紑鍙戞満錛屽紑鍙戣呭湪phpstorm涓柇鐐硅皟璇曚唬鐮侊紝騫跺皢澶勭悊緇撴灉鎸夊師璺繑鍥炪?nbsp;
2. 寰俊鏈嶅姟鍣ㄧ殑涓昏浣滅敤鏄幏鍙?綺変笣淇℃伅銆乷auth璁よ瘉鍥炶皟銆佹湇鍔″櫒閴存潈絳夊姛鑳?錛?HTTP(302)鏄?oauth鐨勭伒欖?銆?nbsp;
3. 榪欑閰嶇疆鏋舵瀯寰堢伒媧葷殑鍙互灝嗗紑鍙戞ā寮忓垏鎹㈠埌閮ㄧ講妯″紡錛屽彧闇瑕佸皢xampp閮ㄧ講鍒板叕緗戞湇鍔″櫒錛屽茍鍦?nginx鐨勫弽鍚戜唬鐞嗘寚鍒版湰鍦皒ampp鏈嶅姟鍗沖彲銆?nbsp;
闄勫綍 nginx.conf
listen 80;
server_name wx.xxxx.com www.xxxx.com;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://10.8.0.6:8081;
proxy_set_header Cookie "$http_cookie;XDEBUG_SESSION=scott";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-real-ip $remote_addr;
}
}
]]>
榪欐閫夋嫨鐨勬渶鏂扮増鏈?python 2.7.11 闃呰鍏ㄦ枃
]]>
錛堟敞鍐宻f鐨刟pp錛岀櫥璁?callback-url,鎵цsql鏌ヨ錛?br />
__author__ = 'scott'
import imp
imp.load_source('init','../init_script.py')
import urllib2,urllib,json,sys,os
import traceback,threading,time,struct,os,os.path,shutil,distutils.dir_util,array,base64,zlib,struct,binascii
import datetime
from libs.python.lemon import webapi
callback = 'http://localhost:8002/oauth'
client_id = '3MVG9ZL0ppGP5UrC_wQ8U02mOhowPKwjeaaLsWZ3BcYYVqiSsy1rL_D2h6qG.rGPnb_j6IcgLHPdhmvomzDFj'
client_secret = '9046731979xxxxxxx'
def accessToken(request,code,state):
url = 'https://login.salesforce.com/services/oauth2/token'
data = {
'grant_type':'authorization_code',
'code':code,
'client_id':client_id,
'client_secret':client_secret,
'redirect_uri':callback
}
result = ''
try:
result = urllib2.urlopen(url,urllib.urlencode(data) )
except:
traceback.print_exc()
result = result.read()
return json.loads( result )
def oauth(request):
cr = webapi.SuccCallReturn()
code = webapi.GET(request,'code','')
state = webapi.GET(request,'state','')
cr.result=[code,state]
token = accessToken(request,code,state)
cr.result.append(token)
print token
try:
sqlExecute(token['access_token'],token['instance_url'])
except:
traceback.print_exc()
return cr.httpResponse()
import cookielib
# -H "Authorization: OAuth token" -H "X-PrettyPrint:1" "
def sqlExecute(token,url_host):
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)
sf_cmd_query="%s/services/data/v20.0/query/?%s"%(url_host, urllib.urlencode({'q':'select count() from account'}))
headers = {
'Authorization':'OAuth %s'%token,
'X-PrettyPrint':1
}
httpReq = urllib2.Request( sf_cmd_query,headers=headers )
r = opener.open(httpReq).read()
print r
pass
url1 = """https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=first"""%(client_id,callback)
def launchBrowserForOAuth():
import webbrowser
webbrowser.open(url1)
if __name__ == '__main__':
launchBrowserForOAuth()
]]>
2 'age':2,
3 'parts':{
4 'eye':'green','leg':85
5 },
6 ''friend":['moee','wee'],
7 "hometown":'affica'
8 }
frog瀵硅薄瀹氫箟浜嗗皬鍔ㄧ墿鐨勬煇浜涘睘鎬э紝璁塊棶frog瀵硅薄灞炴ф椂錛岄氳繃 dict,list鐨勫彇鍊兼柟娉曡繘琛岃闂紝渚嬪:
print frog['name']
print frog['friend'][0]
鏈夋椂瑙夊緱榪欑琛ㄨ揪鏂瑰紡澶師濮嬩簡錛岄渶瑕佹敼榪涳紝鏈濂芥槸浠?'.'鏂瑰紡璁塊棶瀵硅薄灞炴э紝渚嬪:
print frog.name
浠g爜鏉ュ紑濮嬪拰緇撴潫鍚э紝 class _x
2 """
3 浠庣畝鍗曟暟鎹被鍨嬭漿鎹㈡垚python瀵硅薄
4
5 p = _x({'name':'boob','body':{'color':'black'},'toys':[1,2,3,],'age':100})
6 print p['toys'][1]
7 print len(p.toys)
8 print p.body.colors
9 """
10 def __init__(self,primitive):
11 self.data = primitive
12
13 def __getattr__(self, item):
14 value = self.data.get(item,None)
15 if type(value) == dict:
16 value = _x(value)
17 return value
18
19 def __len__(self):
20 return len(self.data)
21
22 def __str__(self):
23 return str(self.data)
24
25 def __getitem__(self, item):
26 value = None
27 if type(self.data) in (list,tuple):
28 value = self.data[item]
29 if type(value) in (dict,list,tuple):
30 value = _x(value)
31 elif type(self.data) == dict:
32 value = self.__getattr__(item)
33 return value
]]>
涔嬪墠閮ㄧ講django涓鐩撮噰鐢?apache + mod_wsgi錛岀敤寰楀掍篃娌″暐闂錛岀湅鍒拌秺鏉ヨ秺澶氱殑浜洪噰鐢╪ginx閮ㄧ講錛屾墍浠ヤ篃灝濊瘯浜嗕竴涓嬶紝緇撴灉寰堣浜烘鍠溿?br />
nginx澶熷皬澶熺畝媧侊紝緙栬瘧銆侀厤緗浉褰撶畝鍗曪紝浣嗚鐭ラ亾濂逛粎浠呮槸涓潤鎬亀ebserver錛屽姩鎬佸姛鑳介渶瑕佹惌閰嶇浉搴旂殑cgi鏉ュ疄鐜幫紱
uwsgi鏄釜鍟ヤ笢瑗匡紝鐪嬪叾瀹樻柟鏂囨。榪樼湡鍐欑殑鐩稿綋璇︾粏錛屽姛鑳藉緢涓板瘜錛屼絾鎴戠殑闇姹傚彲鑳藉彧浼氫嬌鐢ㄥ叾30%鐨勫姛鑳斤紱
uwsgi鍙互璁や負鏄痯ython浠g爜榪愯鐨刲oader錛屾垨鑰呮槸瀹瑰櫒錛坈ontainer錛夛紝榪欐湁鐐瑰儚java鐨刢ontainer錛坮esin錛宼omcat錛夈傜湅浜嗗叾閰嶇疆鏂囨。錛屽緢鏄儕鍠滐紝鍏朵笉浠呭彲浠ラ厤緗負澶氳繘紼?澶氱嚎紼嬫ā寮忥紝涔熷彲浠ラ厤緗負鍗曡繘紼?澶氱嚎紼嬫ā寮忥紝騫惰兘淇濇寔楂樺茍鍙戦珮閿鐜囷紝闈炲父鎰熷叴瓚c?br />涓鐩翠互鏉ヨ嚜宸辨誨湪瀵繪壘涓縐?楂樻晥銆佺伒媧葷殑django鐨勫簲鐢ㄥ鍣ㄣ?br />apache榛樿閮芥槸澶氳繘紼嬫ā寮忥紝http鍙堟槸鏃犵姸鎬佺殑錛屼笉鍚岀殑璇鋒眰琚垎媧懼埌涓嶅悓鐨勮繘紼嬪鐞嗭紝request澶勭悊閮芥槸闅旂鐨勩傚榪涚▼甯︽潵鐨勯棶棰樻槸楂樻槀鐨勭郴緇熷紑閿錛坅pache涔熸敮鎸佸綰跨▼澶勭悊錛夈?br />榪欑闅旂鍙堝甫鏉ヤ簡璇稿涓嶄究錛宺equest涔嬮棿涓嶈兘鍏變韓鐘舵併佹暟鎹拰鍗忎綔錛屼笉鑳藉緢濂界殑瀹屾垚涓庡閮ㄧ郴緇熺殑鍗忓悓宸ヤ綔錛堜緥濡俽equest鍏變韓鍚屼竴涓湇鍔″櫒鐨剆ocket榪炴帴鎴栬呰闂帶鍒舵煇涓猺s232绔彛錛?br />鎵浠ュ緢鎯蟲湁縐嶇被浼糺ava鐨勫簲鐢ㄥ鍣ㄨ繖鏍風殑涓滀笢銆?nbsp;
鎺ヨЕ浜唃event錛屽叾鏍稿績鏄痠o寮傛鍒嗘淳錛屽崟綰跨▼妯℃嫙澶氬崗紼嬫潵瀵瑰簲鐢ㄥ眰澶氫換鍔$殑鏀寔錛屽嚑榪戠柉鐙俰o鏁堢巼寰楀埌浜嗘垜鐨勮鍙俻s錛氬叓榪噑mp緋葷粺灝卞簲璇ュ惎鍔ㄥ涓猤event鏈嶅姟錛屼笉鐒跺叾浠栨牳蹇冩暟閮芥氮璐逛簡銆?br />閲囩敤gevent+django鐨勬ā寮忔惌寤轟簡鑷繁寰梐pp瀹瑰櫒錛屼篃璺戜簡鍑犱釜欏圭洰錛屾諱綋鏁堟灉榪樻槸鍙互銆?br />nginx+uwsgi+django 鐨勯厤鍚堝紑濮嬪簲鐢ㄥ埌鏂伴」鐩腑
]]>
鏈嶅姟鍣ㄩ氳繃欏甸潰璇鋒眰鐨剆ession-id鏉ュ尯鍒嗕箣鍚庢彁浜ょ殑楠岃瘉鐮併?絎竴嬈¤姹傛煡璇㈤〉闈㈡椂錛屾湇鍔″櫒灝嗚闂畇ession(cookie)浼犲埌瀹㈡埛绔?涔嬪悗鐨勬煡璇㈠拰楠岃瘉鐮佽幏鍙栨椂瀹㈡埛绔惡甯︿箣鍓嶇殑cookie浼犻佸埌鏈嶅姟鍣紝鏈嶅姟鍣ㄧ淇濆瓨鐫褰撳墠 session-id涓庨獙璇佺爜 鐨勫搴斿叧緋匯?nbsp;
鏌ヨ榪斿洖璁板綍鍙氳繃 xpath鎴栬?beautifulsoup榪涜瑙f瀽
紼嬪簭浣跨敤python瀹屾垚錛屼篃鏄釜綆鍗曠殑灝忕埇铏紝scrapy 涔嬬被鐨勬病蹇呰浣跨敤浜嗭紝gevent瀹屾垚寮傛閫氫俊銆?br />
浜ら氱綉鐨勯獙璇佺爜鐢熸垚榪樻槸姣旇緝綆鍗曪紝鍋氳嚜鍔ㄨ瘑鍒彲鎵懼嚑涓畝鍗曠殑鍥懼艦璇嗗埆紼嬪簭鍗沖彲銆?br />濡傝嫢涓嶈錛屽垯浜哄伐杈撳叆鍠?br />
]]>
]]>