该若木草

GaiRuoMuCaoXianKu


  • 首页

  • 标签37

  • 分类2

  • 归档19

Vue入门教程的几个小坑

发表于 2020-02-26 | 更新于 2023-10-21 | 分类于 杂谈

1.vue中data必须是一个函数。

虽然在教程的例子中大多直接写成这样:

1
2
3
data: {
message:'message'
}

但是如果在组件中这样写会导致数据影响到所有复用组件,所以应该改为这样:

1
2
3
4
5
data(){
return {
message:'message'
}
}

官网的例子可以很好的说明这个问题:https://cn.vuejs.org/v2/guide/components.html

1
2
3
4
5
6
7
8
9
10
11
12
Vue.component('button-counter', {
data: function () {
return {
count: 0
}
},
//改成这样试试
//data: {
// count: 0
//},
template: '<button>You clicked me {/{count/}} times.</button>'
})
1
2
3
4
5
<div id="components-demo">
<button-counter></button-counter>
<button-counter></button-counter>
<button-counter></button-counter>
</div>

2.组件中的template必须被html标签包裹。

上面的例子,如果去掉标签就不显示了,比如像这样:

1
template: 'You clicked me {/{count/}} times.'

3.注意箭头函数()=>{} 与function()的区别。

箭头函数的this永远指向定义函数的环境,而function中指向的是调用该函数的对象。比如官网上的这个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
new Vue({
el: '#app',
data () {
return {
info: null
}
},
mounted () {
axios
.get('https://api.coindesk.com/v1/bpi/currentprice.json')
.then(response => (this.info = response))
//如果改写成这样就会失败
//.then(function(response){this.info = response})
//非要用function那就只能这么写
//.then(function(response){that.info = response});
//var that = this
}
})

CentOS 6.5修改默认ssh端口

发表于 2019-11-16 | 更新于 2023-10-21 | 分类于 杂谈

重装了下系统,在修改默认ssh端口时碰到点问题,本来挺简单的一件事搞了半天才弄好。

修改过程第一步,增加端口:

1
vi /etc/ssh/sshd_config

把里面的#Port 22修改为Port 22顺便在下面增加一条Port 1234。保存退出后重启:

1
service sshd restart

接下来编辑防火墙:

1
vi /etc/sysconfig/iptables

在里面增加一条:

1
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1234 -j ACCEPT

保存退出重启:

1
2
service iptables restart
service iptables save

尝试用新端口登录,如果没问题就可以删掉原先的Port 22和-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT。

就是这么简单可偏偏出问题了:连不上。

用netstat命令看到端口没开,重启重装都没用,最后发现需要把端口设定为1024以上就可以了,网上的说法可以通过关闭selinux解决,不过奇怪的是之前同样的系统下是可以修改为1024以下的,重装之后就不行了。

解决了端口问题,尝试连了一下依然失败,又是一顿折腾,最后发现是防火墙编辑后保存失败,这一点也挺奇怪的,因为在网上搜索的时候看到过一个帖子说过保存失败这个问题,他的解决方案是先restart然后save,我也确认过好几次文件编辑内容,反复重启restart和save,结果还是这里出问题了。

用Xshell连接AWS的EC2

发表于 2019-09-15 | 更新于 2023-10-21 | 分类于 杂谈

如何注册AWS,如何启动EC2就不写了,需要验证下卡,剩下的就是各种下一步接下一步,实在不清楚网上教程一大堆。这里只记录下如何用Xshell连接到已运行的EC2。

名称:随便起一个比如“aws001”。

主机:填EC2实例给的公有IP。

端口:22。

在用户身份验证里把方法改为“Public Key”,用户名如果是按照网上教程里推荐的那样选的是 Ubuntu 系统,那这里就填“ubuntu”,其他的可以试试“ec2-user”,“root”或者其他系统名。

用户密钥里选择在启动实例时提示下载的.pem密钥文件,然后确定。

之所以写这个因为第一次用AWS时,在用户名这里卡了好久,几乎把想到的都试了一遍,最后发现是系统名。

其实事后发现官方说明里有写,只是我没看… (官网说明)

简单自定义WordPress登录与注册界面

发表于 2019-08-29 | 更新于 2023-10-21 | 分类于 杂谈

想在不添加第三方插件的前提下,稍微改一下WordPress登陆注册界面 让他能更符合自己的需求。

页面原本只包括了用户名和邮件地址两项,用户输入注册信息后提示去邮箱激活完成注册 大概就是这么个流程。不少插件提供了跳过验证直接注册功能,不过这样可能会造成大量垃圾账号,而且保留一个有效的联系方式还是必要的。手机验证目前来说有点难,需要通过第三方服务实现,以后有需求了再说。

