hdfoo站点开发笔记
為了安全,也要兼顧編輯器切換管理 開發時不必管目錄名稱的事, 只是在部署的時候,才修改應用目錄和tp目錄的名字就行了.
為了提高tp的加載效率, 始終給app和tp以絕對路徑.就是以 realpath來定位
realpath返回的就是 一個絕對路徑, 在lx中是以 斜杠 根樹開始的. 參數可以是文件名, 也可以是目錄名稱. 返回結果: 如果是文件的話, 末尾會帶文件名, 如果是目錄的話,即使參數末尾帶斜杠, 也會刪除結尾的斜杠.
所以, 如果定義 THINK_PATH的話, 末尾要加上/ define('THINK_PATH', realpath('./Think').'/');
vim的f 和 t鍵的區別: f是正好調到指定的字符 上, 而t: to 是跳轉到指定字符的前面
0和^的區別: 0是第一個字符,不管是不是空白字符; ^是跳轉到第一個非空白字符. 跳到行的最后 就只有一個符號了$
在vim中, 除了對行的操作外, 將 操作命令 y,d,c,x 等和 跳轉條件 f, t等 相結合, 操作就不只是以行為單位了, 可以想到哪里就操作到哪里. 比如 dt)...
vim中,字的含義, 一個英文單詞是一個字, 連續的多個漢字也只能算一個字. 文本的單位 有 字w, 行j k等這些, 既是文本 的單位, 同時 也是vim的跳轉命令.
所以, 像 操作命令 d, c,y, x 等 和 文本內容的單位比如 w j k 等符號之間的位置關系: 應該是: 操作命令+倍數+單位: 比如: d2w, d4j, y2w等等,
而不是: 倍數+單位+操作命令, 比如 : 4wd: 因為如前所說, 4w它是已經是一個命令了, 會向后跳轉4個字, 這時命令就已經執行了, 再到d的時候, 其實也就只有一個 單字符 d命令了, 這個肯定就不是原來的本意了.
非常重要的一個思維就是, html中的結構, 盡量不要用手工符號 比如 br等 去調整, 而是要用 "語義化的標簽" 去組織 內容. 比如p, span, div, 字體大小等方面,盡量不要用 font size之類的, 而是用 h1, h2...
chmod的格式: chmod [who] [+-=] [mode] 文件1 文件2...
一般來說, 文件/目錄的創建者, 自動成為所有者, 自動具有 "讀寫執行" 的權限
[root@localhost html]# chmod o+w Honda Public -R
一般來說, 文件在本地(控制臺) 訪問, 讀寫, 編輯 都是以 owner的身份進行的, 只是在以 網絡/web/localhost的 方式 訪問時是以other(比如apache)身份訪問的.
要讓apche能夠訪問web根站點以下所有目錄(解決linux寫權限問題), 只是要求從 html目錄(localhost網站根) 開始->到其下 所有子目錄的訪問權限 能被apache所 "讀 + 寫"就行了, 不必要求從/var/www/ 的所有逐級目錄都被apache所讀寫.
- 父目錄下, 可以存放 和父目錄所有者不同的 其他所有者的文件或子目錄.
==================================
查看apache httpd載入了哪些模塊, 使用httpd -M 命令
查看到已經載入了 rewrite_module
然后在 html根目錄設置: AllowOverride All.
在tp的入口文件設置 define('DIR_SECURE_FILENAME', 'deny.htm') 以及deny內容的時候, 并不會自動 關閉apache的目錄列表顯示功能, 這個設置 只是在目錄下生成對應的deny.htm文件和寫入內容. 要禁止顯示目錄列表, 還的要自己在httpd.conf中設置:
兩種設置方法:
是設置<IfModule dir_module> DirectoryIndex index.php index.html (在這里加入deny.htm文件, 當訪問目錄時,如果下面沒有其他index文件, 就會顯示這個deny.htm文件的內容 Access Denied)</IfModule> 這個對于 所有的目錄都適用 是最簡單有效的方法
另一種方式就是設置 某個目錄的Options, 去掉Indexes索引(顯示功能): 不寫Indexes, 或者在前面加減號-Indexes.
注意 jk 等 "行" 的倍數和 w b等 "字"的倍數的不同, 因為 j k本身就要向上/下一行了,所以, 如果 2j, y2j 將會 復制 3行...
關于分頁類的使用
分頁類, 頁碼的顯示, 是一個包含鏈接的字符串, 這個頁碼字符串要用 $page->show() 方法生成并傳遞到模板
頁碼中的字符串, 可以用類的 setConfig方法去設置
分頁類的作用有兩個: 一個是生成(通常在顯示內容下方)的頁碼鏈接字符串; 二個是 根據limit決定 傳遞到模板的數據記錄范圍.
主要有三步: 初始化類new \Think\Page($count, 10); 寫分頁字符串; 寫limit連貫方法. 其中 limit的參數不能寫死了, 因為這個要被修改的.$limit=$page->firstRow . ',' . $page->listRow 這兩個page對象的兩個屬性.
page類用到了類似ajax的思想: 將單擊 產生的 頁碼號傳遞到php后臺的操作方法中, 操作方法根據頁號($_GET['page']), 從數據庫中查詢對應的內容, 在返回給前段的ajax程序, 最后顯示.
在 模板中 的函數 U方法 生成url地址時 中, 要使用 原生的php語法, 不能再用模板語法了, 比如數組只能使用中括號, 不能使用點號語法, 和模板輸出. 又比如: success和error方法的 跳轉 地址就是用 U方法生成的
通常在實際開發中, 除非特別需要, 都要盡量保持系統的默認值. 不必去費不必要的精力去改一些不必要的默認值.
mysql中, 無法刪除test數據庫?
- 如果是非事務型的還是MyISAM執行效率好,對于一般的項目,那還是MyISAM比較給力了。
- 摘抄自: http://www.wo81.com/tec/db/mysql/2014-05-12/214.html
數據庫中的db.opt是記錄數據庫所用的 默認字符集和校驗規則.
在mysql的數據庫中, 只有一個單詞使用 下劃線,就是 auto_increment, 其他都不使用下劃線,比如 primary key.
單獨使用命令來設置主鍵: alter table foo_table add constraint pk_foo primary key(id, name);
url編碼?
根據rfc的規定, 在url中只能包含字母\數字,和一些特殊符號(包括 .-_'$?&*等,只有單引號沒有雙引號), 但是這些特殊符號只能是在網址中,不是說在 查詢字符串(傳參中), 如果這些特殊符號在query string中, 就要對它們進行編碼處理
rfc沒有對編碼做統一的規定, 而是讓瀏覽器自己來做決定,所以就比較混亂. 比如ie和ff就有很多不一樣的地方.
可以通過js腳本來對url做統一的處理, 即: 不讓瀏覽器有插手的機會, 讓js來處理(漢字和特殊字符). 主要包括兩個函數:
encodeURI() 和 decodeURI()
使用模板包含include需要注意的事項?
被包含的模板文件本身, 并不會自動調用對應的控制器方法, 也就是說, 被包含的其他模板文件中的變量賦值需要在當前操作中完成. 比如: 在foo1.html中包含foo2.html <include file="action/foo2" /> 如果要在foo2.html中輸出變量 {$bar}, 那么這個$bar變量需要在foo1對應的操作中去完成。
模板包含的時候, 還可以傳遞變量, 在被包含的模板中使用 傳參變量時, 用 [title] 中括號的方式。 是不是只能傳遞title和keywords參數,其他任意參數都可以嗎?
由于模板解析的特點, 總是從入口模板開始解析的, 如果被包含的 外部模板有所更新 , 這種更新并不會自動表現在入口模板中, 入口模板引擎并不會重新編譯, 除非你在調試模式下, 或者緩存已經過期. 所以, 如果在部署模式下, 修改了被包含的 外部模板文件后, 要把模塊的緩存目錄清空, 否則改變不會生效.
雜項
trim不但能過濾(去掉 空白字符), 而且還可以在 第二個參數 $charlist 中指定要 過濾 / 去除掉的 其他字符列表. 注意這些字符列表 表示的字符 只能是 兩邊 靠邊的字符或字符組合, 對中間的字符沒有影響,比如: echo trim('hello world', 'hld' 將輸出 "ello wor" 中間的ll不會被刪除. 這個用法在刪除字符串兩端的{} 符號比較有效
guid和uuid的區別?
uuid是osf "軟件基金會"統一規定的標準,而guid是ms對uuid的一種實現
uuid是用 4個橫線對 32個字節(32個16進制字符)的分隔得到的 36個字節.
php的date函數的特殊用法?
date是一種時間格式函數, 本身并沒有時間. 是把時間戳格式化為更易讀的日期和時間.
通常date函數, 需要傳入 一個時間戳 作為第二個參數 比如date('ymd', $time); . 但是它 的格式是: date('日期時間格式', [時間戳]); 所以, 這個時間戳是一個 可選參數, 是可以省略的. 如果省略,就是代表的 當前時刻的時間戳. 而在很多時候, 我們處理的就是 當前時刻的時間戳. 所以, 可以看到 date('Y-m-d')的用法.
更重要的是, 日期格式, 不一定是我們常用的 y-m-d, 有的時候, 我們只需要 當前的年份, 月份,或日期中的一個數字, 這就要使用 date的單字符, 單字母(沒有數字)格式, 比如: date('Y'),date(m,和d都是兩位數字,比如05 月份, 08日期. 表示星期, date('w')返回星期幾的數, 而date('l') (注意是L的小寫, 不是數字1)則返回星期的英文單詞比如Wednesday.
再比如 自動版權年份: @ 2010-<?php echo date('Y') ?>
===========================================
編寫Page類進行分頁的實例:
mysql中的信息顯示用show命令, 后面 要跟 關鍵字 , 不能跟函數, 如果要用函數, 需要用 select語句
- select version();
- show engines; 可以看出默認的是innoDB引擎
- show errors;
- show warnings; 顯示最后一條執行的sql語句的錯誤或警告, 注意都要用復數.
顯示錯誤和警告? - show variables;
- show status;
關于null和空字符串的區別? 這個是在php和mysql中多次遇到的問題了: null就是沒有, 就是根本不存在 null=not existing, 比如主鍵用
auto_increment的int, 你不想輸入, 那么就用null. 但是你不能用 '', 因為這兩個數據類型都不一樣. 空''字符串是string, 用來給int類型
的主鍵賦值, 肯定會產生warning.
這個警告是發生在 mysql 5.X以上的版本.
null可以給任何數據類型的 字段, 比如 int, 比如 char... ,任何類型的 變量賦值! 比如表示一個字段不為空, 就是 not null.
可以同時插入多個記錄, 但是在多個values 之間 要用 逗號進行分割!
生成xhtml類型的網頁, emmet使用的縮略詞是 html:xt, 注意是 xt, 表示 是html向xml過渡的類型, 即xml -trans, 所以是xt, 但不是xh, 要生成html5的網頁, 可以寫 html:5, 或者直接寫一個! 都可以.
表格本身也有一些有用的/ 直接的 屬性, 包括: 顏色 bgcolor, bordercolor, cellspacing, cellpadding (單元格的外邊距和內邊距).
page類的show方法, 返回的是, 分頁字符串: return "<div>{$page_str}</div>
總結
以上是生活随笔為你收集整理的hdfoo站点开发笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React开发(138):ant des
- 下一篇: 再谈Redis应用场景