happyhack

drinke8


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Sitemap

Debain 安装 Elasticsearch 7+

Posted on 2019-09-02 | Edited on 2019-09-04 | In Technology |

电商系统中的搜索,常用的Mysql等关系型数据库无法应对。记录下使用Elasticsearch的过程。

本文中的软件运行环境Debain系统

安装前的准备工作: 新建一个非root用户!并使用此用户操作接下来步骤。

  1. 导入Elasticsearch PGP密钥

    1
    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  2. 下载Debian 包(文中的版本为7.3.1)

    这种下载方式目前算是比较快的了。。也不需要挂代理。这种方式默认下载了OpenJDK包。不需要额外安装java,如果需要特殊配置可以看文档

    1
    2
    3
    4
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.1-amd64.deb
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.1-amd64.deb.sha512
    shasum -a 512 -c elasticsearch-7.3.1-amd64.deb.sha512
    sudo dpkg -i elasticsearch-7.3.1-amd64.deb
  3. 设置开启启动

    1
    2
    3
    4
    5
    6
    sudo /bin/systemctl daemon-reload
    sudo /bin/systemctl enable elasticsearch.service

    #elasticsearch 开关命令
    sudo systemctl start elasticsearch.service
    sudo systemctl stop elasticsearch.service

    以上的安装方式,安装的配置文件在/etc/elasticsearch和/etc/default/elasticsearch中。/usr/share/elasticsearch/bin是elasticsearch的命令文件夹。/var/share/logs/elasticsearch是存储日志文件夹

  4. 安装ik分词器plugin(安装完成之后记得重启)

    1
    /usr/share/elasticsearch/bin/elasticsearch-plugin install  https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.1/elasticsearch-analysis-ik-7.3.1.zip
Read more »

Git 回滚远程分支

Posted on 2019-08-02 | Edited on 2019-09-04 | In 小记 |

##记一次撤销远程分支的提交

将本地commit提交到远程分支,发现这次的提交不需要了,可以通过回滚操作来撤销这次的提交。

如果是公共分支则需要注意

步骤

获取commit id

git reflog 查看commit提交记录找到需要回滚到的那个提交commit id,这里假设commit id 是d5c5e7f92.

如果是上一次提交则可以使用HEAD.

回滚自己单独的分支

1
2
git reset --hard                     #回滚上一次提交 等于 git reset --hard HEAD
git reset --hard d5c5e7f92 #回滚到d5c5e7f92

回滚公共分支

1
2
3
git revert HEAD                     #撤销最近一次提交
git revert HEAD~1 #撤销上上次的提交,注意:数字从0开始
git revert d5c5e7f92 #撤销d5c5e7f92这次提交

将回滚推送至远程分支

1
git push origin HEAD:<your-origin-branch>

Reference

参考链接

sed 命令小记

Posted on 2019-07-02 | Edited on 2019-09-04 | In 小记 |

查找文本中的字符串将字符串替换为想要的文本

sed -i "s/DB_HOST/DB_MY_HOST/g" .env

将.env文件中的DB_HOST替换为DB_MY_HOST

将目标行替换为想要的文本

sed -i "/DB_DATABASE/c\DB_DATABASE=bingo_db/ .env

将.env中的包含DB_DATABASE行替换为DB_DATABASE=bingo_db

以上两个方法都可以修.env文件中的某个配置项、第二种使用c\行替换比较方便

web开发知识点

Posted on 2018-11-18 | In Technology |

常见HTTP代码含义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
300(多种选择)针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
Read more »

常见的排序算法

Posted on 2018-11-18 | In Technology |

冒泡排序

将数组中的相邻元素的比较和交换来把小的数交换到最前面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//冒泡排序
function maopao($num)
{
for ($i = 0; $i < count($num); $i++) {
for ($j = 0; $j < count($num) - $i - 1; $j++) {
if ($num[$j] > $num[$j + 1]) {
list($num[$j],$num[$j+1]) = [$num[$j+1],$num[$j]];
//$tmp = $num[$j + 1];
//$num[$j + 1] = $num[$j];
//$num[$j] = $tmp;
}
}
}
return $num;
}
Read more »

使用七牛PHP-SDK上传文件

Posted on 2018-10-26 | In Technology |
  1. 在七牛控制台中创建Bucket。

  2. 下载PHP-SDK包。

    可以通过composer来安装 composer require qiniu/php-sdk

  3. 获取密钥信息: AccessKey、SecretKey。

  4. 项目中将文件直接传至七牛服务器、通过回调来返回需要的数据、减轻业务服务器压力。

    具体逻辑:

    • 客户端获取服务器颁发的上传凭证(token)。
    • 客户端上传资源至七牛,并带上token作为请求内容的一部分。
    • 七牛处理资源、带上参数访问回调地址。
    • 回调接口处理数据返回七牛。
    • 七牛返回回调接口的处理数据给客户端。
Read more »

Ubuntu 18.04 设置固定IP地址