修改页面logo,背景和样式

1
2
3
4
5
6
//通过自定义CSS修改logo和背景等内容
function custom_login() {
//由于是采用插件模式开发的,所以css文件位置被设定在插件目录下
echo '<link rel="stylesheet" type="text/css" href="' . plugin_dir_url( __FILE__ ) . '/login_style.css" />';
}
add_action('login_head', 'custom_login');

剩下的就是编辑login_style.css定制样式。

修改logo的链接地址

1
2
3
4
5
//将LOGO链接改为网站首页
function custom_logo_url() {
return get_bloginfo('url');
}
add_filter( 'login_headerurl', 'custom_logo_url' );

添加注册页表单项

1
2
3
4
5
6
7
8
9
10
11
12
//添加一个性别选项到注册页
function custom_login_gender() {
echo '<p><label for="user_gender">性别<br />
男性:<input type="radio" name="gender" id="user_gender" value="male" />
女性:<input type="radio" name="gender" id="user_gender" value="female" />
</label></p>'; }
add_action('register_form', 'custom_login_gender');
//把输入的值保存到数据库
function custom_gender_save($user_id){
if ( isset( $_POST['gender'] ) ) update_user_meta($user_id, 'gender', $_POST['gender']);
}
add_action('user_register', 'custom_gender_save');

“gender”的值会被保存到数据库的“wp_usermeta”表里,现在这项为非必填项,不管什么值都能注册成功。如果想做成必填项,还要再加上几行。

1
2
3
4
5
6
7
8
9
10
11
12
//验证一下输入
function custom_registration_errors($errors) {

if ( empty( $_POST['gender'] ) || ! empty( $_POST['gender'] ) && trim( $_POST['gender'] ) == '' ) {
$errors->add( 'gender_error', sprintf('%s : %s','错误','未选择性别。' ) );
//加上这句让表单抖起来
add_action( 'login_head', 'wp_shake_js');
}

return $errors;
}
add_filter( 'registration_errors', 'custom_registration_errors');

在注册页加上太多项挺影响体验的,没谁愿意注册个网站先得填一堆单子,但拿它来收集一些诸如ip,默认语言等不必主动填写的信息应该不错。其他次要信息可以放到验证邮件后或者让用户在个人页面提交。

评论系统HashOver的安装使用

发表于 2018-06-06 | 更新于 2023-10-21 | 分类于 杂谈

下载与安装

从GITHUB下载,目前为2.0开发版(hashover 2.0里2.0是名称的一部分,不是版本号,至少目前不是)。把hashover文件夹上传到服务器或者本地环境相对位置,编辑hashover/backend/classes/secrets.php中的这几项

1
2
3
4
5
6
7
8
9
10
11
// E-mail for notification of new comments
public $notificationEmail = 'example @ example.com';

// Unique encryption key (case-sensitive)
protected $encryptionKey = '8CharKey';

// Login name to gain admin rights (case-sensitive)
protected $adminName = 'admin';

// Login password to gain admin rights (case-sensitive)
protected $adminPassword = 'passwd';

hashover默认使用xml方式存储评论数据,如果使用数据库需要编辑hashover/backend/classes/secrets.php中的这几项,上面选择存储方式可以不管,之后在后台管理修改。

1
2
3
4
5
6
7
8
9
// General database options
public $databaseType = 'sqlite'; // Type of database, sqlite or mysql
public $databaseName = 'hashover-threads'; // Database name

// SQL database options
public $databaseHost = 'localhost'; // Database host name
public $databaseUser = 'root'; // Database login user
public $databasePassword = 'password'; // Database login password
public $databaseCharset = 'utf8'; // Database character set

hashover/backend/classes/sensitivesettings.php还有两项,一个是图片后缀,一个是域名管理,其中域名必填否则连不上,本地测试用就填”localhost”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Types of images allowed to be embedded in comments
public $imageTypes = array (
'jpeg',
'jpg',
'png',
'gif'
);

// External domains allowed to remotely load HashOver scripts
public $allowedDomains = array (
// '*.example.com',
// '*.example.org',
// '*.example.net'
);

之后访问“域名/hashover/admin/”按照之前填写的信息登录就可以管理了,后台有中文 功能也不多无需多言,使用就是在需要嵌入评论的位置加上

1
<script type="text/javascript" src="/hashover/comments.php"></script>

使用问题

试了试基本功能还算齐全,不过没有屏蔽词功能,目前没文档,没安装向导 错误提示也比较简单直接,而且我测试的这个版本提示的文件位置还错了。。。

如果评论无法显示需要手动刷新,就去关闭异步加载即可。

使用Git push到Github

发表于 2017-11-03 | 更新于 2023-10-21 | 分类于 杂谈

下载git,地址:https://git-scm.com/downloads

打开git-bash,把自己的Repository git clone下来,稍作修改然后进入工程文件夹:

1
2
3
git add .
git commit -m "提交信息"
git push

push后会弹出要求账号密码的窗口,按要求输入即可。

可能遇到的几个小问题:

1
unable to auto-detect email address

按照提示输入:

1
2
git config --global user.email "邮箱"
git config --global user.name "姓名"

具体邮箱姓名随便填。

1
everything up-to-date

没有 git add .,或者没有 git commit -m “提交信息”,还有空文件夹不会上传。

1
! [rejected] master -> master (fetch first)

github上的内容有修改,可以先git pull回来再push

1
Please enter a commit to explain why this merge is necessary......

不用管它直接:wq退出。

linux vi命令基本操作

发表于 2017-04-22 | 更新于 2023-10-21 | 分类于 杂谈

vi的基本操作

a) 进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
$ vi myfile
不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) Insert 的切换
您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)

