中國若要達2060年碳中和目標 得編150兆預算投入再生能源

摘錄自2020年10月8日自由時報報導

國際能源顧問公司伍德麥肯茲(Wood Mackenzie)今(8日)對中國2060年碳中和目標提出分析,表示此一目標中國恐將花超過新台幣150兆元經費,其中又會牽涉到煤礦省份未來所面臨的轉型問題,對此,該顧問公司認為,碳捕存(CCS)技術將成中國達成目標的關鍵,若少了碳捕存,則碳中和目標幾乎不可能。

據路透社報導,伍德麥肯茲公司今天表示,中國若要達到2060年碳中和目標,預計需要的投資金額將超過5兆美元(約為新台幣150兆元),其中包含發展再生能源發電設施等,中國國家主席習近平9月在聯合國成立75週年視訊大會上表示,中國要在2060年達到「碳中和」目標,即為碳的排放量會等於減少量。目前,中國是世界上最大的碳排放國,約佔全球排放量的28%。

氣候變遷
國際新聞
中國
碳中和
碳捕存技術

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

開着容易上癮,這3款10來萬的合資車,比朗逸好玩得多

6L的動力版本,會讓你在日常代步之餘,也能享受到小鋼炮的魅力。至於1。5T的,朋友,秋名山見。福克斯的短板在於儲物空間較為一般,後排在兩廂車這個級別裏面算是表現一般,中下的水平。致悅,沒錯,不是致炫,是來自菲亞特选手的致悅,至於為啥會推薦它,不是它表現的多突出,主要是價格便宜,優惠還大,這是許多人買車考慮的問題之一。

緊湊型車三廂的感覺操控不過來?

有便宜的兩廂車推薦嗎?

想買兩廂車怎麼辦?

有哪些兩廂車選擇?

首先是來自馬自達选手帶來的昂科賽拉,對於這款車大家都不陌生,操控就不說了,兩廂車操控還不好也不好意思推薦了,昂科賽拉的底盤懸挂是想要表揚的,一個字,穩,即使是高速過彎,你也不會覺得虛。

在眾多車企紛紛投入渦輪增壓發動機的大軍中去是,馬自達堅持做自吸發動機,這簡直是個異類,但是馬自達憑藉創馳藍天技術使得昂科賽拉在動力方面不遜色於搭載渦輪發動機的車型,而且還省油,這也是馬自達敢拿自吸發動機打着運動旗號的原因了。

後排較小,是昂科賽拉的短板,這也是許多馬自達車型的短板了,買馬自達的朋友們要注意哦~

另外是昂科賽拉在胎躁控制方面的還是不夠,這是許多車主反應的問題了。

福特选手帶來的則是福克斯,福克斯是大家心目中的理想車型之一了,美系車的隔音好,配置豐富的特點都具備,還有眾多的動力選擇。

1.0T的動力總成,對於日常上下班代步通勤的朋友們,會說,夠用!1.6L的動力版本,會讓你在日常代步之餘,也能享受到小鋼炮的魅力!至於1.5T的,朋友,秋名山見!

福克斯的短板在於儲物空間較為一般,後排在兩廂車這個級別裏面算是表現一般,中下的水平。

致悅,沒錯,不是致炫,是來自菲亞特选手的致悅,至於為啥會推薦它,不是它表現的多突出,主要是價格便宜,優惠還大,這是許多人買車考慮的問題之一。

除了價格之外,致悅的空間表現以及動力表現也是挺不錯的,全系搭載1.4T渦輪增壓發動機,動力能說不夠嗎?用車主的話說,就是一給油就跑!

從車身尺寸以及乘坐空間測試來看,致悅的表現在同級別不能說最好,但是中上水平還是可以有的。而讓人不滿意的是所搭配的DCT雙離合變速器在低擋換擋的時候頓挫感比較明顯。

以上三款車都是所推薦的兩廂車,綜合實力來說都是比較強的,各位看官可以根據自己的需求來挑選喲!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

【Spring註解驅動開發】面試官:如何將Service注入到Servlet中?朋友又栽了!!

寫在前面

最近,一位讀者出去面試前準備了很久,信心滿滿的去面試。沒想到面試官的一個問題把他難住了。面試官的問題是這樣的:如何使用Spring將Service注入到Servlet中呢?這位讀者平時也是很努力的,看什麼源碼啊、多線程啊、高併發啊、設計模式啊等等。沒想到卻在一個很簡單的問題上栽了跟頭,這就說明學習知識要系統化,要有條理,切忌東學一點,西記一點,否則,到頭來,啥也學不到。

項目工程源碼已經提交到GitHub:https://github.com/sunshinelyz/spring-annotation

如何實現將Service注入到Servlet中??

這裏,我們列舉兩種解決方法(推薦使用第二種)

方法一:

直接重寫Servlet的Init()方法,代碼如下:

public void init(ServletConfig servletConfig) throws ServletException {
	ServletContext servletContext = servletConfig.getServletContext();
	WebApplicationContext webApplicationContext = WebApplicationContextUtils
			.getWebApplicationContext(servletContext);
	AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext
			.getAutowireCapableBeanFactory();
	autowireCapableBeanFactory.configureBean(this, BEAN_NAME);
}

這裏的BEAN_NAME即為我們需要注入到Spring容器中的服務,但這並不是一個好的方法,因為我們需要在每一個Servlet中都進行這樣的操作。

方法二:

我們可以寫一個類似於“org.springframework.web.struts.DelegatingRequestProcessor”的委託的Bean,然後通過配置的方法把我們的服務注入到servlet中,具體方法如下,

Step 1:編寫委託類DelegatingServletProxy

package com.telek.pba.base.util;

import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 * 以下是類似org.springframework.web.struts.DelegatingRequestProcessor的一個委託
 * 用於通過配置的方法,在Servlet中注入Service
 * @author binghe
 * */
public class DelegatingServletProxy extends GenericServlet{
    private static final long serialVersionUID = 1L;
    private String targetBean;
    private Servlet proxy;

   @Override
   public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{
   		proxy.service(req, res);
   }
     /**
      * 初始化
      */
      public void init() throws ServletException {
          this.targetBean = getServletName();
          getServletBean();
          proxy.init(getServletConfig());
      }

     /**
      * 獲取Bean
      */
      private void getServletBean() {
          WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
          this.proxy = (Servlet) wac.getBean(targetBean);
      }
}

Step 2:修改Web.xml配置