Posted on 2018-10-08 | In Technology |

公司内部服务器使用新版本Ubuntu系统,发现IP地址配置与之前版本有差别。

以下是新版本修改方法.

  1. 进入系统之后注意看欢迎页的自动分配的IP地址(使用的网卡、与IP地址段)。
1
2
3
4
5
6
7
8
9
10
11
12
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-36-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Mon Oct 8 15:05:45 CST 2018

System load: 0.0 Processes: 202
Usage of /: 1.2% of 915.40GB Users logged in: 0
Memory usage: 8% IP address for eno1: 10.1.1.66
Swap usage: 0%
Read more »

Docker 使用指南

Posted on 2018-09-12 | In Technology |

[TOC]

介绍

在接触Docker之前,一直使用自建的开发环境来工作。

对于个人来说就是在换电脑的时候麻烦,换电脑了开发环境就得重新部署一次。差不得得要个半天时间…

对于公司团队来说更加麻烦了,每个同事部署的环境不一致,Windows系统与*nix系统的不兼容等.代码跑起来有差异。

Docker是一个类似于虚拟机的设计,一种新兴化的虚拟化方式。

特性Docker虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生弱于原生
系统支持量单主机支持上千个容器一般几十个

Docker有三个关键概念:镜像(images)、容器(container)、仓库(registry)。其中镜像与容器两者关系类似于面向对象设计中的类和实例一样

镜像是静态的定义,容器是镜像运行是的实体

镜像加速:官方Docker Hub拉取镜像网络不稳定,推荐两个镜像仓库

  • Docker官方中国镜像
  • 七牛云

Read more »

vee-validate 自定义验证规则

Posted on 2018-08-10 | Edited on 2018-10-13 | In Technology |

在使用vee-validate验证表单中受限于默认规则不够用,于是查阅文档,记录下如何自定义验证规则.

格式:

1
2
3
4
5
6
7
8
9
const validator = {
getMessage(field, args) {
//定义默认错误提示
//返回错误提示
},
validate(value, args) {
// 返回一个 Boolean 值或者一个 Promise对象.
}
};

使用 extend(name,validator)函数添加一个验证实例

1
2
3
4
Validator.extend('truthy', {
getMessage: field => 'The ' + field + ' value is not truthy.',
validate: value => !! value
});
Read more »

使用owncloud搭建私有云

Posted on 2018-07-26 | In Technology |

闲来无事,将闲置VPS搭建一个私有云。

所需配置

  • vps主机一台
  • oneinstack 安装包
  • owncloud 安装包

步骤

  • 安装oneinstack(略)
    1. 安装mysql
    2. 安装PHP
    3. 安装Nginx/Apache (owncloud 默认使用Apache做web服务器、如果使用Nginx需要修改NGINX配置、见下文)
    4. 安装Redis/Memcache(解决内存太小问题、提升访问速度)
Read more »

Laravel Mysql GROUP BY 查询常见问题

Posted on 2018-07-10 | Edited on 2018-08-10 | In Technology |

在Laravel 框架中对 Mysql 查询复查语句的时候,有时候会遇到sql在MySQL终端中运行没问题,但是在laravel中出现错误.

  • 举个🌰

查询表中name有重复的数据

1
2
3
$sql = " `name` IN (SELECT `name` FROM clients child GROUP BY child.`name` HAVING COUNT(child.`name`) > 1 ) ORDER BY `name`";

$clients = Client::whereRaw($sql)->paginate();

通过toSql()将sql打出来放到mysql终端中执行是没有问题的,但是在laravel框架中则会出现:

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

  • 解决办法

config/database.php中mysql的 strict改为false就可以啦!

MongoDb Auth认证 用户权限设置

Posted on 2018-06-06 | Edited on 2018-09-12 | In Technology |

MongoDB 权限配置

MongoDB 默认没有管理员账号,如果需要开启权限必须先添加管理员账号。

Read more »

php 安装MongoDB扩展

Posted on 2018-06-06 | Edited on 2018-08-10 | In 小记 |

安装MongoDB

官网下载安装!(略…)

PHP安装MongoDB扩展

Mac 通过Homebrew安装

1
2
brew tap kyslik/php
brew install phpXX-mongodb
Read more »

Gogs 迁移

Posted on 2018-05-22 | Edited on 2018-06-15 | In Technology |

使用-h 命令查看具体参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[email protected]:~/gogs$ ./gogs -h
NAME:
Gogs - A painless self-hosted Git service

USAGE:
gogs [global options] command [command options] [arguments...]

VERSION:
0.11.43.0330

COMMANDS:
web Start web server
serv This command should only be called by SSH shell
hook Delegate commands to corresponding Git hooks
cert Generate self-signed certificate
admin Perform admin operations on command line
import Import portable data as local Gogs data
backup Backup files and database
restore Restore files and database from backup
help, h Shows a list of commands or help for one command

GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
Read more »

