Unix作業系統在檔案許可權控制上,跟Windows作業系統上還是有比較大的差異。簡單的來說,Unix的檔案許可權控制要比Windows作業系統複雜的多。雖然其維護起來具有一定的難度,但是這也保證了Unix作業系統的檔控制要比Windows作業系統的檔控制安全的多。下面筆者就對兩個作業系統在檔案許可權控制上的差異做一些分析。如果有說得不對的地方,還請大家多多批評改正。
無論是微軟作業系統還是Unix作業系統,其許可權控制的基本模型就如下圖所示。不過他們在具體的實現上有很大的差異。
差異一:檔案執行許可權上的差異分析
假設現在有使用者A,其在Unix作業系統上建立了一個檔案text。通常情況下,這個使用者A就是檔案text的所有者。所有權這對檔具有完全控制的許可權,即具有讀、寫、執行的許可權。而在Windos作業系統下,則沒有控制的這麼嚴格。在Windows下其許可權只有讀、寫的控制,而沒有細化到執行的許可權。這就是兩個作業系統在檔案許可權控制上的一個重要差異。Unix在對檔專門進行了執行許可權的控制,這對於Unix作業系統的安全性具有很大的幫助。如現在有一個程式開發小組,其成員包括用戶A與用戶B。他們在開發一個磁片清理的程式。為了安全起見,這個指令檔案當然不能夠隨意執行。不然的話很可能會造成磁片檔意外刪除的。為此用戶A就可以控制,用戶B可以查看或者編輯這個指令檔,但是不能夠執行。要測試的話,必須有用戶A來進行。這就可以保障這個指令檔案不會被未經授權的用戶執行。但是在Windows系統下就沒有這方面的控制。
閱讀更多
網站的視覺設計及內容,是能否吸引訪客的重要因素之一,但也不能因而顧此失彼,造成網站效能的瓶頸。從過去的訪客行為研究分析指出, 等待一個網頁的呈現時間不能超過十秒鐘,但面對目前網頁內容多媒體化的現實挑戰,要達到這樣的目標,在前端頁面的設計上,也就需要多花 些心思。
針對網站效能最佳化歸納出以下方針,並舉例加以說明:
1. 減少需要發出HTTP Request的數量
當您設計的網頁中包含的元件數量越多,Client需要對網站伺服器發出的HTTP Request也會增加,同時也會延長網頁處理的時間。
2. 採用Content Delivery Network服務
由Mirror Image、Akamai、SAVVIS等業者所提供的Content Delivery Network(CDN,內容遞送網路服務),可以供應強大的全球網路基礎架構
...
閱讀更多
DNS軟體是駭客熱衷攻擊的目標,它可能帶來安全問題。本文提供了10個保護DNS伺服器最有效的方法。
一. 使用DNS轉發器
DNS轉發器是為其他DNS伺服器
完成DNS查詢的DNS伺服器。使用DNS轉發器的主要目的是減輕DNS處理的壓力,把查詢請求從DNS伺服器轉給轉發器, 從DNS轉發器潛在地更大DNS快取記憶體中受益。
使用DNS轉發器的另一個好處是它阻止了DNS伺服器轉發來自互聯網DNS伺服器的查詢請求。如果您的DNS伺服器保存了您內部的域DNS資源記錄的話,這一點就非常重要。不讓內部DNS伺服器進行遞迴查詢並直接聯繫DNS伺服器,而是讓它使用轉發器來處理未授權的請求。
二. 使用只緩衝DNS伺服器
只緩衝DNS伺服器是針對為授權功能變數名稱的。它被用做遞迴查詢或者使用轉發器。當只緩衝DNS伺服器收到一個回饋,它把結果保存在快取記憶體中,然後把
...
閱讀更多
在現今IT產業人力市場競爭日益激烈的時代,許多人認為學會多種程式語言也是在某職時可無往不利的一個方法。就像語文能力一樣,電腦程式能力也有助於自我推銷。本篇介紹美國從事網頁設計的開發人員可選擇的十項主要的程式語言。
據美國每週電腦報《eWeek》報導,雖然有些應用程式的研發者在因緣際會下,熟練了某種特定語言可導致他們一夕致富。但是很多長期從事程式設計的工程師均認為,每一段時間就須學習一種新的程式語言是成為一位成功的網路開發設計師的必要條件。
聖地牙哥軟體開發公司Interknowlogy.com總裁哈克比(Tim Huckaby)提及一位師字輩程式老手的經驗談到:程式語言僅僅是程式語言,你是不是好的程式設計師並不要緊,所用的語法才是關鍵。
儘管其公司工作忙得令人暈頭轉向,哈克比在應徵人才時,即使要招募對特定程式語言有基本認識的新手,依然是困難重重。他說:「我們求才若渴。我們要找剛從學校畢業,有學過『.Net』或是Java程式且態度及能力不錯的人才。因為具有這些條件,我們可以針對『.Net』再加以訓練。」
Grandview軟體開發主管杜奎恩(Wanyne
...
閱讀更多
網頁程式是指使用網頁程式語法互動式的網頁,一般又稱動態網頁,動態網頁是指網頁的內容是否可根據某種條件的改變而自動改變。 如計數器就是動態的,當有人點擊我們的網頁時,計數器的數值會自動累計增加;論壇也是動態的,當用戶在論壇上發佈訊息時,網頁內容會自動更新,顯示出新發佈的信息及相關回覆等等..。 需要注意的是GIF動畫和Flash動畫是靜態的。因為,這些動畫一旦製作完成後,就不會再改變了,儘管Flash動畫可以響應用戶的事件。
在WebServer端,有:
- PHP(Hypertext Preprocessor)
- ASP(Active Server Pages)
- ASP.NET
- CGI(Common Gateway Interface,公用網關介面)
- Perl(Practical Extraction and Report
...
閱讀更多
不管是半途而廢,還是抽不出時間,最終都要把學到的東西落實到應用中去。近年來,許多人對學習程式設計產生了興趣。他們要麼透過線上課程開啟了學習,要麼透過面對面授課,當然還有一些人淺嚐輒止。
像 code.org 、 codecademy 和 freeCodeCamp 之類的網站越來越受歡迎--畢竟網路上有大量的程設資源。但是學習程式設計並不容易。以下就是一些我們在學習中會面臨的挑戰:
一. 每天都找不到合適和足夠的時間
如果您正在自學程式語言,很可能您還有其他的事情要做。您可能有一份兼職或者一份全職工作,或者要居家照顧小孩。關鍵是很難抽出空來。那麼,您如何每天撥出時間來學習程式設計呢?有些人可能會說:「如果您肯下功夫,總能找到時間。」說實話,我同意。所以問題就變成了:「您每天應該花多少時間學習程式設計?」如果每天只能抽出半個小時,那還能學到東西嗎?
這個問題只有您自己才能回答。每天應該學多久的程式設計,這個很難有確切的答案。有些人建議時間不要太長-- 15 分鐘就夠了。另一方面,我也聽說過有些人在一年左右的時間每天學習 9 到 10
...
閱讀更多
有很多理由都能說明為什麼我們應該寫出清晰、可讀性好的網頁設計程式。最重要的一點,程式您只寫一次,但以後會無數次的閱讀。當您第二天回頭來看您的網頁設計程式碼時,您就要開始閱讀它了。當您把程式碼拿給其他人看時,他必須閱讀您的程式碼。因此,在編寫時多花一點時間,您會在閱讀它時節省大量的時間。現在,讓我們把每個小點展開來詳細講一下。
- 儘量保持方法簡短
儘管很多人都遵循這個規則,但它仍然非常的重要。您寫的方法要始終能在一個螢幕裏放得下。如果您需要去滾動螢幕,這會分散您的注意力,而且您看不到整個的上下文。最佳長度是5-20行,這根據您的情況而定。當然,getters/setters 通常是一行程式碼的方法,但與其說它們是真正的方法,不如說它們只是存取工具。
- 永遠永遠不要把同一個變數用於多個不同的目的
一個變數應該始終只為一個目的服務。通過使變數常量化(C++裏的const,
...
閱讀更多
從事 App 使用者經驗設計,偶爾參考別人的使用者介面設計和風格,其實是一種很好的啟發,雖然有人會說這會扼殺創意,甚至擔憂以後所有的 App 可能都會長得一樣。但前人走過的路,的確有許多值得借鏡學習之處。Medium 一篇 《Misused mobile UX patterns》為此整理出五個面向,提供設計師們參考。
不要讓導航功能被隱藏
有關漢堡 圖標的討論,已經至少有超過 50 萬篇的文章出現在網路,且多數設計師對這件事的看法都是持反對的意見。而主要的反對原因,並非圖標本身,而是因為它隱藏了圖標本身具有的導航功能。儘管如 此,漢堡圖標當初的設計,最主要想解決的問題就是有時資訊太過豐富,設計師無法一次將其全放進手機有限螢幕的空間裡的問題。
但實驗證明,完整標示的目錄選單,所增加的用戶參與度和滿意度,甚至為 App 所帶來的收入卻是增加的。這也是為什麼現在許多設計師都開始將自家的 App,從漢堡圖標改為可標示完整功能的目錄選單。
不要設計意義不明的圖標
好
...
閱讀更多
閱讀更多
下面的是學C++時要注意的。
- 把C++當成一門新的語言學習(和C沒啥關係!真的。);
- 看《Thinking In C++》,不要看《C++變成死相》;
- 看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
- 不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是整合式開發環境,而我們要學的是一門語言;
- 不要放過任何一個看上去很簡單的小程式設計問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
- 會用Visual C++,並不說明您會C++;
- 學class並不難,template、STL、generic
...
閱讀更多
JSP (Java Server Page)與ASP (Active Server Page)兩者都是常用的動態網頁技術,也都是可以嵌入HTML中的程序,但兩者是有著本質的不同,主要從以下幾個方面對其進行比較:
- Web服務器的支持:大多數通用的Web服務器如:Apache、Netscape和Microsoft IIS都支持JSP頁面,只有微軟本身的Microsoft IIS和Personal Web Server可以支持ASP。
- 平台的支持:JSP具有平台獨立性,只要是一般的Java程序可以運行的平台,都支持JSP程序。Windows平台可以很好的支持ASP,但ASP對於基於Win32逐漸模型的依賴,使得它難於一直到其它平台上。
- 組件模型:JSP是建立在可重用的、跨平台的組件(如:JavaBeans、Enterprises JavaBeans
...
閱讀更多
有時候在寫PHP時,若是遇到了除法就是一個問題,為什麼呢?因為PHP沒有整數除法,所以除出來的東西會有小數點,但是需要使用的地方並不需要小數點,這時候該怎麼解決這樣的問題呢?上網爬了一下文章,好像有個「floor」的函式可以使用,經過使用後,問題確實解決了,所以就發這篇來筆記一下,以後忘記可以來參考。
如同其他語言一樣,PHP也有幾種除法,像是取餘數與浮點運算之類的,不過卻沒有整數除法。爬了一下網路資料,發現有個函式「floor」可以使用,所以到PHP官方網站看了一下,這個函式就是取整數的函式。
至於使用方法呢?那就是把你的數字丟到函式中就會輸出整數部分了,以官方的例子來看,就是:
<?php
echo floor(4.3); // 計算後為:4
閱讀更多
連接Mysql 4.1、Mysql 5.0等版本的資料庫系統,php程式必須在連接資料庫的寫法中,加上這三行
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");
因此後來Collablog程式也做了修改,這樣才能確保中日韓等雙字元語系文字存進資料庫是utf-8編碼,網頁顯示也是utf-8編碼,達成前後端一致性。
但由於優格網之前就已經有很多文章了,並沒有在一開始使用utf-8指定的方式寫文章到資料庫裡面,不過網頁顯示都會是正常的utf-8字元,這是php程式轉換的功勞。
所以優格網資料庫裡面文章的存法會是這樣
工作之餘連續ä¸æ–·åœ°å˜—試(正確的字元是「工作之餘連續不斷地嘗試」)
...
閱讀更多
演算法描述
MD5以512位元分組來處理輸入的資訊,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
在MD5演算法中,首先需要對資訊進行填充,使其位長對512求餘的結果等於448。因此,資訊的位元長(Bits Length)將被擴展至N*512+448,即N*64+56個位元組(Bytes),N為一個正整數。填充的方法如下,在資訊的後面填充一個1和無數個0,直到滿足上面的條件時才停止用0對資訊的填充。然後,在這個結果後面附加一個以64位元二進位表示的填充前資訊長度。經過這兩步的處理,現在的資訊的位元長=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足後面處理中對資訊長度的要求。
MD5中有四個32位元被稱作連結變數(Chaining
...
閱讀更多
解答linux技術支持中常見的十一個問題,例如多重啟動、性能調整、檔同步、改變檔清單預設顯示方式、多台機器的時鐘同步、郵件備份,等等。
一. 我想要讓Apache為大量的連接提供服務。為了減小創建進程所需要的時間,我把Apache子進程數量配置為固定的1000。系統的性能很差,有時甚至拒絕連接。你有什麼建議嗎?
A:看來你很可能遇到了一個通常稱為“thundering herd”(異乎尋常地聚集)的問題。Apache和Linux的文檔都詳細地說明了這個問題,你可以用幾種方法來解決它。
在Linux中,這種情形通常從進程“wake”(喚醒)發展而來。當一個新到達的連接要求Apache/Linux提供服務時,系統向所有正在休眠的進程發出通知。這時,所有這些進程會試圖獲得對新連接的控制權。但是,它們之中只有一個能夠獲得成功,所有其他進程都將失敗並轉入休眠狀態。這被稱為“wake all”(全部喚醒)。Linux
...
閱讀更多
date:顯示日期
who:顯示以登錄的使用者,who am i,我是誰,呵呵……,顯示輸入命令的使用者資訊
exit:退出 C Shell用 logout
cal [[month] year]:顯示日曆,感覺挺爽,像下面的格式
November 2008
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
pwd:當前工作目錄
cd:不用帶 ..就是返回上級目錄,以前用Widnows打這個命令總是不空格,現在還老是犯毛病,這下好了
ls:列出目錄中的檔和資料夾,在這我學到了用“.”這個目錄,還有就是又熟悉了一下萬用字元
cat:顯示檔內容
wc:檔內容的一些統計值
mesg,write,wall:這些本機登錄用戶之間通信的命令
passwd:修改密碼
file:查看檔案類型的
...
閱讀更多
嵌入式即時操作系統(RTOS)是嵌入式系統的基礎運行平台,是嵌入式系統穩定、可靠工作的基礎,其功能和性能的好壞將直接影響嵌入式系統的功能和性能。嵌入式時實作業系統目前應用的範圍越來越廣,逐漸成為今後作業系統開發和發展的主要方向。其應用領域大到工業控制,小到個人消費用品如數碼相機,手機,PDA等無處不在,通信系統也大量的使用嵌入式即時操作系統作為作業系統平台。
閱讀更多
未來的家庭和辦公室都離不開連接體驗(connected experience),這些連接將從現有的PC擴展到包括電視、GPS和VoIP在內的更多設備,催生新一代不僅可享受服務,而且能與服務互動的設備。
時至今日,資訊不再只是儲存於PC和伺服器中並等待設備來存取。包括PC、電話、視訊轉換器、遊戲機、音樂播放設備在內的所有設備,已經能通過某種方式連接起來。使用者希望這些設備能夠有效連接,以便能隨時隨地在各類設備上獲得想要的工具、資料、資訊甚至娛樂體驗。
未來5年內,可能將有更多適合消費者和企業使用的互聯產品上市。在這個互聯環境下,供應商提供的服務也趨向多元化,所有服務都具備雙向傳輸能力,而系統中的所有設備也都必須具備智慧化能力,才能為消費者提供特別的體驗。
以三星最近開發的一款數位相框為例,該產品採用Windows Embedded CE平臺,並運用Visual Studio 2005提供的工具和.NET緊密框架。這種數碼相框既能利用Windows Media Connect通過家用網路從本地SD存儲卡提取照片,也能連接到Flickr、Windows Live
...
閱讀更多
守護進程是定期被喚醒、檢查你的系統,然後執行某些特定功能的駐留程序。它們一般不接受任何輸入,通常也不產生任何輸出。你的 linux 系統可能以設置了運行相當多的守護進程。其中大多數可以選擇(或不選)通過以 root 身份運行程式 ntsysv(RehHat),然後選擇相應項目。
每個守護進程的簡短描述可以在 ntsysv 中按 得到。如果你需要的守護進程沒有在 Ntsysv 中列出來,你得放入 RedHat/Mandrake 的安裝 CD,安裝相應的軟體。Ntsysv 的另一個選擇可以是 tksysv(以 root 身份從 X 終端輸入),它可能更靈活,但也可能更複雜(它能讓你在每一個運行級別上設置守護進程)。另外,單一但更強大、靈活、難以使用的工具是 /sbin/chkconfig。
這裡有一個包含簡短描述的常見守護進程清單:
anacron –
...
閱讀更多
創建和銷毀對象
1.考慮用靜態工廠方法(返回類的實例的靜態方法)代替構造器
2.遇到多個構造器參數時要考慮用構造器
3.用私有構造器或者枚舉類型強化Singleton屬性
4.通過私有構造器強化不可產生實體的能力
5.避免創建不必要的物件
6.消除過期的物件引用
7.避免使用終結方法
對於所有物件都通用的方法
8.覆蓋equals時請遵守通用約定
9.覆蓋equals時總要覆蓋hashCode
10.始終要覆蓋toString
11.謹慎地覆蓋clone
12.考慮實現Comparable介面
類和介面
13.使類和成員的可訪問性最小化
...
閱讀更多
1. 別用new Boolean
在很多場景中Boolean類型是必須的,比如JDBC中boolean類型的set與get都是通過Boolean封裝傳遞的,大部分ORM也是用Boolean來封裝boolean類型的,比如:
ps.setBoolean("isClosed",new Boolean(true));
ps.setBoolean("isClosed",new Boolean(isClosed));
ps.setBoolean("isClosed",new Boolean(i==3));
通常這些系統中構造的Boolean實例的個數是相當多的,所以系統中充滿了大量Boolean實例小物件,這是相當消耗記憶體的。Boolean類實際上只要兩個實例就夠了,一個true的實例,一個false的實例。
Boolean類提供兩了個靜態變數:
public static final Boolean TRUE = new Boolean(true);
...
閱讀更多
SQL讀取速度變慢的原因很多,常見如下幾種:
- 沒有索引或者沒有用到索引(這是讀取慢最常見的問題,是程式設計的缺陷)。
- I/O輸送量小,形成了瓶頸效應。
- 沒有創建計算列導致讀取不優化。
- 記憶體不足。
- 網路速度慢。
- 讀取出的資料量過大(可以採用多次讀取,其他的方法降低資料量)。
- 鎖或者鎖死(這也是讀取慢最常見的問題,是程式設計的缺陷)。
- sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
- 返回了不必要的行和列。
- 讀取語句不好,沒有優化。
可以通過如下方法來優化讀取
...
閱讀更多
在平時我們的網站管理工作中,經常在訪問一個網站時經常遇到如:301重定義錯誤,404錯誤,500錯誤這類形的HTTP 狀態碼的返回資訊,那麼這些代表什麼意思呢?
什麼是HTTP 狀態碼
如果向您的伺服器發出了某項請求要求顯示您網站上的某個網頁(例如,當用戶通過流覽器訪問您的網頁或在 搜尋引擎抓取該網頁時),那麼,您的伺服器會返回 HTTP 狀態碼以回應該請求。 常見HTTP 狀態碼說明:
200
請求已成功,請求所希望的回應頭或資料體將隨此回應返回。
301
...
閱讀更多
作為網路的一個重要應用,資料庫在網站建設與網路行銷中發揮著重要的作用,與普通網站相對而言,具有資料庫功能的網站網頁我們通常稱為動態頁面,也就是說頁面不是一層不變的,頁面上內容(或部分內容)是動態生成的,它可以根據資料庫中相應部分內容的調整而變化,使網站內容更靈活,維護更方便,更新更便捷。那麼,針對於企業網站,資料庫究竟有什麼作用,又有什麼限制?
一、資料庫的作用
1、收集資訊
...
閱讀更多
一台電腦與與雲相連,即代表此電腦連接至網路 Internet,透過 Internet 存取服務(Services)或內容(Content),比如電子郵件服務(Web Mail)、即時通訊服務(IM)、網頁內容(Web Pages)等。由於電腦書籍習慣用雲朵的圖案來表示網路配置圖,久而久之大家就將網際網路(Internet)用雲朵(Cloud)來比喻。
雲端運算不是技術,它是概念。本身並不代表任何一項資訊科技的技術,它是一種電腦運算的概念,而一種概念就會有許多不同的方式去實踐,這個時候才會有不同的技術衍伸出來。本質上就是代表分散式運算 (distributed computing) 的概念。而分散式運算說穿了,就是讓一些不同的電腦同時去幫你做事情、進行運算,所以你有兩台電腦也好、十萬台電腦也好,只要你有超過一台電腦,而且讓他們可以互相溝通,一起同時幫你做事情,恭喜你,這就是分散式運算。
因此雲端運算代表的就是運用網際網路來做資料的運算與處理的一種概念。維基百科對雲端運算(cloud
...
閱讀更多
愈來愈多的朋友捨棄逐一製作HTML頁面,而採用各種套裝的內容管理系統(Content Management System)架設屬於自己的個人站台,或是使用如PhpNuke、Xoops之類的入口(portal)網站系統,如Movable Type、WordPress之類的網誌(weblog)工具,或如PhpBB之類的論壇程式。
雖然說我個人相信內容會比平台來得重要,但是總要有個平台作為內容的載具,擁有方便的平台也可以幫助內容獲得更自由、更亮眼的揮灑,甚至我自己都在改寫BBS以及WordPress這類的發表平台,所以在網路上,也經常可以看到許多朋友討論不同系統之間的良窳優劣,或是常看到許多朋友試用各種不同平台的心得(像Schee與tm便有不少的相關報告)而最近將我加入MSN好友名單者,幾乎都是在問我WordPress到底好不好用…怎樣挑選一套合用的內容管理系統該是許多朋友相當關心的話題。
而我這兩天剛好讀到OpensourceCMS.com站台負責人Calvin C. Sov(我猜想他可能是新加坡人?)寫了一篇How to Choose a CMS,寫得還不錯,共有PDF、Microsoft
...
閱讀更多
閱讀更多
在現在Web 2.0主要涉及到的技術名詞中,Mashup、Ajax、RSS、WiKi、Tag是幾個被提及最多的名詞。儘管成熟於Web 2.0時代,但它們都不能算是最新的電腦技術或網頁設計技術。
Mashup的直接譯義是網路聚合應用,即將一個或多個資訊源整合起來的網路應用。Mashup最常見於線上地圖的應用,如某個在Google Maps提供的API基礎上延展出新的服務。對應用開發者來說,Mashup帶來的最大優點是簡單、快捷。
Ajax是非同步JavaScript和XML的簡稱,通過這一技術實現了無需刷新整個頁面,而只更新網頁中的一部份資料的功能。對用戶來說,使用了Ajax的網頁較以往的靜態頁面有了更多的美觀性和互動性。此外由於實現了局部更新,伺服器與瀏覽器之間交換的資料也大大減少,使互動相應更為迅速。
RSS是Really Simple
...
閱讀更多