js罗马数字转换

function convert(num) {
 //数级定义
 var roman = {
   1000 : 'M',
   500 : 'D',
   100 : 'C',
   50 : 'L',
   10 : 'X',
   5 : 'V',
   1 : 'I'
 }, res='', i = '', j = 0, p =0, indexes = [], n=0;
  
  for(i in roman){
    indexes.push(i - 0);
  }
  //倒序
  indexes.sort(function(p, n){
    return n - p;
  });
  
  indexes.forEach(function(i){
    p =  num / i;
    if(p < 1 || num == 0) return;
    //k是基数,比如说1~9基数是1,10~99的基数是10,101~999基数是100
    var k = i/((i+"")[0]);
    
    /**
     *罗马数字规则,进9 和 进4 不一样,
     *进9:本级基数 + 是下级数,
     *进4: 本级数 + 下级数
     */
    //进9
    if( ((num + k) / ( i + 5 * k)) >= 1  && indexes.indexOf(i + 5 * k) > -1){
      res += roman[k] + roman[i + 5 * k];
      num -= i + 4 * k;//本级数 + 4倍的基数
    }else{
      n = Math.floor(p);
    
      if(n == 4 && indexes.indexOf(i + k * 4) > -1){//进4
        res += roman[i] + roman[i + k * 4];
      }else{
        for(j = 0; j<n; j++){
          res += roman[i];
        }
      }
      num -= n * i;
    }
  });
 
 return res;
}

convert(9002);
发表在 js | js罗马数字转换已关闭评论

图标-Font Awesome

Font Awesome 是一个非常方便的图标库。这些图标都是矢量图形,被保存在 .svg 的文件格式中。这些图标就和字体一样,你可以通过像素单位指定它们的大小,它们将会继承其父HTML元素的字体大小。

你可以将 Font Awesome 图标库增添至任何一个应用中,方法很简单,只需要在你的 HTML 头部增加下列代码即可:

发表在 前端 | 图标-Font Awesome已关闭评论

积分模块

积分模块实现解决方案
https://gitee.com/ivhong/points_module/
交流请mailto:hong350@163.com

发表在 自研 | 积分模块已关闭评论

mysql 分页优化

SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ......  limit M, N;
SELECT FOUND_ROWS();
发表在 mysql | mysql 分页优化已关闭评论

Yii2 添加请求日志

#SQL
CREATE TABLE `log` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `action` varchar(50) NOT NULL DEFAULT '' COMMENT 'action',
  `url` varchar(500) DEFAULT NULL COMMENT 'url',
  `params` text COMMENT 'POST参数',
  `usetime` float(11,8) DEFAULT NULL COMMENT '耗时秒,action处理错误,此值为0',
  `return` text COMMENT '返回值,action处理错误,此值为空',
  `create_time` int(11) DEFAULT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='访问日志';
public function beforeAction($action) {
        $data = [
            'params' => json_encode($this->params, 1),
            'url' => Yii::$app->request->url,
            'action' => $action->id,
            'create_time' => time(),
        ];
        
        $this->usetime = microtime(1);
        
        Yii::$app->db->createCommand()->insert('log', $data)->execute();
        $id = Yii::$app->db->getLastInsertID();
        $this->logid = $id;
        
        return parent::beforeAction($action);
    }
    
    public function afterAction($action, $result) {
        if($this->logid){
            $data = [
                'usetime' => round(microtime(1) - $this->usetime, 3),
                'return' => json_encode($result, 1)
            ];
            
            Yii::$app->db->createCommand()->update('log', $data, ['id'=>$this->logid])->execute();
        }
        return parent::afterAction($action, $result);
    }

发表在 yii2, 框架 | Yii2 添加请求日志已关闭评论

yii2 获取当前页面url

//如果又端口号,支持端口号
Yii::$app->request->getHostInfo().Yii::$app->request->url;
发表在 php, yii2 | yii2 获取当前页面url已关闭评论

php json_encode 中文不转unicode码

json_encode($msg, JSON_UNESCAPED_UNICODE)
发表在 php, php 优化, 基础 | php json_encode 中文不转unicode码已关闭评论

js 奇怪的问题之0

//输出 true
console.log(0 == "0")
//输出1
if(0){
   console.log(0) 
}else{
   console.log(1)
}
//输出0
if("0"){
   console.log(0) 
}else{
   console.log(1)
}
发表在 js | js 奇怪的问题之0已关闭评论

ssl 免密登陆

假如有2台机器a、b,使a机器免密登陆b机器。
1. 在a机器中输入 ssh-keygen -t rsa,一路回车
2. 复制 ~/.ssh/id_rsa.pub 中的内容
3. 在b机器中:
1):vim /etc/ssh/sshd_config
2):去掉下面的注释
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径(和上面生成的文件相同)
3):将步骤2中的内容复制到 ~/.ssh/authorized_keys 中(类似 cat xxxx >> bbbb 的操作,非覆盖)
4):service sshd restart
4. 直接在a机器中 ssh [username]@b username 如果一样的话,可以不必输入

发表在 Shell | 标签为 | ssl 免密登陆已关闭评论

php 中文字符集修改成UTF8编码

$t = mb_detect_encoding($a,["GB18030", "UTF-8","GB2312","GBK","BIG5"]);
if($t !== false && $t != "UTF-8"){
    $a = mb_convert_encoding($a, 'UTF-8', $t);
}
发表在 php, php 优化, 基础 | 标签为 , , , , | php 中文字符集修改成UTF8编码已关闭评论