Nginx 自定义404等相关页面

Posted on 2018-05-12 | Edited on 2018-06-15 | In Technology |

需要配置两处地方!

  • nginx.conf
1
2
#在 http 块中 添加以下配置
fastcgi_intercept_errors on;
  • your.custom.conf
1
2
3
4
5
6
7
8
9
#在server块中添加
#有两种指定方式
error_page 404 /404.html; #当前配置默认路径是从nginx安装路径;
# OR 指定特定路由地址
# error_page 404 https://happyhack.cn/404.html;
#如需自定义路径,添加一个location块
location /404.html{
root /data/wwwroot/errorpages;
}

也可以指定其他状态码到同一个页面。使用正则同样可以!

1
error_page 404 = 401 /your/errorpage.html;

Laravel Eloquent 使用总结

Posted on 2018-05-07 | Edited on 2018-08-10 | In Technology |

直奔主题!

使用技巧

递增和递减

要代替以下实现:

1
2
3
$article = Article::find($article_id);
$article->read_count++;
$article->save();

你可以这样做:

1
2
$article = Article::find($article_id);
$article->increment('read_count');

以下这些方法也可以实现:

1
2
3
Article::find($article_id)->increment('read_count');
Article::find($article_id)->increment('read_count', 10); // +10
Product::find($produce_id)->decrement('stock'); // -1

模型的 boot() 方法

在一个 Eloquent 模型中,有个神奇的地方,叫 boot(),在那里,你可以覆盖默认的行为:

1
2
3
4
5
6
7
8
9
10
11
12
class User extends Model
{
public static function boot()
{
parent::boot();
static::updating(function($model)
{
// 写点日志啥的
// 覆盖一些属性,类似这样 $model->something = transform($something);
});
}
}
Read more »

XSS CSRF 解释

Posted on 2018-05-06 | Edited on 2018-08-10 | In Technology |

XSS(Cross Site Script)

跨站脚本攻击会像站点注入Html/JavaScript代码

  • 举个茄子🌰:

在页面中的某个input输入框中,攻击者输入<script>alert('666')</script>,页面将弹出这个666,如果用户使用更加牛逼的JS代码,来获取用户存在客户端的数据,如getCookie(name)这类代码,那用户的数据则暴露给攻击者无疑。

  • 防范方法
  1. 后端过滤任何可疑HTML标签,最好过滤<,>这两个符号。
  2. 当然通过前端路由xss,那也很难解决,唯有后端对URL,进行规则验证.
Read more »

Laravel 缓存驱动解析

Posted on 2018-05-06 | Edited on 2019-09-02 | In Technology |

访问量较大的站点中,关键数据的展示有时候不是实时更新的,用户在访问这些数据的时候如果每次都从数据库中调取,则会浪费很多不必要的资源!
加上缓存的话,则会让数据的读取更快,同时大大减少了资源的浪费!缓存就这么因运而生了。

首先我们先来看下如何正确的使用缓存!

缓存更新的套路

大多人的思路是在有新数据加入的时候,删除原有缓存,更新数据库,在将新数据放入缓存中去!
然而!这个逻辑是有漏洞的。试想如果两个并发操作同时进来,一个更新操作,一个查询操作,更新操作删除缓存之后,查询操作没有命中缓存,将原有数据查询放入缓存中去,然后更新操作更新了数据库!
这就导致缓存数据是原来的老数据,并且一直会这样下去!

更新缓存

四种Design Pattern:

  1. Cache aside
  2. Read through
  3. Write through
  4. Write behind caching
Read more »

Laravel 项目架构

Posted on 2018-04-25 | Edited on 2018-09-12 | In Technology |

初学者学习Laravel时分两种,一种是乖乖的将程序填入MVC构架内,导致controller与model异常的肥大,日后一样很难维护;一种是常常不知道程序该写在哪一个class内而犹豫不决,毕竟传统PHP都是一个页面一个档案。本文整理出最适合Laravel的中大型项目构架,兼具容易维护、容易扩充与容易重复使用的特点,并且容易测试。

Controller过于肥大

受RoR的影响,初学者常认为MVC构架就是model,view,controller:

Read more »

Laravel Ajax API自定义头部token

Posted on 2018-04-12 | Edited on 2018-09-12 | In Technology |

使用Laravel中,使用Ajax访问后台Api接口需要在header头部添加Authorization信息.

前提是Api使用token认证的方式,全局设置header头部信息:

1
2
3
$.ajaxSetup({
headers:{'Authorization': "{{ Auth::guard('admin')->check() ? 'Bearer '.Admin::user()->api_token : 'Bearer ' }}"}
});

将以上代码添加到resources/views/admin/index.blade.php中

项目使用 Laravel-admin后台模板

123

drinke8

和自己赛跑的人

41 posts
3 categories
32 tags
GayHub
0%
© 2017 — 2019 happyhack.cn
Powered by Hexo
|
Theme — NexT.Gemini