在純Servlet模式下,我們的配置方式如下(以下由於代碼高亮插件的問題,請將代碼中的#替換成尖括號)

<servlet>
  <description>活動發起模塊活動查詢分頁Servlet</description>
  <display-name>launchActivityQueryServlet</display>
  <servlet-name>LaunchActivityQueryServlet</servlet-name>
  <servlet-class>com.telek.pba.launch.servlet.LaunchActivityQueryServlet</servlet-class>
<servlet>

<servlet-mapping>
  <servlet-name>LaunchActivityQueryServlet</servlet-name>
  <url-pattern>/servlet/launch/LaunchActivityQueryServlet</url-pattern>
</servlet-mapping>
</servlet>

如果採用我們這種代理的方法,則配置應該修改為:

<servlet>
  <description>活動發起模塊活動查詢分頁Servlet</description>
  <display-name>launchActivityQueryServlet</display>
  <servlet-name>launchActivityQueryServlet</servlet-name>
  <servlet-class>com.telek.pba.base.util.DelegatingServletProxy</servlet-class>
<servlet>

<servlet-mapping>
  <servlet-name>launchActivityQuery</servlet-name>
  <url-pattern>/servlet/launch/LaunchActivityQueryServlet</url-pattern>
</servlet-mapping>
</servlet> 

注意:默認情況下,Servlet的配置中,LaunchActivityQuery的首字母一般為大寫,而我們的標題中已註明,我們採用Spring的註解模式,如果是自動掃描註解的話,默認情況下,註解的value值為首字母小寫,即:launchActivityQuery,因此,在我們新的配置中,要注意將首字母改為小寫,否則會報無法找到Bean的錯誤。

Step 3:至此,我們就可以像SSH的注入方式一樣,注入Servlet了,以下是個小示例:

package com.telek.pba.launch.servlet;

import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import com.telek.pba.base.model.PbaUserInfo;
import com.telek.pba.launch.dao.IPbaActivityInfoCurrentDAO;

@Component
public class LaunchActivityQueryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	 
	//注入IPbaActivityInfoCurrentDAO
	@Resource
	private IPbaActivityInfoCurrentDAO pbaActivityInfoCurrentDAO;

	public LaunchActivityQueryServlet() {
		super();
	}
	 
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}
	 
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//sth to do
	}
	 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//sth to do
	}
	 
	public void init() throws ServletException {
		// Put your code here
	}
}

最後,請留心在Spring配置文件中,配置上自動掃描包的路徑:

<context:component-scan base-package="com.telek.pba.*.dao.impl,
 					com.telek.pba.*.service.impl,
 					com.telek.pba.*.servlet"/>

大功告成!

好了,咱們今天就聊到這兒吧!別忘了給個在看和轉發,讓更多的人看到,一起學習一起進步!!

項目工程源碼已經提交到GitHub:https://github.com/sunshinelyz/spring-annotation

寫在最後

如果覺得文章對你有點幫助,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習Spring註解驅動開發。公眾號回復“spring註解”關鍵字,領取Spring註解驅動開發核心知識圖,讓Spring註解驅動開發不再迷茫。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

python工業互聯網應用實戰2—從需求開始

前言:隨着國家工業2025戰略的推進,工業互聯網發展將會提速,將迎來一個新的發展時期,越來越多的企業開始逐步的把產線自動化,去年年底投產的小米亦庄的智能工廠就是一個熱議的新聞。小米/華為智能工廠只能說是中國製造2025的一個代表,產業轉型和製造升級,筆者從事的企業領域就越到越來越多的(製造)企業開始悄悄的自動化/智能化。這裏肯定有國家政策推動的大背景,同時,也有着企業自身不斷提高生產率的“剛需”。

  本序列我們也從一個需求問題開始;然後,拆解需求(問題);其次,解決拆解需求(問題)的點;再次,通過的不斷技術摸索和迭代過程找到一個個合理的解決需求的方法和手段,最終,完成了這個需求(問題)的項目實戰。我們會在文中描述演化過程、方法論、過程保證機制和實用的工具等,最終帶着大家完成這樣一個實際項目需求的項目過程項目涉及的Django的多基礎知識請大家閱讀筆者早期的《Python開發入門與實戰系列》。

  本文的過程採用python3.6和django2.1版本

項目需求:這是一個簡版物流自動化倉庫實例,倉庫控制系統(以下簡稱WCS)需要調度AGV小車運送一個實托盤(搬運單元)從1樓入庫站台經由提升機搬運到2樓指定的倉庫貨位。 

1.需求分析

  倉庫控制系統(以下簡稱WCS)需要調度AGV小車運送一個實托盤(搬運單元)從1樓入庫站台經由提升機搬運到2樓指定的倉庫貨位。這句簡要描述常常是我們在項目URS看到的需求描述,接下來我們需要對拿到的需求進行分析,形成一個個可度量的開發功能點。

1.1.用例說明

  需求用例說明文檔能夠很好的對需求進行詳細的分析,主要的包含內容包括:前置條件、事件流程和後置條件(執行結果)用例描述如下錶,通過用例分析我們能夠很好的把握需求的具體事件執行流程,並通過文檔清晰的描述出來,便於後期設計編碼時作為開發設計人員的指導。

  經過團隊頭腦風暴討論,大家基本上達成了如下錶的需求用例說明,我們把這個調度設備的搬運過程設計成一個序列順序執行的步驟(子任務),這些子任務對應着設備的執行分解動作。

用例編碼

1.1

執行角色

WCS

用例名稱

托盤入庫用例

前提條件

  1. WMS已完成任務貨位的分配,任務核心信息:托盤條碼、源地址、目標地址;
  2. AGV不能跨樓層作業,1樓與2樓分別是不同的AGV小車執行任務;

需求描述

1 WCS分解搬運任務成3個設備作業

2 調度AGV入庫站台搬運托盤到提升機1樓門口工位;

3 調度提升機到1樓並打開廊門

4 調度AGV提升機1樓門口工位到提升機並卸貨,返回提升機門口工位;

5 調度提升機1樓提升到2樓並開門;

6 調度AGV進入提升機並載貨搬運到2樓門口工位;

7 調度提升機關門;

8 調度AGV從2樓門口工位搬運到庫存貨位。

備選過程

 

擴展過程

 

 

原始需求描述

參見 《XXX URS》

特殊需求

後置條件

WCS調度相關設備完成實托盤從入庫站台搬運到庫存貨位,反饋結果給WMS 

2. 需求功能點

  從上面的用例說明的需求描述事件流程來看,我們需要先把這一趟搬運任務分解成設備子任務,並串行的方式順序下達到設備執行,任務清單如下錶:

序號

作業描述

執行設備

1

調度AGV入庫站台搬運托盤到提升機1樓門口工位

1AGV

2

調度提升機到1樓並打開門

提升機

3

調度AGV提升機1樓門口工位到提升機並卸貨,返回提升機門口工位

1AGV

4

調度提升機1樓提升到2樓並開門

提升機

5

