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...

一般來說, 文件/目錄的創建者, 自動成為所有者, 自動具有 "讀寫執行" 的權限

  1. chmod默認只是對當前文件或目錄(只一層目錄), 修改訪問mode. 要對目錄下的子目錄遞歸修改權限, 要使用 -R或 --recursive
  2. 可以一次性的 修改多個文件或目錄, 而不必使用多個相同的命令來修改,這樣更快 chmod +x file1 file2 dir1
  3. who可以是多個用戶的組合,比如: ug+x
  4. 可以在一個命令中設置多個不同用戶的權限, 中間用逗號分隔, 比如: g+w, o+x
  5. 訪問模式還可以用 除了加號減號外, 還可以用等號. =u =g, 等, 表示跟所有者, 組的權限相同.
    [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中設置:

兩種設置方法:

  1. 是設置<IfModule dir_module> DirectoryIndex index.php index.html (在這里加入deny.htm文件, 當訪問目錄時,如果下面沒有其他index文件, 就會顯示這個deny.htm文件的內容 Access Denied)</IfModule> 這個對于 所有的目錄都適用 是最簡單有效的方法

  2. 另一種方式就是設置 某個目錄的Options, 去掉Indexes索引(顯示功能): 不寫Indexes, 或者在前面加減號-Indexes.

<Directory '/var/www/html/Foo'>Options  FollowSymLinks
</Directory>// 默認情況下, 上面的Foo下面的子目錄都不能索引列表顯示了, 比如: html/Foo/Bar/ . 但是如果你又顯式的 規定了其他子目錄的Indexes權限, 那么根據權限重寫, 覆蓋的原理, 下面的這個Common目錄又可以列表顯示了.<Directory '/var/www/html/Foo/Common'>Options Indexes FollowSymLinks</Directory>

注意 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
別的數據庫的frm,myd,myi文件直接拷貝過來即可打開,數據也都有,這意味著只要這些文件在,數據就不會丟失。(其中frm是表的結構信息, myd是表的數據記錄信息, myi是表的索引信息. 因此, 要移植/導入數據庫, 就將這三個文件拷過來. )不過貌似只有frm文件的表拷貝過來是打不開的。
請不要在數據庫文件夾下面創建文件或者目錄。否則會 刪除數據庫失敗..empty文件時wampserver安裝時自動創建的,可能是為了讓用戶不要刪除test庫才創建的吧。


數據庫中的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需要注意的事項?

  1. 被包含的模板文件本身, 并不會自動調用對應的控制器方法, 也就是說, 被包含的其他模板文件中的變量賦值需要在當前操作中完成. 比如: 在foo1.html中包含foo2.html <include file="action/foo2" /> 如果要在foo2.html中輸出變量 {$bar}, 那么這個$bar變量需要在foo1對應的操作中去完成。

  2. 模板包含的時候, 還可以傳遞變量, 在被包含的模板中使用 傳參變量時, 用 [title] 中括號的方式。 是不是只能傳遞title和keywords參數,其他任意參數都可以嗎?

  3. 由于模板解析的特點, 總是從入口模板開始解析的, 如果被包含的 外部模板有所更新 , 這種更新并不會自動表現在入口模板中, 入口模板引擎并不會重新編譯, 除非你在調試模式下, 或者緩存已經過期. 所以, 如果在部署模式下, 修改了被包含的 外部模板文件后, 要把模塊的緩存目錄清空, 否則改變不會生效.


雜項

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>

    public function  page(){header('Content-type: text/html; charset=utf8');$count= M('user')->count(); $rowPerPage=4;$page = new \Think\Page($count, $rowPerPage);$limit= $page->firstRow .','.$page->listRows; $data = M('user') -> order('id desc') -> limit($limit) ->select();$page->setConfig('first', 'fff');$page->setConfig('last', 'eeee');$page->setConfig('theme',    '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%  , <font color="red"> %HEADER%,  共 %TOTAL_PAGE%頁 </font>');$p = $page->show();$this->assign('data', $data);$this->assign('page', $p);$this->display();}'DB_TYPE'               =>  'mysql',     // 數據庫類型'DB_HOST'               =>  '127.0.0.1', // 服務器地址'DB_NAME'               =>  'test',          // 數據庫名'DB_USER'               =>  'root',      // 用戶名'DB_PWD'                =>  '',          // 密碼'DB_PORT'               =>  '3306',        // 端口'DB_PREFIX'             =>  'think_',    // 數據庫表前綴'DB_PARAMS'             =>  array(), // 數據庫連接參數    'DB_DEBUG'              =>  TRUE, // 數據庫調試模式 開啟后可以記錄SQL日志'DB_FIELDS_CACHE'       =>  true,        // 啟用字段緩存'DB_CHARSET'            =>  'utf8',      // 數據庫編碼默認采用utf8'DB_DEPLOY_TYPE'        =>  0, // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)'DB_RW_SEPARATE'        =>  false,       // 數據庫讀寫是否分離 主從式有效'DB_MASTER_NUM'         =>  1, // 讀寫分離后 主服務器數量'DB_SLAVE_NO'           =>  '', // 指定從服務器序號{__NOLAYOUT__}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /><title>page分頁</title>
</head>
<body><table width="80%" border="1" cellspacing="0"   bgcolor="#eff"  align="center"><tr><th>id</th><th>username</th><th>age</th><th>addr</th></tr><foreach name="data" item="u"><tr><td>{$u.id}</td><td>{$u.username}</td><td>{$u['age']}</td><td>{$u.addr}</td></tr></foreach></table>{$page}</body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278069.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278069.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278069.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文致謝

這篇致謝語&#xff0c;是我論文的最后一節&#xff0c;也是我放在最后的最后寫的內容。之所以拖到最后&#xff0c;是因為我不知道該用怎么的方式來結束我的論文。我想&#xff0c;要結束的不只是文章&#xff0c;還是研究生生涯&#xff0c;是我在廈門大學三年來的一切&#…

使用Azure Pipelines來實現Teams App的CI

我在之前的文章里介紹了如何一步步配置CI/CD來部署Teams App( 之前的文章 )&#xff0c;隨著Azure DevOps的發展&#xff0c;微軟推出了Azure Pipelines。在這篇文章中&#xff0c;主要介紹什么是Azure Pipelines&#xff0c;以及如何使用Azure Pipelines來進行Teams App的構建…

004-React入門概述

一、概述 參考地址&#xff1a;https://reactjs.org/docs/try-react.html 1.1、本地快速體驗 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World</title><script src"https://unpkg.com/react16/…

Python --- 卸載

python的卸載 1、? rpm -qa|grep python3.6|xargs rpm -ev --allmatches --nodeps ##強制刪除已安裝程序及其關聯 2、? whereis python3.6 |xargs rm -frv 允許你對輸出執行其他某些命令 3、? whereis python ##驗證刪除&#xff0c;返回無結果轉載于:https://www.…

開發Teams Tabs應用程序

什么是Teams Tabs Tabs是微軟Teams的一種十分有用的擴展方式。可以非常方便的和現有的網站或者網頁應用進行整合。具體的說明不在這里展開了。可以閱讀微軟官方的詳細說明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/tabs/tabs-overvie…

(轉)關于SimpleDateFormat安全的時間格式化線程安全問題

想必大家對SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一個非常常用的類&#xff0c;該類用來對日期字符串進行解析和格式化輸出&#xff0c;但如果使用不小心會導致非常微妙和難以調試的問題&#xff0c;因為 DateFormat 和 SimpleDateFormat 類不都是線程安全的&…

IDEA開發工具的學習

1.設置jdk的版本 &#xff0c;快捷鍵&#xff1a;ctrl shirt alt s 打開項目的設置&#xff0c;選擇Project 進行 jdk版本的設置。 2.鼠標移到項目上&#xff0c;右鍵&#xff0c;Show in Explorer 定位到當前項目對應的文件夾中 3.每次關閉項目時&#xff0c;需要手動選擇Fi…

順利達成微軟HacktoberFest 2018

昨天收到郵件&#xff0c;我的HacktoberFest 2018獎品終于從美國寄出來了&#xff0c;不知道飄洋過海多久可以寄到。 今年的HacktoberFest 2018除了微軟官方博客的宣傳&#xff0c;連Channel 9的美女主播也在TWC上大肆宣傳。 活動內容是在整個10月份需要給微軟的開源代碼貢獻5…

【轉載】Swift屬性Property

本文系轉載 原文鏈接 Swift的屬性與Objective-C中的屬性是一樣的&#xff0c;不同的是Swift細化了屬性的類型&#xff0c;另外除了類之外&#xff0c;結構體和枚舉也可以有屬性。 Swift中有這么幾種屬性&#xff1a; 存儲屬性(Stored properties)&#xff1a;存儲實例的常量和變…

leetcode13

題目&#xff1a; 阿拉伯數字轉化為羅馬數字 解題思路&#xff1a; 設置兩個vector&#xff0c;一個放羅馬數字&#xff0c;一個放羅馬數字所對應的阿拉伯數字&#xff1b; 從給定數字num的最高位開始&#xff0c;逐位轉化&#xff1b;n-2; 如果該位數字是1-3&#xff0c;則在結…

更新!在線狀態和用戶的共存模式保持一致

根據用戶反饋&#xff0c;我們正在改進&#xff1a;當組織同時使用Microsoft Teams和Skype for Business時的用戶在線狀態。通過此更新&#xff0c;路由和在線狀態將完全保持一致。為確保路由能跟隨用戶的在線狀態&#xff0c;所以在線狀態的更新現在會基于用戶的共存模式。 如…

centos上安裝supervisor來管理dotnetcore等應用程序

supervisor 介紹&#xff1a;這是一款用python編寫的進程管理工具&#xff0c;可以守護他管理的所有進程&#xff0c;防止異常退出&#xff0c;以及提供一個可視化的web界面來手動管理&#xff0c;打開關閉重啟各種應用&#xff0c;界面如下&#xff1a;關于在centos上安裝supe…

MyBatis Generator 生成器把其他數據庫的同名表生成下來的問題

MyBatis Generator 生成器把其他數據庫的同名表生成下來的問題2018年10月23日 20:47:48 莫彈彈 閱讀數&#xff1a;603MyBatis Generator : Table Configuration scheme.table matched more than one table在使用生成器生成代碼的時候遇到了這個錯誤, 現象就是某個類中出來了數…

新增功能!Trello個人應用程序登陸 Microsoft Teams

從初創企業到《財富》500強公司, Trello是團隊在任何項目上進行合作的視覺方式。在Microsoft Teams中, 我們發現圍繞項目進行大量對話和協作的方式。因此, 一個首屈一指的項目管理工具應該與團隊協作的終極樞紐進行合作, 以便讓員工更好地一起工作。 如你所知, 我們已經為Micr…

Linux bc 命令簡單學習

1. bash里面能夠實現比較簡單的四則運算 echo $((10*20)) 注意是 雙括號 $ 地址符號. 2. 但是比較復雜的 可能就難以為繼了 比如不支持精度 3. 所以這里面需要使用 bc 命令來執行相關的操作. man 內容: usage: bc [options] [file ...] -h --help print this usage and exit…

深入理解AbstractQueuedSynchronizer(AQS)

1. AQS簡介 在上一篇文章中我們對lock和AbstractQueuedSynchronizer(AQS)有了初步的認識。在同步組件的實現中&#xff0c;AQS是核心部分&#xff0c;同步組件的實現者通過使用AQS提供的模板方法實現同步組件語義&#xff0c;AQS則實現了對同步狀態的管理&#xff0c;以及對阻塞…

終于收到HacktoberFest的獎品啦

去年10月份給微軟repo提交了5個PR&#xff0c;達成了HacktoberFest 2018&#xff0c;今天終于收到了從美國到澳洲&#xff0c;飄洋過海&#xff0c;姍姍來遲的T-shirt&#xff0c;不過大小正好。算是新年禮物了&#xff0c;哈哈

三、SpringBoot-application.properties配置文件和application.yml配置文件

其實SpringBoot的配置文件有.properties和.yml兩種形式&#xff0c;兩種配置文件的效果類似&#xff0c;只不過是格式不同而已&#xff0c;孩兒們可以根據下面這幾種張截圖&#xff0c;通過對比端口號的配置&#xff0c;以及連接SQLServer數據庫的配置的書寫格式來自己體會兩者…

Teams中的快捷鍵讓溝通協作更加高效

使用Teams的快捷鍵可以幫助我們提高日常溝通協作的效率。 一、快捷鍵分類 1.常規2.導航3.聊天輸入界面4.團隊和會議 1.常規 功能桌面版本快捷鍵WebApp版本快捷鍵搜索CtrlECtrlE顯示命令CtrlSlash (/)CtrlSlash (/)gotoCtrlGCtrlShiftG開始新聊天CtrlNAltN打開設置CtrlComma …

線程間的協作(2)——生產者與消費者模式

2019獨角獸企業重金招聘Python工程師標準>>> 1.何為生產者與消費者 在線程世界里&#xff0c;生產者就是生產數據的線程&#xff0c;消費者就是消費數據的線程。 import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.…