命令行模式(command mode)功能键

1). 插入模式
按「i」切换进入插入模式「insert mode」,按”i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式
按「ESC」键。

3). 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往”后”移动一页。
按「ctrl」+「f」:屏幕往”前”移动一页。
按「ctrl」+「u」:屏幕往”后”移动半页。
按「ctrl」+「d」:屏幕往”前”移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的”行尾”。
按「^」:移动到光标所在行的”行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字
「x」:每按一次,删除光标所在位置的”后面”一个字符。
「#x」:例如,「6x」表示删除光标所在位置的”后面”6个字符。
「X」:大写的X,每按一次,删除光标所在位置的”前面”一个字符。
「#X」:例如,「20X」表示删除光标所在位置的”前面”20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行

5). 复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行”往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与”y”有关的复制命令都必须与”p”配合才能完成复制与粘贴功能。

6). 替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次”u”可以执行多次回复。

8). 更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字

9). 跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

Last line mode下命令简介

在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

vi命令列表

下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字”0”,光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl+f
向前翻屏

Ctrl+b
向后翻屏

Ctrl+d
向前翻半屏

Ctrl+u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字

下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

Codeigniter在nginx下的几个问题

发表于 2017-01-01 | 更新于 2023-10-21 | 分类于 杂谈

本地的xampp测试没问题,上传到服务器就报503,查了一遍发现是session的问题,去php.ini中把session.auto_start打开就好了。

正常访问首页,点击进入后404,用index.php?访问倒是没问题,网上的一种解释是:

对于/index.php/abc这种url,Apache和lighttpd会按”index.php?abc”来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache和lighttpd则正常。

1
2
$config['index_page']  =  "index.php?";
$config['uri_protocol'] = "QUERY_STRING";

然后再去掉index.php

1
2
3
4
5
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}

不过没测试这种方法是否有效,服务器FTP抽的实在连不上,不试了…

另外两种试过的方法也记录下

1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 8081;
server_name localhost;

root /www/CodeIgniter;

index index.php;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}

location ~ \.php {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/CodeIgniter/$fastcgi_script_name;

//fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}
}

2:

1
2
3
4
5
6
7
8
9
10
location /{
index index.html index.htm index.php;
if (-e $request_filename) {
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}

隐藏WordPress后台登陆地址

发表于 2015-09-24 | 更新于 2023-10-21 | 分类于 杂谈

直接扫描登陆入口这种做法可能没什么效率,不过一旦中招也是件麻烦事,限制登陆条件可以起到一定的保护作用,管不管用的多一层保护也是好事。

各种插件永远是解决wordpress问题最简单最直接的方法,比如Stealth Login Page,Protected wp-login等都能起到保护登陆页面的作用,如果不喜欢插件的话直接使用代码也很简单:

1
2
3
4
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
if($_GET['wp'] != 'login')header('Location: http://想链接到的地址');
}

具体的效果跟上面的插件一样,都是把登陆地址变成/wp-login.php?wp=login这种形式,否则跳转到指定页面。这种方式虽然不错,但是在前台登陆或者找回密码时可能会出现问题,并不算完美。

12
该若木草

该若木草

也不知道是干什么用的博客

19 日志
2 分类
37 标签
RSS
© 2023 该若木草
由 Hexo 强力驱动
|
主题 — NexT.Gemini