對于命令行用戶來說,頻繁的cd和tab應該是日常
工作中最多使用的命令了。特別對于重度用戶來說,如果可以省去這么多cd和tab,將更多的時間做有意義的事該多好。其實
Linux的
學習過程本身就行這樣。你會不斷的不滿足于現狀,就像我一樣,一年之前還在研究如何用cd可以更加快速,cd還有什么好點的用戶可以更快的到達目錄。(cd -回到之前的目錄,cd或cd ~回到用戶目錄等)學習本身也是成長的過程,不滿足于現狀是我前進的動力,所以今天,突破cd和tab,讓我們接受一個新的神級插件----autojump。
首先簡單的介紹下這個插件,簡單用法就比如你的文件夾路徑是
~/work/build/ninja
你不需要cd work,cd build,cd ninja,你只需要在進入第一次之后,(注意是必須在進入之后才會有記錄),直接輸入autojump b n,就自動進入了這個目錄。當然autojump默認將j給alias了,所以你只需要輸入j b n就到了這個目錄,同時,如果你想訪問當前目錄下的子目錄,你可以直接輸入jc xxx,那么這個xxx就會讓autojump優先在當前目錄下以及當前目錄下的子目錄給你尋找,十分方便。還有一種用法就是jo,意思為用相應的文件管理器來打開你提供的路徑,配合jc就可以成為jco。當然如果你這個目錄權重高的話,可能你只需要輸入 j nin就到了這個目錄。之前介紹了權重,那就簡單介紹下,它會根據用戶的權重來進行目錄名和計數器的哈希文件存儲。路徑一般在
/home/rickyk/.local/share/autojump/autojump.txt
里面的權重一般是這樣
28.3: /etc/bash_completion.d 30.3: /home/rickyk/bash_completion/etc/profile.d 30.6: /home/rickyk/.autojump 31.0: /home/rickyk/.oh-my-zsh/custom 31.6: /usr/local/share/cmake-2.8/completions 33.2: /usr/local/share |
這個權重代表了當你輸入比如針對第一條的/etc/bash_completion.d的時候,你輸入了.d,因為這條權重是28.3,所以會進入第二條的/etc/profile.d因為他的權重是30.3
相關安裝很簡單,apt-get install autojump或者直接
git clone http://joelthelion/autojump
然后進入目錄后./install.py就可以了。注意在首次install之后需要在.bashrc加入下句
[[ -s /home/rickyk/.autojump/etc/profile.d/autojump.sh ]] && source /home/rickyk/.autojump/etc/profile.d/autojump.sh
這樣你就可以正常使用這個神級插件了,希望這個插件能夠給你帶來飛一般的爽快感覺 : )
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
在為客戶提供技術支持時,發現安裝
SQL Server 2008 (R2) 單機版出現的問題很多源于以下幾個典型情況,而客戶們有所不知,這正是SQL Server 安裝所必須的先決條件:
1. .NET Framework 3.5 SP1
3. Visual Studio 2008 SP1
4. 在控制面板中設置區域和語言
5. 小型企業安裝SQL Server 2008 (R2) 標準版需要設置域
6. 在Windows Server 2008 R2或Windows 7中安裝SQL Server 2008采用SP1整合安裝模式
1. .NET Framework 3.5 SP1
在 Windows Server 2008 R2中,你應該以添加windows功能的方法來安裝.NET Framework 3.5 SP1,而不是以一個獨立的組件來進行安裝。
在其他版本的
微軟系統中,你只需點擊安裝文件setup.exe,其將自動安裝.NET Framework 3.5 SP1 和 Windows Installer 4.5。
運行SQL Server 2008 需要有 .Net Framework 3.5 SP1 (特別是 Express 和 IA64版本) 和Windows Installer 4.5。在.Net Framework 和 Windows Installer 升級后,你需要重新啟動使其生效。如果沒有重啟系統而再次嘗試安裝
數據庫,則會跳出警告要求重啟,您將選擇使.Net Framework 和 Windows Installer生效或退出安裝。
如果你選擇了取消,安裝程序會報一個缺少安裝Windows Installer 4.5 的錯誤。安裝向導將 .Net Framework 和Windows Installer 的安裝捆綁在一起,因此這兩個組件會同時安裝。一旦必備組件安裝完成(并已經重啟系統),安裝導向會運行SQL Server安裝中心。
當然,你也可以將這些必備組件單獨安裝。但是,建議使用安裝向導進行安裝,避免多次重啟系統。因為將這兩個組件進行捆綁安裝,只需一次重啟即可。
自動運行setup.exe (或手動雙擊 setup.exe) ,會彈出如下窗口:
當您同意許可條款后,.Net 3.5 SP1安裝會繼續。閃屏會顯示正在下載組件,事實上只是從DVD中拷貝。這個過程需要花費一些時間(大約10-20分鐘,取決于硬件條件)。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
你是不是一開始就用
Java來編程的呢?還記得當年它還被稱為"Oak",OO還是熱門的話題,C++的用戶覺得Java沒有前景,applets還只是個小玩意,菊花也還是一種花的時候嗎?
我敢打賭下面至少有一半是你不清楚的。這周我們來看一下跟Java的內部實現相關的一些神奇的事情。
1. 其實根本沒有受檢查異常這回事
沒錯!JVM壓根兒就不知道有這個東西,它只存在于Java語言里。
如今大家都承認受檢查異常就是個錯誤。正如Bruce Eckel最近在布拉格的的GeeCON會議上所說的,除了Java外沒有別的語言會使用受檢查異常這種東西,即使是Java 8的新的Streams API中也不再使用這一異常了(不然當你的lambda表達式中用到IO或者JDBC的話就得痛苦死了)。
如何能證實JVM確實不知道這個異常?看下下面這段代碼:
public class Test { // No throws clause here public static void main(String[] args) { doThrow(new SQLException()); } static void doThrow(Exception e) { Test.<RuntimeException> doThrow0(e); } @SuppressWarnings("unchecked") static <E extends Exception> void doThrow0(Exception e) throws E { throw (E) e; } } |
這不僅能通過編譯,而且也的確會拋出SQLException異常,并且完全不需要用到Lombok的@SneakyThrows注解。
更進一步的分析可以看下這篇
文章,或者Stack Overflow上的這個問題。
2. 不同的返回類型也可以進行方法重載
這個應該是編譯不了的吧?
class Test {
Object x() { return "abc"; }
String x() { return "123"; }
}
是的。Java語言并不允許同一個類中出現兩個重寫等價("override-equivalent")的方法,不管它們的throws子句和返回類型是不是不同的。
不過等等。看下Java文檔中的 Class.getMethod(String, Class...)是怎么說的。里面寫道:
盡管Java語言不允許一個類中的多個相同簽名的方法返回不同的類型,但是JVM并不禁止,所以一個類中可能會存在多個相同簽名的方法。這添加了虛擬機的靈活性,可以用來實現許多語言特性。比如說,可以通過bridge方法來實現協變返回(covariant return,即虛方法可以返回子類而不一定得是基類),bridge方法和被重寫的方法擁有相同的簽名,但卻返回不同的類型。
哇,這倒有點意思。事實上,下面這段代碼就會觸發這種情況:
abstract class Parent<T> {
abstract T x();
}
class Child extends Parent<String> {
@Override
String x() { return "abc"; }
}
看一下Child類所生成的字節碼:
// Method descriptor #15 ()Ljava/lang/String; // Stack: 1, Locals: 1 java.lang.String x(); 0 ldc <String "abc"> [16] 2 areturn Line numbers: [pc: 0, line: 7] Local variable table: [pc: 0, pc: 3] local: this index: 0 type: Child // Method descriptor #18 ()Ljava/lang/Object; // Stack: 1, Locals: 1 bridge synthetic java.lang.Object x(); 0 aload_0 [this] 1 invokevirtual Child.x() : java.lang.String [19] 4 areturn Line numbers: [pc: 0, line: 1 |
在字節碼里T其實就是Object而已。這理解起來就容易多了。
synthetic bridge方法是由編譯器生成的,因為在特定的調用點Parent.x()簽名的返回類型應當是Object類型。如果使用了泛型卻沒有這個bridge方法的話,代碼的二進制形式就無法兼容了。因此,修改JVM以支持這個特性貌似更容易一些(這順便還實現了協變返回),看起來還挺不錯 的吧?
你有深入了解過Java語言的規范和內部實現嗎?這里有許多很有意思的東西。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
回想一下你所經歷的項目,有沒有出現過以下這樣的情況:客戶在檢查項目階段成果時,指出曾經要求的某個產品特性沒有包含在其中,并且抱怨說早就以口頭的方式反映給了項目組的成員,糟糕的是作為項目經理的你卻一無所知,而那位成員解釋說把這點忘記了;或者,你手下的程序員在設計評審時描述了他所負責的模塊架構,然而
軟件開發出來后,你發現這和你所理解的結構大相徑庭……
可能你遇到的情況比上面談到的還要復雜。問題到底出在哪兒呢?其實很簡單,就兩個字——溝通。以上這些問題都是由于溝通引起的,溝通途徑不對導致信息沒有到達目的地。“心有靈犀一點通”可能只是一種文學描繪出的美妙境界。在實際
生活中,文化背景、
工作背景、技術背景可以造成人們對同一事件理解方式偏差很大。
在項目中,溝通更是不可忽視。項目經理最重要的工作之一就是溝通,通常花在這方面的時間應該占到全部工作的75%~90%.良好的交流才能獲取足夠的信息、發現潛在的問題、控制好項目的各個方面。
溝通管理的體系
一般而言,在一個比較完整的溝通管理體系中,應該包含以下幾方面的內容:溝通計劃編制、信息分發、績效報告和管理收尾。溝通計劃決定項目干系人的信息溝通需求:誰需要什么信息,什么時候需要,怎樣獲得。信息發布使需要的信息及時發送給項目干系人。績效報告收集和傳播執行信息,包括狀況報告、進度報告和預測。項目或項目階段在達到目標或因故終止后,需要進行收尾,管理收尾包含項目結果文檔的形成,包括項目記錄收集、對符合最終規范的保證、對項目的效果(成功或教訓)進行的分析以及這些信息的存檔(以備將來利用)。
項目溝通計劃是項目整體計劃中的一部分,它的作用非常重要,也常常容易被忽視。很多項目中沒有完整的溝通計劃,導致溝通非常混亂。有的項目溝通也還有效,但完全依靠客戶關系或以前的項目經驗,或者說完全靠項目經理個人能力的高低。然而,嚴格說來,一種高效的體系不應該只在大腦中存在,也不應該僅僅依靠口頭傳授,落實到規范的計劃編制中很有必要。因而,在項目初始階段也應該包含溝通計劃。
設想一下,當你被任命接替一個項目經理的職位時,最先做的應該是什么呢?召開項目組會議、約見客戶、檢查項目進度……都不是,你要做的第一件事就是檢查整個項目的溝通計劃,因為在溝通計劃中描述了項目信息的收集和歸檔結構、信息的發布方式、信息的內容、每類溝通產生的進度計劃、約定的溝通方式等等。只有把這些理解透徹,才能把握好溝通,在此基礎之上熟悉項目的其它情況。
在編制項目溝通計劃時,最重要的是理解組織結構和做好項目干系人分析。項目經理所在的組織結構通常對溝通需求有較大影響,比如組織要求項目經理定期向
項目管理部門做進展分析報告,那么溝通計劃中就必須包含這條。項目干系人的利益要受到項目成敗的影響,因此他們的需求必須予以考慮。最典型也最重要的項目干系人是客戶,而項目組成員、項目經理以及他的上司也是較重要的項目干系人。所有這些人員各自需要什么信息、在每個階段要求的信息是否不同、信息傳遞的方式上有什么偏好,都是需要細致分析的。比如有的客戶希望每周提交進度報告,有的客戶除周報外還希望有電話交流,也有的客戶希望定期檢查項目成果,種種情形都要考慮到,分析后的結果要在溝通計劃中體現并能滿足不同人員的信息需求,這樣建立起來的溝通體系才會全面、有效。
語言、文字還是“形象”
項目中的溝通形式是多種多樣的,通常分為書面和口頭兩種形式。書面溝通一般在以下情況使用:項目團隊中使用的內部備忘錄,或者對客戶和非公司成員使用報告的方式,如正式的項目報告、年報、非正式的個人記錄、報事帖。書面溝通大多用來進行通知、確認和要求等活動,一般在描述清楚事情的前提下盡可能簡潔,以免增加負擔而流于形式。口頭溝通包括會議、評審、私人接觸、自由討論等。這一方式簡單有效,更容易被大多數人接受,但是不象書面形式那樣“白紙黑字”留下記錄,因此不適用于類似確認這樣的溝通。口頭溝通過程中應該坦白、明確,避免由于文化背景、民族差異、用詞表達等因素造成理解上的差異,這是特別需要注意的。溝通的雙方一定不能帶有想當然或含糊的心態,不理解的內容一定要表示出來,以求對方的進一步解釋,直到達成共識。除了這兩種方式,還有一種作為補充的方式。回憶一下體育老師授課,除了語言描述某個動作外,他還會用標準的姿勢來教你怎么做練習,這是典型的形體語言表達。像手勢、圖形演示、視頻會議都可以用來作為補充方式。它的優點是擺脫了口頭表達的枯燥,在視覺上把信息傳遞給接受者,更容易理解。
兩條關鍵原則
在項目中,很多人也知道去溝通,可效果卻不明顯,似乎總是不到位,由此引起的問題也層出不窮。其實要達到有效的溝通有很多要點和原則需要掌握,盡早溝通、主動溝通就是其中的兩個原則,實踐證明它們非常關鍵。
曾經碰到一個項目經理,檢查團隊成員的工作時松時緊,工期快到了和大家一溝通才發現進度比想象慢得多,以后的工作自然很被動。盡早溝通要求項目經理要有前瞻性,定期和項目成員建立溝通,不僅容易發現當前存在的問題,很多潛在問題也能暴露出來。在項目中出現問題并不可怕,可怕的是問題沒被發現。溝通得越晚,暴露得越遲,帶來的損失越大。
溝通是人與人之間交流的方式。主動溝通說到底是對溝通的一種態度。在項目中,我們極力提倡主動溝通,尤其是當已經明確了必須要去溝通的時候。當溝通是項目經理面對用戶或上級、團隊成員面對項目經理時,主動溝通不僅能建立緊密的聯系,更能表明你對項目的重視和參與,會使溝通的另一方滿意度大大提高,對整個項目非常有利。
保持暢通的溝通渠道
溝通看似簡單,實際很復雜。這種復雜性表現在很多方面,比如說,當溝通的人數增加時,溝通渠道急劇增加,給相互溝通帶來困難。典型的問題是“過濾”,也就是信息丟失。產生過濾的原因很多,比如語言、文化、語義、知識、信息內容、道德規范、名譽、權利、組織狀態等等,經常碰到由于工作背景不同而在溝通過程中對某一問題的理解產生差異。
如果深層次剖析溝通,其實可以用一個模型來表示:
從溝通模型中可以看出,如果要想最大程度保障溝通順暢,當信息在媒介中傳播時要盡力避免各種各樣的干擾,使得信息在傳遞中保持原始狀態。信息發送出去并接收到之后,雙方必須對理解情況做檢查和反饋,確保溝通的正確性。
如果結合項目,那么項目經理在溝通管理計劃中應該根據項目的實際明確雙方認可的溝通渠道,比如與用戶之間通過正式的報告溝通,與項目成員之間通過電子郵件溝通;建立溝通反饋機制,任何溝通都要保證到位,沒有偏差,并且定期檢查項目溝通情況,不斷加以調整。這樣順暢、有效的溝通就不再是一個難題。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
今天在打開
數據庫的時候,連接不上。一看錯誤就知道肯定是
SQL Server的服務沒開啟,所以自然而然的去SQL Server配置管理中去打開,但是打開
配置管理器的時候出現了下面的錯誤:
每次連接數據庫的時候總是會出各種各樣的問題,都見怪不怪了。但是這個問題還是第一次遇到呢,起初還有新鮮勁,但是這個問題搗鼓了一個下午+晚上1小時。就開始變得糾結了。為了紀念一下這個難的的問題,還是寫篇博客吧。
問題初期:新鮮勁來了, 好奇的是WMI是什么東西啊?
WMI,
Windows管理規范(Windows Management Instrumentation) 是一項核心的Windows管理技術;用戶可以使用WMI管理本地和遠程計算機。
既然提示無法連接到WMI提供程序,那就是服務沒開啟唄。先查看WMI服務: 計算機—>管理—>雙擊服務—>找到WMI
第二,去網上找了相關的問題,大部分都是給出這三種解決方案:
1.權限問題:管理員(administrator)沒有 network service的權限,所以 WMI無法打開。
右擊“我的電腦”-->“管理”
在“本地用戶和組”內的Administrators組上雙擊,出現添加屬性對話框。
單擊“添加”按鈕,出現添加用戶對話框
單擊“高級”按鈕,再單擊“搜索”(或是“立即查找”)按鈕。注:此'NT AUTHORITY\NETWORK SERVICE'用戶為系統內置帳戶,無法直接添加。
在“搜索結果”內選擇“Network Service”用戶后,單擊“確定”
2.檢查一下 windows下的system32 中是否有framedyn.dll這個系統文件,如果沒有到system32 下的wbem文件中拷貝framedyn.dll到system32 目錄下。 我進到system32目錄找framedyn.dll文件,果然沒有找到,再進入system32\wbem目錄,找framedyn.dll,拷貝到system32目下。
經查找,有該文件!
3.在doc命令中輸入:mofcomp.exe "C:\Program Files\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof"
但是運行之后,出現了下面的錯誤:
提示找不到文件,在網上查找問題,都是這三種解決方案。搗鼓了一下午之后,感覺自己快要放棄的時候,這時候看到八期的師哥過來了,拉著他一起幫忙解決。同樣是查找相關的問題。
搗鼓了一段時間還是不行。此時已經能明確的確定引起這個問題的主要原因是sqlmgmproviderxpsp2up.mof 這個文件。該文件的作用主要是由于上一次SQL安裝失敗之后,將存儲在該文件之中,所以需要進行更新該文件。
后來又發現有個小小的問題,就是有的解決方案給出的路徑是不一樣的。有的是:mofcomp.exe "C:\Program Files(x86)\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof" 或者是 mofcomp.exe "C:\Program Files\Microsoft SQL Server\100\Shared\sqlmgmproviderxpsp2up.mof" 。
注意觀察他們的區別,這時候就知道肯定是路徑上的問題。但是這個文件該去哪找呢?想查一下sqlmgmproviderxpsp2up.mof 這個文件,但是網上都沒有介紹。 正當再次要放棄的時候,觀察SQL Server的目錄組織結構。
既然有人在90和100中找到了,那為什么不到110 下面去找呢。最后在該文件下找到了sqlmgmproviderxpsp2up.mof 這個文件。
運行結果:
主要原因是路徑上的錯誤,sqlmgmproviderxpsp2up.mof 這個文件的路徑,在每個系統上存放的路徑是不一樣的。
注意Program Files(x86)和Program Files的區別。
在64位系統的系統盤中會存在program files和program files(x86)兩個文件夾。前者用來存放64位文件,后者用來存放32位文件。這兩個文件夾的存在使得目前64為操作系統可兼容32為程序,也可以說是為了兼容32位程序,program files(x86)這個文件夾才會存在。
所以,在遇到解決路徑上問題的時候一定要事先了解這些基本知識。同時在遇到問題的尋求解決方案的時候,一定不要一味的相信別人的,要慎思根據自己的實際情況來解決。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
程序執行完會整理出wooyun漏洞列表中所有被忽略的漏洞url,無奈正則太菜,沒整理出漏洞標題,只列出了url。
程序還有點bug,會打印2次url,不知道原因所在,也懶得解決了。其中bestcoding模塊是在某群找到的萬能編碼的小程序,能省很多力氣,本小程序中可以忽略不用。先貼上程序代碼:
#coding:utf-8 import urllib import urllib2 import re,sys import bestcoding import time def wooyun(): for i in range(1,800): page=str(i) vullist='http://www.wooyun.org/bugs/page/'+page vulpage=urllib2.urlopen(vullist).read() p=re.compile(r'bugs/.*\d{6}') for bugpath in p.findall(vulpage): try: time.sleep(1) bugurl="http://www.wooyun.org/"+bugpath bugpage=urllib2.urlopen(bugurl).read() bugzt=bugpage.find("廠商忽略漏洞") if bugzt>0: print bugurl else: pass except: print "Url error" if __name__=='__main__': wooyun() |
萬能編碼程序代碼也貼上:
def getCodeStr(result): #gb2312 try: myResult=result.decode('gb2312').encode('gbk','ignore') return myResult except: pass #utf-8 try: myResult=result.decode('utf-8').encode('gbk','ignore') return myResult except: pass #unicode try: myResult=result.encode('gbk','ignore') return myResult except: pass #gbk try: myResult=result.decode('gbk').encode('gbk','ignore') return myResult except: pass #big5 try: myResult=result.decode('big5').encode('gbk','ignore') return myResult except: pass |
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
首先,html table是由 table 元素以及一個或多個 tr、th 或 td 元素組成。
for example:
這是一個簡單的html table:
源碼如下:
<html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </script> </head> <body> <div align="center"> <h4 align="left"> table head:</h4> <table border="2" width="90%" id="table138" bordercolorlight="#CCCCCC" cellspacing="0" cellpadding="0" bordercolordark="#CCCCCC" style="border-collapse: collapse"> <tr align="center"> <td height="26" width="10%" align="center" bgcolor="#CCEEAA" ><Strong>Test Case ID</Strong></td> <td height="26" width="35%" align="center" bgcolor="#EEEEAA" ><Strong>Steps</Strong></td> <td height="26" width="30%" align="center" bgcolor="#00EEEE" ><Strong>Expect</Strong></td> <td height="26" align="center" bgcolor="#EE00EE" ><Strong>Actual</Strong></td> <td height="26" align="center" bgcolor="#00EE00" ><Strong>PASS/FAIL</Strong></td> </tr> <tr align="center"> <td height="26" align="center" bgcolor="#CCEEAA">ENT#-12345</td> <td height="26" align="left" bgcolor="#EEEEAA" >1.open baidu.com ,wait for the page load</br>2.enter "selenium" in the input box" </br>3.click search button </td> <td height="26" align="left" bgcolor="#00EEEE" >"Selenium - Web Browser Automation" link be the first of the search result</td> <td height="26" align="left" bgcolor="#EE00EE" >Selenium - Web Browser Automation is appear the page,but is not the first link</td> <td height="26" align="center" bgcolor="#00EE00" >FAIL</td> </tr> </tr> <tr align="center"> <td height="26" align="center" bgcolor="#CCEEAA">ENT#-12346</td> <td height="26" align="left" bgcolor="#EEEEAA" >1.click the "Selenium - Web Browser Automation" link</br>2.wait for page load</td> <td height="26" align="left" bgcolor="#00EEEE" >open the official home page of selenium</td> <td height="26" align="left" bgcolor="#EE00EE" >selenium home page is load </td> <td height="26" align="center" bgcolor="#00EE00" >FAIl</td> </tr> </tr> <tr align="center"> <td height="26" align="center" bgcolor="#CCEEAA">ENT#-12347</td> <td height="26" align="left" bgcolor="#EEEEAA" >1.click baidu snapshot of selenium web page </br>2. wait for the page load</td> <td height="26" align="left" bgcolor="#00EEEE" >the snapshot web page can be show up</td> <td height="26" align="left" bgcolor="#EE00EE" >the snapshot web page is show up</td> <td height="26" align="center" bgcolor="#00EE00" >PASS</td> </tr> </table> </div> </body> </html> |
那么問題就來了,我想通過xpath獲取這個table的每一個cell的值(比如獲取expect的值),該怎么做。
如果這個表格被改變了,增加或刪除一些行列該如何處理?
我的solution是獲取table的base xpath,這個所謂的base xpath是指這個table的第n行第m列相同的部分,然后通過傳入n,m獲取返回值
public static String tableCell(WebDriver driver,int row, int column) { String text = null; //avoid get the head line of the table row=row+1; String xpath="http://*[@id='table138']/tbody/tr["+row+"]/td["+column+"]"; WebElement table=driver.findElement(By.xpath(xpath)); //*[@id="table138"]/tbody/tr[1]/td[1]/strong text=table.getText(); return text; } |
所以,tableCell(driver,1,2)就能返回
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
本文是一份2014阿里巴巴測試開發工程師的面試經驗(內推-電話面試),感興趣的同學參考下。 這次跟淘寶的不一樣,電面的是一個很溫柔的姐姐。之前給我打了兩次電話確定電面時間。當第二次我說在路上可能信號不好的時候。姐姐很爽快地答應過會再給我打。
剛才是讓我做下自我介紹。我就說了下自己的項目經歷還有得過的一些獎和證書。感覺這塊說的不好。沒有突出自己技術上的特長,也沒有說自己對
阿里巴巴的熱愛。下次切忌。
后來姐姐根據我的項目經歷問了我一些項目里的知識。問我的特長,我就提到
數據庫方面。她問我數據庫最擅長那塊,回答是做視圖。然后就說了下視圖的優點:
視圖的作用
* 簡單性。看到的就是需要的。視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。
* 安全性。通過視圖用戶只能查詢和修改他們所能見到的數據。數據庫中的其它數據則既看不見也取不到。數據庫授權命令可以使每個用戶對數據庫的檢索限制到特定的數據庫對象上,但不能授權到數據庫特定行和特定的列上。通過視圖,用戶可以被限制在數據的不同子集上:
使用權限可被限制在基表的行的子集上。 使用權限可被限制在基表的列的子集上。 使用權限可被限制在基表的行和列的子集上。 使用權限可被限制在多個基表的連接所限定的行上。 使用權限可被限制在基表中的數據的統計匯總上。 使用權限可被限制在另一視圖的一個子集上,或是一些視圖和基表合并后的子集上。
* 邏輯數據獨立性。視圖可幫助用戶屏蔽真實表結構變化帶來的影響。(附上視圖的作用,進攻參考)
其實都是學過的知識點,自己總結的很少。還是要經常溫習的。雖然說用的時候用不到,但是面試總結的時候很有幫助。
數據庫對象包括:表、索引、視圖、存儲過程、觸發器
存儲過程是數據庫中一個重要的對象。是一組為了完成特定功能的
SQL語句集。作用是
1.存儲過程是在創造時進行編譯的。以后每次執行存儲過程不需要重新編譯,而一般SQL語句需要每執行一次就編譯一次。
2.當對數據庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少數據庫開發人員的
工作量
4.安全性高,可設定只有某些用戶才具有對指定存儲過程的使用權主要有可重復利用,安全性
存儲過程和函數的區別:
1.存儲過程中定義的參數和輸出參數可以是任何類型,函數定義的參數又限制且沒有輸出參數。
2.函數可以用于表達式、check約束、default約束中,存儲過程不可以。
3.存儲過程中可以有T-SQL語句,函數中不可以,也不能創建任何表。
技術方面問完之后,面試官姐姐讓我帶個筆做些題:
第一個是關于四棵樹,怎么栽種這四棵樹可以使任意兩棵之間的舉例都相等。是關于三棱柱的問題。
接下來就問我有沒有測試經驗,知不知道有什么測試方法:
回答了靜態測試和動態測試
然后根據測試,提出了一個小的測試問題。
給你一個圓珠筆,這個圓珠筆你可以按,可以換芯。讓你做一下
功能測試。這個可以根據題目詳細寫。
最后讓自己提問問題。總體來說面試官姐姐還是很好的,只問我擅長了,有時候還給予我提醒。不錯的。寫下經歷,也算是對自己的總結。現在都在緊鑼密鼓的找工作,自己最想找的信息就是往期別人的筆試面試經歷啦~希望對大家有幫助
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
三、 SQL Server群集故障轉移對AlwaysOn可用性組的影響 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上
1.1將節點轉移Server02.以下是故障轉移界面。
1.2 服務脫機,alwaysOn自然脫機,但偵聽IP并沒有脫機。
1.3 SQL服務聯機后,偵聽IP【10.0.0.224】會脫機重啟,alwaysOn資源組聯機
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
晚上電話和同事討論一個
工作上的事情,結束的時候聊起這樣的一個話題,完全是有感而發,也覺得心有戚戚焉。
不是什么很特別的事情,就是我們每天在做的工作,測功能,測版本,然后發布,每個月在做,每周也在做。正是因為這樣的平常,很多時候我們就只看到這個工作本身。
想想這樣的兩種狀態吧:
1. 我們很理解為什么要做這樣的功能,有什么意義(實際意義,戰略意義也好),認可或者部分認可它的價值。
做完了,上線了,有人告訴我們這個功能有多少人在用,帶來了什么效益(新用戶,PV/UV,訂單,交易額)?
作為實際的參與者,我們被尊重和感謝。
有哪些成功的地方,哪些值得優化的地方,下一步的計劃是什么?對發布時間有什么要求?
2. 被告知要做這樣的一個功能,然后要求在什么時間點發布,盡量壓縮開發和測試的時間,請大家盡力支持。實在不行就安排加班吧。 上線后,繼續做下一期,或者下一個功能。
其實不只是測試,對于開發也是一樣。
以上兩種狀態會不斷的重復。對比下這兩種狀態吧,第一個更像是一個參與者,一個創造者。而第二種,即便不是外包,其實也很像是外包。我對做外包的人沒有偏見,但是始終覺得外包這種模式做不出優秀的東西,基于體制和人性。
最近有一個觀念,所有依賴于人的服務行業,比如餐飲,中介,軟件研發,其實都是重度的依賴于人來創造價值的服務行業。要想做好,一定是要想辦法激發人的投入度。
刀塔傳奇的公司莉莉絲的創始人王信文有篇blog(那些和錢有關的事 http://www.verypig.com/?p=576)讀起來很有感受,比如這一段,“我仔細想了想,發現了一條規律:如果是標準化商品,能省則省;如果是購買服務,那么想省錢常常不會取得好效果。” 確實如此,看看美國,很多標準化的商品價格確實夠便宜,和收入比,但是雇一個人就很貴。我覺得中國也是這個趨勢。
這樣的例子還有很多,比如海底撈,服務員被照顧好了,客人就被照顧好了,而且不程式化和冷冰冰。
再舉一個中介的例子,可以拿北京的鏈家和上海的德佑比較下其他比較雜的一些。
激發人的也不只是錢,至少大部分公司一年最多也就調兩次薪,光這個激勵能持續多久?又有多少人投入的去做一件事情之前會算一下我的薪資水平值不值得這么做?
很多人都說自己只是個打工的,其實大家內心里都很在意,我們做出來的這個東西有人用嗎,cool嗎,牛x嗎?這本身就是工作的一種回報。
很多人也許想說,我們一樣可以制定各種各樣的KPI,更細化的指標來考核,來衡量和要求服務和產出的質量。
這確實是一條應該走的路,但是是一條適可而止的路。任何一個經歷過實際的項目或者帶過一個稍大一點團隊的人都會理解,如果那樣真的可行,成功的項目和失敗的項目就不會差別那么明顯。
如果設定一個指標是要求內容裝載到杯壁,那么就有可能得到一個豐滿或者干癟的結果,而這,取決于人。