調度AGV進入提升機並載貨搬運到2樓門口工位

2AGV

6

調度提升機關門

提升機

7

調度AGV從2樓門口工位搬運到庫存貨位

2AGV

  也就是說這一趟搬運任務,WCS需要分解成7個設備作業子任務,並順序下達給相應的執行設備執行,最終完成任務的執行(當前的任務劃分粒度實際對接AGV和提升機廠家來說會有調整,最終以上步驟會依賴與實際對接的情況,但是主流程不會有太大變化)。 

   經過分析從1樓入庫站台運送托盤到二樓某個指定貨位這樣一個任務,系統需要分解成7個子任務,下達給設備順序執行。系統活動圖如下:

3. 活動圖

  經過分析從1樓入庫站台運送托盤到2樓某個指定貨位這樣一個任務,系統需要分解成7個子任務,下達給設備順序執行。我們還可以通過UML活動圖來進一步詳細的描述作業的執行順序如下圖: 

    從圖中我們可以看出來一次入庫任務,系統分解為7個設備子任務(作業)來執行完整的托盤入庫流程,只有所有子任務(作業)執行完成,托盤的入庫才算完成。

 4. 功能模塊

  對於這樣一個看似簡單的需求來說,包含兩大主要功能模塊

    1. 任務分解:依據物理設備處理任務的條件,對任務進行分解,任務分解的粒度是設備能夠識別並執行(動作)
    2. 任務調度:任務調度就是按照順序執行的邏輯,把任務順序和逐一下達給設備 

  這裏也有幾個基本邏輯就是,設備在某一個時間點上只能執行一個子任務,只有這個任務執行完畢後方能下達新的子任務。多重任務邏輯只會導致設備無法完成任務(不知道到底該執行那個動作)。

 4.1. 實體關係

  我們從上面需求分析整理當前至少包括2個實體,包含的屬性(字段)如下: 

1任務

任務ID,任務號,源地址(從哪兒),目標地址(到哪兒),開始時間,結束時間,狀態 

2子任務:

子任務ID,任務ID,源地址(從哪兒 上一個子任務的目標地址), 目標地址(到哪兒 下一個子任務的源地址), 執行機構,開始時間,結束時間,狀態

5. 小節

  本章我們從一個需求問題開始,然後經過需求分析,把需求問題分解為功能點和數據實體,實體是下一步我們設計表或ORM model的基礎原型,上面的實體只是一個初步的需求分析主要字段要求,實體屬性(字段)會設計時會增加特定的其它屬性(字段)。 下一章節我們將描繪如何把這個需求逐步演化到模型設計。

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

吉力馬札羅山山坡大火 坦尚尼亞消防員連日撲救

摘錄自2020年10月13日中央社報導

東非國家坦尚尼亞官員表示,消防員連續第3天與吉力馬札羅山(Mount Kilimanjaro)山坡上的大火對抗,希望控制這座非洲第一高峰的火勢。

路透社報導,大火11日起於胡娜區(Whona),強風助長了火勢,官員表示,風勢今天已經減弱。胡娜區是使用曼達拉(Mandara)和霍倫坡(Horombo)兩條登山路線的登山客的休息中心。

坦尚尼亞國家公園管理局(TANAPA)官員謝魯特(Pascal Shelutete)向路透社表示,消防員與相關人員正努力控制火勢,並稱火勢已「幾乎獲遏止」。

氣候變遷
國際新聞
坦尚尼亞
吉力馬扎羅山
大火

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

澳洲科學家發現巨型珊瑚礁 比帝國大廈還高

摘錄自2020年10月29日中央社報導

施密特海洋研究所(Schmidt Ocean Institute)本週表示,澳洲科學家在大堡礁發現一座獨立珊瑚礁,高度超越紐約帝國大廈和巴黎艾菲爾鐵塔,為120多年來首見。

這座「刀片狀」珊瑚礁將近500公尺高、1.5公里寬,頂端位於海平面下40公尺。由畢曼(Robin Beaman)博士率領的詹姆士庫克大學(James Cook University)科學家團隊20日在科研船福克爾號(Falkor)上,於大堡礁北方海床進行繪測作業時發現這座珊瑚礁。

科學家利用水下機器人SuBastian錄下他們探索這座新珊瑚礁的過程,一路上也在蒐集海洋樣本,之後將會存放在昆士蘭博物館(Queensland Museum)和昆士蘭熱帶博物館(Museum of Tropical Queensland)。

海洋
國際新聞
澳洲
珊瑚礁

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

哈弗H6最強對手換代,天窗無敵,內飾升級,9.98萬你買嗎?

值得一提的是,全景影像四攝像頭還具備行車記錄儀功能,防護功能遠勝傳統行車記錄儀。此外,法國法雷奧一鍵泊車系統(12顆超聲波雷達)、鑰匙遙控泊車等功能在同級更是前所未見,勇氣可嘉。配置方面,前排座椅加熱、通風和空調功能被集成至排擋桿前方的獨立觸控屏上,估計出於成本控制輕觸后未見震動反饋,增加了盲操學習成本,所幸保留了聲音反饋。

滿足小有成就的現狀,缺乏居安思危意識,是營銷領域中不少先鋒產品的通病。等恍悟備受衝擊、該有所行動時,卻被時代洪流淹沒的例子,比比皆是。

(老款CS75)

上市四年以來,長安CS75無論在群眾口碑抑或銷量方面,都頗有建樹。隨着時間推移、消費升級,外觀和內飾開始顯得落伍、俗套。為了喚起潛在買家熱情,中期改款CS75厲兵秣馬、煥新而來。

全新CS75能否追隨自主SUV往上發展、實現高端化的潮流?身體力行前往世外桃源香格里拉,一試究竟。

外觀設計

長安睿騁CC砍獲德國紅點設計大獎后名噪一時,飄逸流暢的蝶翼式前臉讓長安轎車產品觀感度躍升一個維度。這份美好卻未能沿襲至全新CS75上,引以為憾。

所幸的是,新款CS75內外設計均往积極方向在推進。外觀一改老款地盤包工頭的“油膩”印象,大量的橫向鍍鉻飾條強調年輕化,比頗具爭議的“CHANGAN”字母臉強不止一星半點。

車燈儼然成為時下車型外觀設計的重中之重,深諳於此的長安為新款CS75換裝帶自動大燈功能的全LED大燈,造型犀利、燈腔內部精緻,跟來車怒目相視的感覺。

箭羽造型的霧燈區域安放在前包圍左右兩側,LED轉向燈帶巧妙地鑲嵌其上,內凹線條的勾勒對運動感的提升大有裨益,成功化解“中年危機”。

新款車型配有ACC自適應巡航功能,車頭底部的模塊能窺探一二,較強的塑料感缺乏精緻度。

