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