程式指南
這些只是一個程序員打算合作的 ERDDAP 是 Java 課程需要知道。
取得源碼
** ERDDAP™ 依赖性**
ERDDAP™ 使用 Maven 來載入編碼依赖性以及一些靜態參考檔 (WEB-INF/ ref) . 這是為了避免在寄存器中儲存很多大檔案 。
你可以用 mvn 編譯 而會得到依存檔和檔案 。 您也可以使用 mvn 套件 以產生戰爭檔案。
您可以手動下載參考檔 :
-
etopo1\_ice\_g\_i2 .zip 并解析到 /WEB-INF/ref/ 。
-
翻譯檔案 .zip 并解析到 /WEB-INF/ref/ 。
-
erddap 內容 .zip (版本 1.0.0, 20333字節, MD5=2B8D2A5AE5ED73E3A42B529C168C60B5,日期2024-10-14) 將它解析成 tomcat, 建立 tomcat/content/erddap .
注意 : 預設 Maven 會缓存靜态參考和測試資料檔案的下載, 只有在新版本下載時才提取 。 要完全跳過下載, 您可以設定 跳過源碼下載 和/或 跳過試用源碼下載 屬性到 Maven (例如: mvn - Dskip 源碼下載套件 ) . 要強制提取, 設定 - 下載量. unpack=真 和 - Download.unpack 當改變=假裝 .
-
ERDDAP™ 及其子元件有非常自由的開源 授權 ,所以您可以為任何目的使用和修改源碼,以营利或非牟利. 注意: ERDDAP™ 而很多子元件都有許可證 要求您承認您使用的密碼來源 。 看 信用 . 不管是否有必要,
-
其他工程使用程式碼
歡迎您使用部分 ERDDAP™ 其它專案的程式碼, 警告此程式碼可以而且會變更 。 我們不保證會支持我們密碼的其他用途 Git 和 GitHub 是您處理這個問題的主要解決方案 -- Git 允許您將我們的變更整合到您的變更中 。 在很多情況下 你可能會想用部分 ERDDAP™ 在你的計畫中,我們認為你會發現更容易安裝和使用 ERDDAP™ 也是 然后寫入其他使用 ERDDAP 服務 你可以自己安排 ERDDAP™ 一兩小時內就安裝好 你可以自己安排 ERDDAP™ 再過幾天就用磨光的方法安裝 (依數據集的數量與複雜度而定) . 但黑掉部分 ERDDAP™ 可能要花上幾周 (和抓住微妙的月份) 而您將失去加入變更和錯誤修正的能力 ERDDAP™ 釋放 我們 (顯然) 使用有許多利益 ERDDAP™ 以及你 ERDDAP™ 公開存取安裝。 然而,在某些情况下,你可能不想做你的 ERDDAP™ 公開存取安裝。 那麼,你的服務 可以存取和使用你的私人 ERDDAP™ 你的客戶不需要知道 ERDDAP™ .
半途
或者,還有一種方法,你可能覺得有用 在探索的中間 ERDDAP 代碼與使用 ERDDAP™ 作為獨立的網路服務: 在 EDD 類別中, 有一種靜態方法讓您做個數據集的例 (根據 datasets.xml ) : 資料集中的一個 Xml 命令 (字符串 tDatasetID) 返回 EDD表或 EDDGrid 數據集。 既然如此,你可以打電話 做新檔案ForDapQuery (字符串使用者 DapQuery, 字串 dir, 字串檔案Name, 字串檔案 型態Name) 由使用者查詢結果。 因此,這是一個簡單的用法 ERDDAP 要求資料和取得檔案回應的方法, 就像客戶端會使用 ERDDAP™ 網頁應用程式。 但這方法在你的內心 Java 程式並绕過 Tomcat 等應用程式伺服器的需要 。 我們用這個方法來做 EDD Table 的很多單位測試 EDDGrid 子類, 您可以在源碼中看到這些類別的示例 。
發展環境
-
可選擇 : 設定 ERDDAP™ 在 Tomcat 中 自 ERDDAP™ 我們強烈建議你們遵守標準 安裝指令 以安裝Tomcat,然后安裝 ERDDAP™ 在Tomcat的 Webapps 目錄中。 除其他外, ERDDAP™ 被設計為安裝在 Tomcat 的目錄結構中, 並期望 Tomcat 會提供一些 .jar 檔案 。
-
ERDDAP™ 不需要特定的IDE (Chris主要使用Visual Studio碼, Bob 使用 EditPlus) . 我們不使用Eclipse、Ant等。 ERDDAP - 支持他們 這項工程是用馬文的
-
我們使用一個批次檔案來刪除來源樹上的 . class 檔案,以确保我們有清潔的編譯 (使用 Javac) .
-
我們目前使用領養的javac jdk-21.0.3+9來編譯 gov.noaa.pfeg.coastwatch。 (它有幾個課程的連結 否則不會編譯) 做測試 出于安全原因,使用最新版本的 Java 21和Tomcat 10.
-
目前的目錄為_tomcat_/webapps/erddap/WEB-INF。
-
我們的Javac和Java的流派是
類別;./././lib/servlet-api.jar;lib/* -
所以你的Javac命令會像這樣
javac - 編碼 UTF-8 - cp 課程;./././lib/servlet-api.jar;lib/ * 課程/gov/noaa/pfel/coastwatch/TestAll.java -
你的Java命令會像這樣
java - cp 課程;./././lib/servlet-api.jar;lib/ * - Xmx4000M - Xms4000M /政府/noaa/pfel/海岸表/可選擇:您可以添加` - Java 以列印垃圾收集數據。 -
如果測試 所有編譯,一切 ERDDAP™ 需求已汇编。 幾堂課是不需要的 ERDDAP™ . 如果編譯 TestAll 成功但沒有編譯一些課程,那就不需要了. (有一些未完成/未使用的課程。)
-
-
在少數情況下,我們使用第三黨源碼而不是.jar檔案 (特别是 DODS ) 並稍作修改,以避免編譯有問題 Java 21. 我們常做其他微小的修改 (特别是 DODS ) 其他原因。
-
大多數課程在相關的src/test文件中都有測試方法. 您可以使用
mvn 測試命令。 這會下載數個測試所依赖的 zip 檔案 ERDDAP / erddap 中 測試 .\ 注: Maven 缓存下載, 但會解開每次執行中已下載的檔案, 這需要時間 。 要跳過下載 您可以指定跳過試用源碼下載屬性至 Maven (例如:mvn - Dskip TestResource 下載套件) .
重要類別
如果你想看看源碼,試著想想辦法 ERDDAP™ 工作,請做。
-
密碼是 Java 醫生評論,但 Java 醫生還沒產生 隨你便 發育它們吧
-
最重要的班 (包括下文提到的) 在gov/noaa/pfel/erddap。
-
其 ERDDAP™ 課程有最高水平的方法。 它延伸了HttpServlet。
-
ERDDAP™ 傳送請求至 EDDGrid 或 EDD Table,代表各個數據集。
-
EDStatic 拥有大部分靜態資訊與設定 (例如, 從設定的. xml 與信件. xml 檔案中) 提供靜態服務 (例如,發送電子郵件) .
-
EDDGrid 和 EDDTable 子類分解要求, 從子類特定方法取得資料, 然后格式化 。
-
EDDGrid 子类將資料推進 GridData 存取器 (网格化資料的内部資料容器) .
-
EDDTable 子類別將資料推進 TableWriter 子類別, 將資料寫入飛行中的特定檔案類型 。
-
其他班 (例如低級班) 也很重要,但你更不可能 努力改變它們。
密碼贡献
-
GitHub 問題 如果你想投資但沒有項目,請參考 GitHub 問題 其中很多都是你能完成的項目 如果你想研究一個問題 請自己去告訴別人你正在研究 GitHub問題是討論任何問題的最佳地方,
-
若您想要改變的情況是以下常见的, GitHub 期 表示你打算做的改變。 一旦變更完成, 請提出拉動要求以要求合并 。 共同的修改包括:
-
您要寫下另一個子類 EDDGrid 或 EDD Table 處理其他資料來源類型。 如果有,我們建議你找到最接近的子類 并使用這個代碼作為起始點
-
您要寫入另一個儲存 As_ FileType_ 方法 。 如果有, 我們建議您在其中找到最近的儲存 As_ FileType_ 方法 EDDGrid 或 EDD Table 并使用此碼為起始點 。
-
你寫的密碼是自成一体的 你不需要知道所有的細節 ERDDAP 內部的 我們很容易把您的密碼寫進 ERDDAP . 注意, 如果您提交代碼, 執照需要符合 ERDDAP™ 授權 (例如, 阿帕奇語Name , BSD 中 ,或 MIT-X ) . 我們會列出你們在 信用 .
- 如果您有上面未包含的功能, 您希望加入其中 ERDDAP 中, GitHub 討論 . 技術委員會將討論, ERDDAP™ .
判斷您的編碼贡献
如果您要提交要包含的代碼或其他變更 ERDDAP 太好了 你的贡献需要符合某些标准才能被接受 如果你遵循以下的指引,你就會大大增加你的贡献被接受的機會.
-
其 ERDDAP™ 專案由 NATD 管理 ( NOAA 任命) 由技術委員會提供 2007年 (開始 ERDDAP ) 直到2022年 那是鮑勃·西蒙斯 (也是創始者領導者) . 從2023年1月开始,那是克里斯·約翰 基本上,NATD是負責的 ERDDAP ,所以他/他對決定有最后的消息 ERDDAP™ 程式碼, 主要是關於設計和是否接受給定的拉力要求 。 一定是因為效率原因 (它對Linus Torvalds和Linux有好處) 部分出于安全原因: 總得有人告訴IT安全人員 他對密碼的安全和完整負責
-
NATD不能保證他會接受你的密碼 如果一個項目沒有我們所希望的那樣成功 如果它不能被拯救 NATD就不會把這個項目列入 ERDDAP™ 分配。 請不要感到難過。 有時計畫效果不盡如人意 所有軟體開發者都會這樣 如果你遵循下面的規矩, 你大大地增加了你的成功機會。
-
如果改變是普遍的利益和效用,那最好. 如果密碼是你們組織的 最好保持一個單獨的分支 ERDDAP™ 供你使用。 Axiom干的 幸好吉特讓事情變得很容易 NATD希望保持對 ERDDAP 並不讓它成為廚房水槽專案,
-
跟著 Java 法典公约。 一般說來,你的密碼應該是品質好的 而且應該遵循原則 Java 法典 : 將 . class 檔案放在目錄结构的适当位置, 給 . class 檔案一個适当的名稱, 包括 roal Java Doc 註解, 包含 // 註解在每段碼首, 縮排為 4 個空格 (沒有分頁) ,避免行 >80字符等。 傳統改變, 如果有疑問, 代碼要符合約法而不是现有的代碼。
-
使用描述類, 方法和變數名稱 。 讓其他人更容易讀到密碼
-
避免花式代碼 。 從长远看,你或其他人必須找出密碼才能維持下去 所以請使用簡單的編碼方法 讓其他人更容易 (包括你未來) 想清楚 顯然,如果用花招有真正的優點 Java 編程功能, 使用它, 但大量記錄你所做的, 原因, 以及它是如何工作的 。
-
在你開始之前和技術委員會合作 如果你希望得到您的密碼變更 ERDDAP™ 技術委員會肯定會想在您修改密碼之前 談一下您要做什麼 該怎麼做 這樣我們就可以避免你做出NATD最後不接受的改變 當你工作時,NATD和技術委員會 愿意回答問題 幫助你找出现有的密碼 (概述) 如何處理你的專案
-
独立工作 (越多越好) 在你開始之后 相對於以上「與技術委員會合作」, 如果NATD要告訴你幾乎一切 回答很多問題 (特別是那些你可以通過讀取文件或密碼來回答的) 那麼你的努力並不是 NATD的時間节省 而且他也可以自己做 是 神話人物月 有問題 當然,我們應該繼續交流 以確保計畫能如期進行, 但你越能獨立工作 (在技術委員會同意手頭的工作和一般方法之后) 越好
-
避免虫子 。 如果在發行前未抓到錯誤, 這會引起使用者的問題 (最多) ,返回錯誤的信息 (最糟糕的) ,是污點上 ERDDAP 名聲,將不斷 ERDDAP™ 設置多年。 努力避免虫子 一部分是寫清潔碼 (所以更容易看到問題) . 一部分是寫作單位的測試 一部分是寫程式碼時的避蟲態度 不要讓NATD后悔 加上你的密碼 ERDDAP™ .
-
寫單位測試或測試 要用新的代碼, 您應該將 JUnit 測試寫入測試檔 。 請至少寫下一個單位的測試方法, 徹底檢查您寫的代碼, 並加入到課程的 JUnit 測試檔中, 讓它自動執行 。 單位 (相关) 測試是捕捉蟲子的最好方法之一, (隨著其他事物的改變 ERDDAP™ ) . 如鮑勃所言 「單身檢查讓我晚上睡覺」
-
讓NATD容易理解并接受你拉力要求中的變更. 一部分是寫單位測試方法 (s) . 其中一部分是限制您的變更 。 (或一個類別) 如果有可能的話 NATD不會接受任何拉力要求 隨著數以百計的變化 NATD告訴IT安全人士, 若改變過多, 或是太難解析,
-
保持簡單。 您的密碼的一個好主題是: 簡單點。 簡單的密碼對其他人來說很簡單 (包括你未來) 以讀取和维护。 NATD很容易理解并接受
-
做你的密碼的長期責任 從长远看,你最好繼續負責 維持你的密碼,回答問題 (例如, ERDDAP™ 谷歌群組) . 有些作者指出,代碼既是財產也是负债。 如果未來發現了蟲子 最好能修好 因為沒人比你更瞭解你的密碼 (也因此有避免蟲子的刺激) . NATD並非要求堅定承諾, NATD只是說,做維修會非常感謝。