車身尺寸與舊款別無二致,長/寬/高:4650/1850/1705mm,軸距:2700mm。側腰線條平鋪直敘、寬厚瓷實,屬四平八穩的類型。

后視鏡集成了轉向燈,從底部的攝像頭和鏡面標識可知,新款高配車型配備了盲區監測功能和全景影像。

試駕車型選用19英寸雙色鋁合金輪圈,與之搭配的是優科豪馬GEOLANDAR G91輪胎(225/55 R19),為四驅輪胎開發的獨特胎面膠配方,溝槽設計主打濕地操控、制動性能,乾地制動表現一般。

自主SUV一窩蜂玩壞了懸浮式車頂、碩大英文尾標后,又將魔爪伸向了當年林肯MKZ敢為人先的貫穿式尾燈。不出多久,貫穿式尾燈會淪為自主SUV中俗套的設計元素。

選用貨真價實的雙出排氣布局,扁平排氣口造型不落窠臼,與反光帶、尾燈造型遙相呼應,呈現出整體感喜人的尾部輪廓。

內飾配置

與外觀一樣,全新CS75的內飾表現出足夠的革新度和顛覆感,舊款內飾的鄉村氣息黯晦消沉,取而代之的是與時俱進的內飾氛圍。

軟質材料應用廣泛,多處的單雙縫線交替,方寸之間,盡顯品位。新車內飾供科技黑和輕奢棕兩色可選,後者配備仿木紋材料更是時刻在強調檔次感。

10.25英寸全液晶儀錶盤、10.25英寸懸浮式觸控屏、电子擋桿、平底方向盤、大面積的鋼琴烤漆面板、七色氛圍燈對車內質感的提升大有裨益。

其中試駕車型的10.25英寸懸浮式觸控屏配備全景影像和虛擬影像功能,显示效果細膩,提供優良閱讀效果,可謂女司機福音。

以配置水平見長的自主車,無鑰匙進入/啟動功能自然必備必不可少,全系標配德爾福STT智能啟停功能,優化燃油經濟性。

遠不止此,強調科技感的全液晶儀錶盤能與中控大屏實現雙屏互動,導航、ACC全速自適應巡航(0-150km/h)等信息同樣能呈現於儀錶盤,甚是方便。

值得一提的是,全景影像四攝像頭還具備行車記錄儀功能,防護功能遠勝傳統行車記錄儀。此外,法國法雷奧一鍵泊車系統(12顆超聲波雷達)、鑰匙遙控泊車等功能在同級更是前所未見,勇氣可嘉。

配置方面,前排座椅加熱、通風和空調功能被集成至排擋桿前方的獨立觸控屏上,估計出於成本控制輕觸后未見震動反饋,增加了盲操學習成本,所幸保留了聲音反饋。

溫度調節和吹風模式保留實體按鍵,長安工程師對人機工程學的考究是可感知的。但如何改善光滑面板的反光現象,會是道不小的難題。

最為人稱道的當屬換裝电子擋桿,採用輕觸方式激活p擋的方式同級罕見,但使用體驗有待商榷,需要適應一段時間。

貴為長安產品矩陣中的銷量擔當,新款CS75僅前排車窗支持一降升降功能,為車內乘員日常啟閉車窗增添不便,不應當,扣分項。

空間表現

國人喜聞樂見的全景天窗如常出席,1.12平方米的採光面積(同級最大)有效拉升乘員的暈車閾值。輔以靠背支持多角度調節的後排座椅以及接近純平的後排中央地板,絕對是說服長輩掏包的有力論證。

整體空間表現絲毫不怵主流中型SUV水準,不易聽到乘員的抱怨聲。手套箱、扶手箱足以安放常規單反相機,擋桿前方、杯架、四門門把手處的儲物格均能容納大尺寸智能手機,實屬難得。

此外,後排座椅安全帶卡扣可收折,不磕屁股。後排座椅支持4/6分割放倒,放倒後接近純平狀態,宜商宜居。

動態表現

新款CS75搭載全新藍鯨 280T 直噴增壓發動機,這枚1.5T發動機在德爾福高壓共軌直噴系統、霍尼韋爾增強脈衝渦輪增壓器、水冷中冷的加持下,最大馬力178ps/5500rpm、峰值扭矩265N·m/1450-4500rpm,官宣百公里加速時間為10s,搭配日本愛信第三代6AT。

此前舊款CS75機油增多事件牽動不少潛在買家的心,而全新CS75搭載的發動機選用全新的噴油方案以及熱管理系統,暖機時間較此前縮短近2min,輔以重新調校的ECU程序,各位無需過慮。

起步階段存有“起床氣”,若不將油門踩得比預期稍深,車輛更願意停留在慵懶狀態。高速下再深踩油門,引擎艙發出歇斯底里的嘶吼聲,小排量渦輪增壓的單薄感被進一步放大。

變速箱齒比設定綿密,3擋開始便能實現閉鎖控制,對動力輸出的連續性、降低動力損耗等大有裨益。升擋后發動機轉速小幅回落,努力維持在峰值扭矩輸出區間,兢兢業業地保持加速力道。至於推背感嘛,沒有。

剎車前半段虛位較大,制動力輸出不夠線性,日常市區行駛不易形成輕鬆駕駛氛圍。更青睞一點就有、漸進式的剎車腳感,還望廠商後期優化。

新車選用前麥弗遜、后多連桿獨立懸架結構,配備美國天納克MTV-CL減震器閥系,彈簧K值較同級家用SUV高,在面對坑窪、起伏路面時動作稍顯敏感。重心轉移與駕駛員預期不夠默契,但勝在拋跳抑制處理到位。

一鍵泊車、鑰匙遙控泊車、遠程控制(發動機、空調、空氣凈化、遠程防盜追蹤)、后追尾預警、開門碰撞預警、隨動氛圍燈、同級最大天窗、电子擋把、安第斯灰車漆,這些同級罕見甚至前所未見的配置,都被新款CS75一一用上。

(售價:9.98-15.98萬元)

相信這是CS75深思熟慮后的改進,因為長安深知顏值拼不過WEY VV5,內飾氛圍、机械規格也難敵領克01,為此選擇在產品年輕化、科技互聯環節大下苦功,清晰的定位有望搶佔豪華自主SUV的年輕潛在買家。

相近的預算,CS75要說服國人不選合資緊湊型SUV,尚屬馳高鶩遠。我想,大概還差一份如逸動、睿騁CC般驚艷、精緻、創新的設計手稿吧。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

90后買起來也輕鬆,10萬出頭買這些車你才不會後悔

