Keep Learning, Keep Running.

jquery中$.each的用法

之前经常需要用到遍历,但莫名其妙的获取不了数值之类的情况

让我们看看正常的代码

        $.each($("#select option"), function(i, n){
            alert("index: "+i+" value:"+n.text);
        });

假若需要获取option的value,用n.val()会报错提示没有此方法

正确的做法是

        $.each($("#select option"), function(i, n){
            alert($(this).val());
        });

大部分情况下都是使用$(this)来获取值等jquery操作,只用获取文本才使用n.text

批量添加linux用户shell脚本

 #!/bin/bash
for name in `more users.list`
do
    if [ -n "$name" ]
then
    useradd -d /home/dev/$name -g dev -m $name
    echo
    echo $name"123" | passwd --stdin "$name"
    echo
    echo "User $username's password changed!"
else
echo
    echo 'The username is null!'
fi
done

centos 命令行管理用户

先增加一个叫dev的用户群,id为52

groupadd -g 52 dev

增加一个叫hanson的用户,id是520,用户目录/public/hanson 用户群是dev

useradd -u 501 -d /home/hanson -g dev -m hanson

查看hanson密码

cat /etc/shadow| grep hanson

使用-d选项删除密码

passwd -d hanson

直接设置密码123,或者输入 passwd 用户名

echo "123" | passwd --stdin user3

Yii的urlManager使用

因为yii的连接并不优雅如,http://hanc.cc/index.php?r=site/index

yii中的 urlManager 组件可以使连接更加优雅

在config下的web.php component加上

'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
            '/' => 'my-module/password/index',
            '/user' => 'my-module/user/index',
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
  ],

nginx的配置如下

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost MY-IP;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    # try_files $uri $uri/ =404;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules

    try_files $uri $uri/ /index.php?$args;
}

location @rewrite{
          rewrite ^/(.*)$ /index.php?$args;
     }

error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }                                                                                              }

Sublime 快捷键

最近重新看了下快捷键感觉受益匪浅,效率也提高了,mark一下

Ctrl+Shift+P:打开命令面板
Ctrl+P:搜索项目中的文件
Ctrl+G:跳转到第几行
Ctrl+W:关闭当前打开文件
Ctrl+Shift+W:关闭所有打开文件
Ctrl+Shift+V:粘贴并格式化
Ctrl+D:选择单词,重复可增加选择下一个相同的单词
Ctrl+L:选择行,重复可依次增加选择下一行
Ctrl+Shift+L:选择多行
Ctrl+Shift+Enter:在当前行前插入新行
Ctrl+X:删除当前行
Ctrl+M:跳转到对应括号
Ctrl+U:软撤销,撤销光标位置
Ctrl+J:选择标签内容
Ctrl+F:查找内容
Ctrl+Shift+F:查找并替换
Ctrl+H:替换
Ctrl+R:前往 method
Ctrl+N:新建窗口
Ctrl+K+B:开关侧栏
Ctrl+Shift+M:选中当前括号内容,重复可选着括号本身
Ctrl+F2:设置/删除标记
Ctrl+/:注释当前行
Ctrl+Shift+/:当前位置插入注释
Ctrl+Alt+/:块注释,并Focus到首行,写注释说明用的
Ctrl+Shift+A:选择当前标签前后,修改标签用的
F11:全屏
Shift+F11:全屏免打扰模式,只编辑当前文件
Alt+F3:选择所有相同的词
Alt+.:闭合标签
Alt+Shift+数字:分屏显示
Alt+数字:切换打开第N个文件
Shift+右键拖动:光标多不,用来更改或插入列内容
鼠标的前进后退键可切换Tab文件
按Ctrl,依次点击或选取,可需要编辑的多个位置
按Ctrl+Shift+上下键,可替换行

Nginx配置详解

语法规则

location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

~ 开头表示区分大小写的正则匹配

~* 开头表示不区分大小写的正则匹配

/ 通用匹配,任何请求都会匹配到

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

location例子

例子,有如下匹配规则:

location = / { 规则A }

location = /login { 规则B }

location ^~ /static/ { 规则C }

location ~ .(gif|jpg|png|js|css)$ { 规则D }

location ~* .png$ { 规则E }

location / { 规则F }

那么产生的效果如下:

访问根目录/, 比如http://localhost/ 将匹配规则A

访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则F

访问 http://localhost/static/a.html 将匹配规则C

访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C

访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。

访问 http://localhost/category/id/1111则最终匹配到规则F,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

Continue Reading...

[推荐]Blank Space Style (feat. Devin Dawson)

Apache多个域名绑定到不同的子目录

  1. 修改host文件

    用记事本打开C:\Windows\System32\drivers\etc\hosts文件,最末尾加上两行,保存退出:
    
    127.0.0.1 localhost.com
    
    127.0.0.1 www.localhost.com
    
  2. 修改Apache的配置文件

    打开httpd.conf的文件,在最下面加上
    
        <VirtualHost localhost.com>  
            ServerAdmin raywill@qq.com  
            DocumentRoot D:\myweb\php  
            ServerName localhost.com  
            ErrorLog logs/m-error_log.txt  
            CustomLog logs/m_log.txt common  
        </VirtualHost>  
    

然后重启Apache。

访问localhost.com,然后你就发现大功告成了

原文链接

laravel的artisan命令

新建控制器
php artisan make:controller Admin/AdminHomeController
新建model
php artisan make:model Comment
新建migration
php artisan make:migration create_comments_table
生成密匙
php artisan key:generate
执行生成数据库操作
php artisan migrate

PHP中指定日期上某段时间

$date = '2015-08-15';
//输出 '2015-08-16'
echo date('Y-m-d', strtotime('+1 day', strtotime($date)));
//输出 '2015-08-21'
echo date('Y-m-d', strtotime('+5 days', strtotime($date)));
//输出 '2015-09-16'
echo date('Y-m-d', strtotime('+1 month', strtotime($date)));
//输出 '2016-09-16'
echo date('Y-m-d', strtotime('+1 year', strtotime($date)));

看到百度上都是在当前日期加时间,并没有指定时间,故此做下笔记