就在前几日, 微博图床加入了防盗链, 只要你有referer引用就会返回403. 但是直接访问是可以的.
也是我就想, 我能不能用这个方法访问, 用 php 去访问然后再去返回呢. 只要把 img src
全部换掉不就行了吗.
建立微博图床镜像
于是, 首先写一个 php ,用它来获取图片,然后返回它。
1 |
|
其中,第一个 if
用来判断是否是你的站点,用来防滥用。
更改图片引用连接
在每篇文章的 <footer>
标签中,引用如下代码
1 | <script> |
就在前几日, 微博图床加入了防盗链, 只要你有referer引用就会返回403. 但是直接访问是可以的.
也是我就想, 我能不能用这个方法访问, 用 php 去访问然后再去返回呢. 只要把 img src
全部换掉不就行了吗.
于是, 首先写一个 php ,用它来获取图片,然后返回它。
1 | <?php |
其中,第一个 if
用来判断是否是你的站点,用来防滥用。
在每篇文章的 <footer>
标签中,引用如下代码
1 | <script> |
在昨天完善Magic主题的时候,突然想到一个需求,获取我另一个博客的文章和对应url。但是Halo博客没有提供api(可能是我不知道),但是它提供了sitemap。
那样我就可以用php去解析sitemap然后输出<a>
标签。
使用cURL发送get请求发现回传一个html。
1 | <html lang="zh-CN"> |
可以发现需要的标题都在 '/archives/.*?" title="(.*?)">
那么我们用这个正则表达式进行解析。
1 | $url_map = $url . '/sitemap.html'; |
首先使用cURL获取html存入$html, 然后使用preg_match_all
正则匹配 把匹配到的放入$title 变量。这里要注意传入preg_match_all中第一个参数是匹配式,需要两端加#
原因未知,反正没加就报错。走了很多弯路。
$title是一个数组,里面会有两个数组,第一个是匹配到的项,第二个是匹配到的结果,这里我们要第二个数组。也就是$title['1']
,并将它倒置,这样可以从新到旧的方式排列。
1 | $title['1'] = array_reverse($title['1']); |
构造url列表。
1 | foreach ($title['1'] as $item) |
然后构造<a>
标签。使用array_map()方法。1
2
3$all = array_map(function ($i1, $i2) {
return '<a href="' . $i1 . '" target="_blank">' . $i2 . '</a>';
}, $url_list, $title['1']);
最后附上完整的方法。
1 | function parse_halo_sitemap($url) |
其他博客也是如此。
前天,我在写后端的时候,需要获取到最新的github个人仓库,然后我去搜索了一下,发现github有提供api,格式为https://api.github.com/users/$username/repos?page=1&per_page=6&sort=updated;
后面的参数根据自己需要可以修改,包括数量和时间。返回的是一个json,通过php解析,里面是几个数组,数组里面又是数组。那么我们可以把每个链接对应项目名字提取出来。把他构造成以下形式:
1 | <a href="url" target="_blank"> repo name</a> |
首先造一个方法,用于获取github api的返回值。
1 | $repo_name = array(); |
再用其他两个方法来回调repo name和repo url的数组。
1 | function get_repo() |
调用方法
1 | <?php get_data($this->options->g_name); |
Halo [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。
轻快,简洁,功能强大,使用 Java 开发的博客系统。
此前,我使用hexo,犹豫hexo是静态的,有所不便。无意之中发现这款博客框架。此博客使用java所以,内存需求比较高。优点是美观,支持批量导入md。
1 | dd if=/dev/zero of=/var/swapfile bs=1M count=1024 |
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
添加或修改 /etc/docker/daemon.json
这个文件,加入下面的配置。
1 | { |
1 | service docker restart |
首先我们需要下载好 docker-compose.yaml
文件,这个文件在项目目录里面有,我们可以直接使用 wget
命令从 github 上下载下来,如下操作:
1 | wget -O docker-compose.yaml https://git.io/fpS8N |
假设你现在已经下载好了 docker-compose.yaml
文件,那么在部署之前需要做的就是简单修改以下这个文件。因为我们需要绑定域名以申请SSL证书,所以你需要在 docker-compose.yaml
文件中修改以下配置:
1 | halo: |
如上配置,我们需要修改 VIRTUAL_HOST
, LETSENCRYPT_HOST
为自己的域名,注意注意注意!,在部署之前,把域名解析商的api用export加入环境变量,只有这样才能证明域名所有权,才能完成签名。另外,LETSENCRYPT_EMAIL
这个节点是证书申请者的邮箱,当证书要过期的时候,会提醒你续签,DB_USER
和 DB_PASSWORD
分别为 H2Database
的用户名和密码,请务必要修改,这个是自定义的,不要使用默认的,修改完成之后保存文件备用。
1 | mkdir /etc/nginx |
1 | docker-compose up -d |
1 | #停止容器运行: |
以上适用于Ubuntu18.10
1 | cd |
踩坑
修改nginx的配置,因直接修改模板文件/etc/nginx/nginx.tmpl
C#多线程之睡眠排序
这个太吊了
不想多说了
让我先笑会
我也会写睡眠算法了。哈哈哈嗝~
下面代码引入
1 | using System; |