這一部分人則跟表現中庸之道的卡羅拉契合,沉穩並不是中年人的詞彙,成家立業的年輕人同樣需要這份性格。辣評:卡羅拉的外觀不像思域那麼激進,極高辨識度的豐田前臉讓你開出去並不會掉面子。之所以用沉穩來形容卡羅拉,除了外觀之外,簡潔的內飾、不急不緩的動力表現、穩定的油耗都是卡羅拉的特點。

90后已經成為消費的主力軍,為什麼汽車在外觀的設計上越來越趨向於年輕化、運動化,就是為了迎合年輕消費者的口味,因而汽車變得個性分明。人有性格,車也有性格,我們所說的磨合期就是源自於此。為什麼二手車市場出現這麼多准新車,不是因為汽車出了事故,或者發了大財想要換新車,而是車主發現車並不適合自己。那麼買車為什麼不買契合自己性格的呢,確認過性格,找到對的車。

經濟崛起的這批年輕人或熱血或沉穩或放浪不羈或剛中帶柔……靠着努力與堅持,一步步走向成功,豪車目前對他們來說還很遙遠,10-15萬這個級別恰到好處,經濟上不會那麼吃力。那麼接下來要介紹的車符不符合你的性格?一起來看一下。

熱血思域

十代思域銷量持續增長的原因之一是前幾代思域口碑的加持,但認為最大的原因在於它年輕的外表加熱血的心。外觀上對年輕人有着極大的吸引力,車身低趴,線條之間搭配得很好,車頭線條柔和,腰線則凌厲。跟現在有個性的年輕人一樣,衣着光鮮,打扮新潮,如果你認為它是安分守己的乖孩子,那你就大錯特錯了。

現在很多廠家的宣傳往往都會打上秒天秒地秒思域的名頭,但是他們從來不敢說輸了直接燒車這樣的大話,因為他們旗下所謂的神車全都抵擋不了思域那顆火熱的“心”。思域1.0T、1.5T的發動機同屬本田當家技術-地球夢系列發動機,只不過1.0T是3缸發動機,不要因為它是三缸就小覷它。須知道缸內直噴、進排氣可變正時系統、進氣側可變升程技術、變排量機油泵等主流發動機技術都出現在它的身上,在保證燃油經濟性的同時,也為它帶來了125ps的動力;1.0T尚且如此,更不用說更為強大的1.5T 177ps的發動機。

辣評:在內飾、配置同級別都差不多的車型里,思域憑藉著較為強大的動力,再加上與CVT、6擋手動變速箱之間的配合,車主在享受速度的同時,換擋也比較順滑,一個同樣有衝勁的人可以掌控這台有衝勁的車,這才是這麼多人選擇它的理由,不知道年輕的你會做出怎樣選擇。

沉穩卡羅拉

思域不是唯一的選擇,還有同樣優秀的卡羅拉,一開始就說過,選擇契合自己性格的車。當然不是每一個人都這麼熱血衝動,有的人性格沉穩,遇事不急不緩。這一部分人則跟表現中庸之道的卡羅拉契合,沉穩並不是中年人的詞彙,成家立業的年輕人同樣需要這份性格。

辣評:卡羅拉的外觀不像思域那麼激進,極高辨識度的豐田前臉讓你開出去並不會掉面子。之所以用沉穩來形容卡羅拉,除了外觀之外,簡潔的內飾、不急不緩的動力表現、穩定的油耗都是卡羅拉的特點。你很難在這輛車上找出明顯的短板,同樣,令人側目的亮點也沒有。總的來說,這樣一輛車適合那些低調又不失格調的成熟人士。

放浪不羈自由本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

厲害了!除了find命令,還有這麼多文件查找命令,高手必備!

大家好,我是良許。

在系統里查找文件,是所有工程師都必備的技能(不管你用的是 Windows 、Linux、還是 MacOS 系統)。對於 Linux 操作系統,單單一個 find 命令就可以完成非常多的搜索工作。

但是,文件搜索命令遠不止一個 find 命令,還有很多。本文就對 Linux 下文件搜索命令進行一個科普,讓你能夠在短時間內找到自己需要的文件。

1. find

find 命令應該是最經典的命令了,談到搜索工具第一個想到的肯定是 find 命令。但是,find 命令非常強大,想要把它的功能都介紹一遍,恐怕要寫好幾篇文章。

所以,這裏就偷個懶,介紹最基本的,根據文件名查找文件的方法。假如我們想搜索當前目錄(及其子目錄)下所有 .sh 文件,可以這樣搜索:

2. locate

locate 是另外一個根據文件名來搜索文件的命令。區別於 find 命令,locate 命令無需指定路徑,直接搜索即可。

這個命令不是直接去系統的各個角落搜索文件,而是在一個叫 mlocate.db 的數據庫下搜索。這個數據庫位於 /var/lib/mlocate/mlocate.db ,它包含了系統里所有文件的索引,並且會在每天早上的時候由 cron 工具自動更新一次。

正因為如此,locate 的搜索速度遠快於 find 命令,因為它直接在數據庫里檢索,速度自然更快。

locate 命令在找到文件之後,將直接显示該文件的絕對路徑,比如:

但是 locate 命令有個弊端,它無法搜索當天所創建的文件,因為它的數據庫一天只在早上更新一次。比如我現在創建一個新文件,locate 沒辦法搜索到:

為了解決這個問題,我們可以使用 updatedb 命令手動去更新它的數據庫:

$ sudo updadb

然後,我們就可以搜索到新文件了。

3. which

which 命令主要用來查找可執行文件的位置,它搜索的位置指定在 $PATH$MANPATH 環境變量下的值,默認情況下,which 命令將显示可執行文件的第一個存儲位置:

如果某個可執行文件存儲在多個位置,可以使用 -a 選項列出所有的位置。

如果你想一次性查找多個文件,可以直接跟在 which 命令後面即可。

4. whereis

whereis 命令會在系統默認安裝目錄(一般是有root權限時默認安裝的軟件)查找二進制文件、源碼、文檔中包含給定查詢關鍵詞的文件。(默認目錄有 /bin, /sbin, /usr/bin, /usr/lib, /usr/local/man等類似路徑)。

一般包含以下三部分內容:

  • 二進制文件的路徑
  • 二進制文件的源碼路徑
  • 對應 man 文件的路徑

比如我們現在搜索 ls 命令:

我們可以使用 -b 選項來只搜索可執行文件所在位置,使用 -B 選項指定搜索位置,使用 -f 選項列出文件的信息。

同樣地,我們可以使用 -s 限定只搜索源碼路徑,使用 -m 搜索 man page 路徑,使用 -s 指定搜索源代碼文件的路徑,使用 -M 指定搜索幫助文件的路徑。

公眾號:良許Linux

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

對抗代碼遺忘的思考——提問回顧與個人總結

