本週主要對高階功能的實現進行了調研,還未實現的高階功能是模糊查詢和劃詞翻譯,在之前提案的基礎上進行了進一步調研,**這兩種功能實現的原理以及可實現性。
一、實現原理
1、對模糊查詢來說需要乙個字典庫,然後使用萬用字元進行查詢,將包含關鍵字的單詞(包括頭部,中間和尾部)提取出來,返回結果集,
2、劃詞翻譯在windows和linux下都有現有的軟體,比如windows下的有道、靈格斯,linux下的openyoudao,windows下實現的原理是使用全域性鉤子,監控所有程序,對鍵盤和滑鼠訊息進行監控。
linux下openyoudao較好的實現了這個功能,原理是監控剪下板,劃詞的同時記錄剪下板,然後獲得滑鼠劃詞結束後的動作,對取得的文字進行處理並顯示出來
二、可行性**
1、模糊查詢遇到乙個問題就是像各種搜尋引擎的模糊查詢都是在輸入框生成乙個下拉列表,用於顯示可選的結果,但是在dash裡面的話這一點實現實現起來就有困難,因為dash本身沒有這個機制,所以模糊查詢的結果就不能呈現出來。
2、劃詞翻譯的機制是利用xlib和管道,用xclip命令獲得取詞後獲得的文字內容。用xlib庫獲取滑鼠取詞後完成後的瞬間動作,然後通過管道將剪貼簿中的內容交給翻譯的程序
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import sys
from xlib import x,xk,display
from xlib.ext import record
from xlib.protocol import rq
import urllib2
import json
import pynotify
record_dpy=display.display()
# create a recording context; we only want key and mouse events
ctx = record_dpy.record_create_context(
0,[record.allclients],
)pre_word="" #上次翻譯的詞語
def viewtranslate():
global pre_word
result=urllib2.urlopen(url).read()
json_result=json.loads(result)
pynotify.init("autotranslate")
try:
error_msg=json_result["error_msg"]
query=json_result["query"]
bubble=pynotify.notification('"'+query+'"的翻譯出錯',error_msg)
bubble.show()
except:
trans_result=json_result["trans_result"]
src=trans_result[0]["src"]
dst=trans_result[0]["dst"]
bubble=pynotify.notification('"'+src+'"的翻譯結果',dst)
bubble.show()
def record_callback(reply):
global pre_word
if reply.category != record.fromserver:
return
return
if not len(reply.data) or ord(reply.data[0]) < 2:# not an event
return
data = reply.data
while len(data):
event, data = rq.eventfield(none).parse_binary_value(data, record_dpy.display, none, none)
if event.type == x.buttonrelease:
pipe = os.popen("xclip -o")
text = pipe.readline()
pipe.readlines() #清空管道剩餘部分
pipe.close()
text=text.strip('\r\n\x00').lower().strip()
if pre_word != text and text!="":
pre_word=text
viewtranslate()
def gettext():
os.system("xclip -f /dev/null") #清空剪下板
record_dpy.record_enable_context(ctx,record_callback)
record_dpy.record_free_context(ctx)
def main():
gettext()
if __name__=='__main__':
main()
上面這段**是乙個demo,還有乙個困難即通訊問題,因為我們要在dash介面中顯示,所以這是個問題,下一步就要對這個問題進行研究和解決。 利用Google高階搜尋功能做SEO調研
利用google高階搜尋功能做seo調研style margin top 0px float left border 0 marginwidth 0 framespacing 0 marginheight 0 src http wz.csdn.net vote.aspx?t u5229 u7528g...
SAS Model Studio功能調研
sas viya中包含的model studio是乙個整合的視覺化環境,它提供了一套分析資料探勘工具,以促進端到端的資料探勘分析。model studio中支援的資料探勘工具旨在利用sas viya程式設計和雲處理環境來交付和分發冠軍模型 打分 和結果。model studio提供的功能檢視如下所示...
Git 高階功能
tip 在我們的 windows 下 git 配置與使用指南 中,有介紹大家使用 git go 命令。其實,這並非 git 的原生命令,它是我們自定義的乙個 alias 別名 由 git add git commit git push 和 git pull 四個命令組合而成。待熟悉之後,你可以直接使...