一、提問回顧

提問博客點這裏

關於第一章中的“軟件的非連續性”

經過這一學期的實踐,我對軟件的非連續性有了比較具體的認識。

在我們的項目中,後端涉及比較複雜的狀態機,而可能一些小的輸入變化就會觸髮狀態機的改變,進而影響系統的運行狀態。測試後端狀態機是整個項目最困難、最複雜的地方,在這部分,軟件的非連續性就體現得淋漓盡致。

而應對這種困難的方式也有很多,一方面,可以做充分的測試,盡量覆蓋狀態機的每一條狀態轉移路徑,另一方面,在設計時也要做好充分的考慮,盡量讓系統的狀態數較少,轉移數較少,從而使得系統的穩定性提高,易於維護和管理。

關於第二章中提到的“單元測試”

在學期初提出的問題是

是否有必要追求100%覆蓋率的單元測試

經過這一個學期的實踐,我覺得我找到了答案,測試是必需的,但100%覆蓋率的單元測試既不必要,不也現實。

在這個學期的項目中,我們的產品從前端到後端涉及到了瀏覽器、服務器、Docker、文件服務器、磁盤文件系統。其中,很多功能都是需要多個組件協同完成的,而單獨處於一個組件內部的單元測試常常無法兼顧整體,例如,在服務器系統內就很難監控到Docker的運行狀態,相應的單元測試也就很難開展。因為不存在一個組件可以訪問和控制到整個系統的每個組件,如果真的存在這樣的組件的話,那說明系統的設計也是不好的,沒有很好地實現系統層次之間的隔離,整個軟件的耦合度比較高。

但是,這是不是意味着我們可以放棄對單元測試的要求而為偷懶找借口了呢?不是的。

首先,單元測試依然起着十分重要的作用,拿建築樓房為例子,單元測試的作用就是保證每個磚塊、每根鋼筋的質量,雖然它很難保證整個樓房的藍圖設計是正確無誤的,但是作為第一層保障,它可以有效地保證我們的最低層組件工作正常。

以我們的項目為例,在後端服務器實現中,會用到很多的工具類,這些類之間的耦合度很低,各自完成相關的一系列功能,為上層提供服務。單元測試在這裏就可以發揮很大的作用,對每個工具類的每個方法進行全面的測試,可以為將來進一步的開發排除很多潛在的隱患。

而除此之外,我還認識到了測試不僅僅是單元測試這麼簡單,測試是一門學問,相應的也有諸多經典的測試方法,例如,在我們的項目開發後期,常常採用錄製腳本的方式進行測試,通過瀏覽器錄製一系列操作形成腳本,這個腳本可以重放,從而在軟件開發過程中可以隨時回歸測試,保證之前腳本中包含的功能運行正常。

所以,總結來說,測試十分重要,但100%的單元測試往往不切實際,但在單元測試無法覆蓋的地方,必須要有其他的測試手段進行彌補,要保證軟件的每個環節都有相應的測試作為保障,才能在接下來的開發中保持軟件的高質量。

關於第四章中提到的“結對編程”

在學期初提出的問題是

結對編程的開發方式開起來很美好,但是在實際團隊開發中真的有廣泛使用嗎

經過本學期的結對編程實踐,我依然對當初提出的問題持保留意見,也尚不能完全認同結對編程中的所有優點。

在書籍中介紹到結對編程有如下幾個優點

  • 可以起到教學作用,技術高的程序員可以幫助技術較弱的程序員進步
  • 可以提高代碼質量,因為代碼的每個部分的質量都取決於一對程序員中在該方面技術較高的一個
  • 可以提高團隊凝聚力,促進團隊交流,利於團隊管理
  • 可以有效應對團隊人員變動

針對這幾點,我也想談談我在實踐過接對編程后的理解和困惑。

  • 可以起到教學作用,技術高的程序員可以幫助技術較弱的程序員進步

關於這個優點我完全認同,在接對編程實踐中,我從搭檔身上學到了不少東西,不論是編程技巧還是設計藝術,同時,我有時也能夠為他提供一些幫助和想法,應該是完全起到了相互促進的作用。

但是,在這個優點背後有一個問題值得思考,也是我所困惑的。這樣的時間成本是否較高,一方學到東西的代價是另一方需要停下開發的腳步,而且,並非每個人都有成為老師的潛質,有的人技術高超但是表達能力不強,讓他們教授別人技術或許不如讓他人查閱相關資料來的效率高。同時,編程和思維都是有節奏和狀態的,打斷編程者的連續輸出其實對於編程人員來說是一件效率很低的事情,這樣看來,這個教學作用的成本是否較高。

  • 可以提高代碼質量,因為代碼的每個部分的質量都取決於一對程序員中在該方面技術較高的一個

這個優點我也完全認同,但是,在我實踐過程中的體會就是,達到這個最優往往會經歷一番周轉。

當雙方在某個設計點上意見不一致時,需要停下進行分析,這本身沒有問題,尤其是在雙方技術水平相差較大時,一方會主導話題,從而使得問題的討論和解決較快。而當雙方技術水平相當時,問題就可能出現,可能雙方各有不錯的設計,但這兩個設計相去甚遠,說服任意一方接受理解另一方的設計都是比較困難的事情。其本質就是默契問題,是否雙方有很高的默契度,編程和設計習慣上風格一致,這些都影響着結對編程的效果和實際性。倘若雙方無法保持高度默契,那麼有時時間就會被浪費在類似上面提到的場景上。

  • 可以提高團隊凝聚力,促進團隊交流,利於團隊管理

這一點我完全認同,也認為十分實際,當下,很多公司也有技術茶話會這樣的活動,目的也是為了可以一邊交流技術、提高團隊水平,一邊也可以提高團隊的凝聚力、促進團隊交流。

  • 可以有效應對團隊人員變動

確實有這方面的意義,但是我個人感覺這依然沒有解決本質問題,這樣的解決辦法下,風險依然是在人員本身上,只不過將一個人變成了兩個人而已。

而我認為更好的解決辦法可以是完善相關的內部文檔,每個人負責各自工作範圍內的技術文檔維護,這樣可以有效地規避掉人員變動的風險。

這一點在這學期的強制轉會中深有體會,據我了解,有的團隊就將項目開荒初期的學習和技術文檔維護了下來,從而使得轉會新來的成員可以快速上手項目,團隊的開發進度不會受到很大的影響。

關於第十六章中提到的“要成為領域的專家,才能創新”

在書中,作者的觀點是這樣的

這個想法看起來沒什麼錯,我們不就是為了成為某個領域的專家,才來上學,拿學位,希望拿到學位之後成為專家,然後再開始這個領域的創新?但是統計數據表明,70%的創新者說,他們最成功的創新,是在他們的拿手領域之外發現的。

之後作者舉出了HTTP的誕生阿里巴巴的誕生等例子,佐證上面的觀點。

經過這學期的實踐,我對這個觀點有了一定的理解,也有了一些自己的看法。

在這學期,我們是自選項目,也算是做了一些創新性的設計實現,但是這背後是經過了一定的調研和學習才得來的。雖然不能說經過調研我們就成為了領域的專家,但是至少對領域有了一定的了解和認知,知道哪些是實現了的,哪些是空白的,哪些東西因為沒人想到所以沒人做,哪些東西因為難度太大所以沒人做。

當然,作者的意思不是說對某個領域聞所未聞就企圖在其中有所創新,而是說創新的領域不一定是自己最拿手的領域。這一點,經過這學期的實踐,我有了全新的理解。

創新和實現不同,創新更關注的是要站在一個應用者和設計者的角度去思考,而不是實現者或者架構師的角度,它更多關注的是需要什麼而不是如何實現。當然,這兩者都十分重要,單純有想法但無法實現也無濟於事。但是,這背後正是作者想要表達的意思,不一定每個人都有實現某個東西的能力,但是每個人一定都有想到、想出某個東西的能力。

那我們的項目為例,我們發現在初學編程時,環境的配置很麻煩,IDE的安裝很麻煩,所以我們想解決這個問題,於是我們提出了自己的WEB版IDE,對這方面的需求提供了一定的支持。這個創意源自於我們的真實需求,同樣,那些偉大的創意,也往往來自於真實的需求。這正是作者想要表達和闡述的。

關於第十七章中提到的“磨合階段”

經過這學期的實踐,我發現沒有磨合階段的團隊和無法磨合的團隊都很少,以我們的團隊為例,大家在最開始雖然意見不統一,但是經過一段不長的時間的調整和交流,很快大家在認識上就可以達成一致。

我認為,除了一些極端人員難以融入團隊,可能會成為團隊的害群之馬以外,大部分時候,團隊都是可以磨合和愉快合作的。

而在學期開始時,我提出了如下問題

如何判斷一個團隊是處於“磨合階段”還是說這個團隊的人員配置本身真的存在問題呢

針對這一點,結合我的實踐體會,我認為,如果一個團隊能夠明確地完成分工,並且每個人都能夠清楚自己的職責和任務,那麼這個團隊就可以繼續合作下去。即使最開始存在團隊成員的進度不能很好地達標的情況,但也依然可以認為團隊的人員構成本身沒有問題,是可以合作的。

因為如果每個成員都清楚自己的任務和職責,那麼這至少說明了大家在工作和認識上達成了一致,在這個一致達成的基礎上開展後續的合作都是有可能的。而倘若成員之間連分工和職責分配都無法明確,則要麼是團隊管理出了問題,PM沒有很好地協調成員,要麼就是團隊成員無法達成一致,整個團隊內對任務和目標沒有一個清晰的認識和把握。

所以,我的理解是,團隊成員之間能否對團隊任務和目標有一個統一的認識和把握是可以作為評判團隊人員配置是否合理的一個重要標準。

二、新的問題

實踐出真知,經過一個學期的實踐后,再回顧最初提出的問題,確實顯得有些稚嫩和缺乏實踐了。

不過在實踐過程中,我也產生了一些新的問題,下面提出來和大家共同探討。

如何對抗歷史代碼遺忘問題

這個項目總共歷時2個月,從最初的搭建,到後來項目功能越來越多,魯棒性越來越強,這其中都是需要進行代碼的修改和添加的。

然而,在項目後期常常會出現一個情況,就是幾周前的代碼在幾周后再次閱讀時不能很快地回憶出其中的實現細節。

這裏並不是想表達代碼的可讀性較差,即使是在充分利用面向對象編程和函數式編程的優勢的情況下,回顧以往的代碼依然要耗費一定的時間去閱讀。

特別是在系統的狀態較多較複雜的情況下,這種問題尤為明顯,需要花費比較多的時間理清楚系統的狀態遷移。

我認為,完備的設計文檔和代碼註釋會有幫助,同時,設計多個小型專用系統來替代單一的多功能大型系統也會有所幫助。

但是我並無法滿足於上述兩種可能的解決方案,同時,因為問題暴露較晚,所以我也沒有機會去實踐檢驗上述辦法是否真的有效。

所以在這裏提出這個問題,希望能夠得到幫助。

軟件功能和軟件安全性的矛盾

網絡安全是一個很大的領域,而WEB應用依賴於網絡,自然WEB安全也是一個很大的話題。

在項目初期,我們花費了不少時間在安全機制的設計上,甚至對於安全機制的考量一度影響到了我們正常功能與核心功能的開發進度。

我們每個人都承認,在軟件領域,軟件的安全性無論對於用戶還是開發者都是十分重要的,它關乎雙方的利益。但是,在能力有限,或是缺乏相應的專業技術人員的情況下,過多的安全設計考慮常常會影響到功能的開發。

所以,我很困惑應該將安全機制設計放在軟件開發的哪個階段。

倘若在最初軟件設計時就將大部分安全機制考慮到並設計在最初架構中,那這樣肯定會影響到軟件的開發進度,特別是在缺乏專業技術人員的情況下。

而若不在最初設計時將安全機制考慮在內,而寄希望於在後期逐漸添加安全機制,那麼很可能出現一種情況,就是為了添加安全機制,軟件架構需要一些變動,這有時甚至會破壞單元測試的可用性,因為更高的安全性背後往往是更低的便利性,可能會有一些原本可以正常工作的單元測試不能在新的安全機制下運行,這就又給回歸測試帶來的困難,進而迫使軟件開發進入了一種比較危險的狀態。

所以,我很想知道,在有限的條件下,應該如何平衡安全機制設計和功能開發。

三、實踐知識點回顧

需求階段

在需求階段,我學到的知識點是

需求調研不僅要保證提出的需求是真需求,同時也要保證我們的產品有優於同類產品的地方

我們的項目是WEB版的IDE,其實,這個領域的同類產品還是有不少的,但是我們在需求調研時提出了我們獨特的地方,即面向新手

我們提出的需求是,許多新手初學編程時會被諸如環境配置、IDE配置等一系列配置工作阻礙,而我們的目標就是為他們消除阻礙,能夠提供一個開箱即用的編程環境。

那麼,我們提出的需求是真需求嗎?是的。

據調查,很多大一新生在編程學習的前半個學期都會對開發環境有着或多或少的困惑和不解。然而理解這背後的一系列內容又本身超出了他們現有的能力範圍,那麼,我們產品的使用人群和使用場景也就應運而生了。

而我們的產品是否有優於同類產品的地方呢?是的。

根據調研,市面上大多數的WEB版IDE的功能都十分強大,基本涵蓋了非WEB版IDE的絕大部分功能。但同非WEB版的IDE類似,這些WEB版的IDE依然使用難度較高,需要一定的經驗,也需要一定的配置,並不能做的開箱即用,而這就是我們產品的優勢。

設計階段

在設計階段,我學到的知識點是

有效地分隔任務為若干個子任務會有利於設計的進展

在我們項目最初的設計階段,我們就將項目進行了分隔,粗略分為了前端、編輯器、後端這三個部分,而這三個部分又各自被分隔為若干個更小的部分,然後針對每個部分的功能需求去單獨設計。這樣,一方面有利於強化對於項目的整體把握,另一方面也有利於控制軟件的複雜度,可以使得每個小部分都得到較優的設計和實現。

實現階段

在實現階段,我學到的知識點是

團隊開發中的每日例會十分重要,有利於每個成員把握整體的開發進度

在alpha和beta階段都有14天的scrum階段,其中每天都要舉行例會,在實現階段的每日例會是十分重要的。

一方面,通過每日例會,每個成員都可以比較清晰地把握團隊整體的開發進展,進而便於規劃自己未來幾天的任務。

另一方面,也可以起到監督和督促的作用,在每日例會上,大家都會彙報自己的工作進展,這在無形中就起到了督促作用。

此外,每日例會也能夠起到活躍團隊氣氛、促進團隊團結的效果,每日例會不僅是彙報工作的地方,也是團隊成員交流的機會。

測試

在測試階段,我學到的知識點是

要常常回歸測試,不要等到最後統一測試,那樣往往費力不討好

在alpha階段,我們的測試基本上是在發布前統一進行的,在開發過程中的測試較少,所以最後發布前的測試工作十分緊張。

統一測試的壞處在於,一方面,統一測試的工作量很大,面對一個初有體積的項目,要進行覆蓋度較高的測試是十分耗時耗力的工作。另一方面,在最後統一測試的修復成本較高,在軟件開發階段發現並修正錯誤往往是比較容易的,但是當軟件完成了整合,再進行測試並修正錯誤,那樣的修復成本往往較高,因為在軟件整合完成之後發現的BUG有可能是整合導致的,也有可能是某個組件自身帶來的,這樣不僅問題定位困難,而且修復時常常會涉及到多個組件,牽一發而動全身。

發布

在發布階段,我學到的知識點是

推廣十分重要,優秀的推廣能夠助力讓產品最終擁有大量的用戶

在alpha階段的發布環節,我們團隊並沒有十分重視產品的推廣,因而導致在alpha階段最終用戶數量不多,相應的,收到的用戶反饋也就較少,為beta階段的展開帶來了一定的困難。

而在beta階段,我們及早進行了發布和推廣,有力地吸引了一批有效用戶,他們為我們的項目提出了寶貴的意見和建議,從長遠來看,這將十分有助於我們產品的進一步發展和更新。

維護

在維護階段,我學到的知識點是

要做好系統數據收集工作,在維護階段要密切關注系統數據記錄,及時發現系統可能存在的問題

在alpha階段,我們的後端系統並沒有設計太多的日誌系統,用戶的操作基本都沒有被有效記錄下來,導致維護時出現了問題很難定位。

在beta階段,我們針對後端系統的設計強化了系統日誌方面的實現,記錄了所有數據庫查詢操作、API訪問操作等諸如此類操作的記錄,便於在維護時定位錯誤和排查隱患。

四、理解與心得

無論是個人項目、結對項目還是團隊項目,都需要有一個思路清晰的領導者(管理者)來把握整體的前進方向。

在個人項目中,自己是那個管理者,在結對項目中,兩人都是管理者,而在團隊項目中,PM是主導的管理者,每個人也都參与其中。

為什麼說這個管理者十分重要,因為在多人完成一項任務時,思路統一是很重要的一件事情。每個人都有自己的主意,那樣是無法擰成一股繩來合作的,需要有人來管理和協調,讓大家的想法達成一致,才能使得團隊高效地合作。

同時,管理團隊和管理軟件開發周期也是一門學問。

管理團隊涉及到協調大家不同的意見,盡量不偏不坦,保證每個人的個性的同時又要保證團隊的統一。要能夠充分發揮每個人的特點,盡量滿足每個人的愛好和想法,這本身就是一項十分有挑戰的事情。

而管理軟件開發周期更甚,軟件開發涉及到多個環節,每個環節都有每個環節的任務和特點,在每個階段都指定明確的目標對於按期完成軟件開發而言有十分重要的意義。

同時,軟件開發不僅是技術的挑戰,也是設計的挑戰。

高超的技術可以幫助程序員實現功能,但是並不能幫助程序員設計出優秀的產品。軟件開發往往細節之處見真功夫,這種功夫不一定是實現難度有多高,往往是設計思想上的巧妙。優秀的設計可以讓產品更加易用,更加具有粘性,讓用戶更加依賴於產品。

這一點我在我們的項目中深有體會。我們的IDE主打易用,所以在很多地方的設計上都是精雕細琢,如功能的布局、UI的設計、項目的入口等等,都力求讓用戶能夠快速上手,長期使用。

此外,我也有一些想進行反思的地方。

首先是和大家的交流方式上,我覺得我一直存在一定的問題,同時,這也是團隊合作中十分重要的地方。團隊合作,大家不僅僅只是簡單的在一起做個東西,人際層面的往來對團隊的建設也十分重要,良好的交流方式有利於提高團隊的凝聚力,營造良好的團隊氛圍。在這一點上,我覺得我做的還不夠,有時會將個人情緒遷怒到他人,也是感謝大家對我的包容吧,能夠讓團隊的合作一直很愉快。

還有就是缺乏思考,尤其是設計上的思考。好的軟件開發人員會設計優秀的接口和服務,讓使用者一看就能覺出這是大家之作,方便易用的同時功能全面。這一點上我覺得我做的還不夠,很多時候都是功能有了就可以了,而不再進一步考慮如何優化接口,優化API設計,讓調用者更加方便地使用接口與服務,這一點在未來的軟件開發設計上也是需要提高的。

總結起來說,這一學期的軟工實踐體驗是很充實的。從單人項目到結對項目再到最終的團隊項目,實踐了不同模式下的開發過程,也最終取得了一個小有規模的產品,無論是過程還是結果都值得欣慰。同時,通過一系列的實踐,我也深刻體會到了團隊大型軟件開發的難度和痛點,也為將來的進一步學習和發展奠定了基礎、明確了方向,從這些角度上講,都是十分有益的。希望這個學期的實踐可以成為未來軟件開發生涯的一個好的開端。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?