Vagrant+Virtual Box 快速搭建开发环境

  1. Vagrant.configure("2") do |config|
  2. config.vm.box = "ubuntu/xenial64"
  3. # config.vm.network "forwarded_port", guest: 80, host: 80
  4. # config.vm.network "forwarded_port", guest: 3306, host: 3306
  5. config.vm.network "private_network", ip: "10.0.0.3"
  6. config.vm.provision "shell", inline: <<-SHELL
  7. # 更换aliyun软件源
  8. cp /etc/apt/sources.list /etc/apt/sources.list.bak
  9. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list
  10. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list
  11. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list
  12. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse' >> /etc/apt/sources.list
  13. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list
  14. apt-get update
  15. # 安装docker
  16. apt-get -y install apt-transport-https ca-certificates curl software-properties-common
  17. curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  18. add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  19. apt-get -y update
  20. apt-get -y install docker-ce docker-compose
  21. # 使用aliyun加速docker镜像
  22. mkdir -p /etc/docker
  23. echo '{' > /etc/docker/daemon.json
  24. echo ' "registry-mirrors": ["https://kag9wqej.mirror.aliyuncs.com"]' >> /etc/docker/daemon.json
  25. echo '}' >> /etc/docker/daemon.json
  26. systemctl daemon-reload
  27. systemctl restart docker
  28. # 把vagrant用户添加到 docker 组
  29. usermod -G docker vagrant
  30. # ssh登录后, 进入/vagrant目录, 并启动docker compose , 然后 输出一下当前正在运行的容器
  31. echo 'cd /vagrant && docker-compose up -d && docker ps' >> /home/vagrant/.bashrc
  32. SHELL
  33. end

Vant - 有赞移动端 Vue 组件库


logo



logo


A Vue.js 2.0 Mobile UI at YouZan

Build Status
downloads
Coverage Status
npm version
license

特性

  • 50+ 个经过有赞线上业务检验的组件
  • 单元测试覆盖率超过 90%
  • 完善的中英文文档和示例
  • 支持 babel-plugin-import
  • 支持 TypeScript
  • 支持 SSR

安装

  1. npm i -S vant

快速上手

方式一. 使用 babel-plugin-import (推荐)

  1. # 安装 babel-plugin-import 插件
  2. npm i babel-plugin-import -D
  1. // 在 .babelrc 或 babel-loader 中添加插件配置
  2. // 注意:webpack 1 无需设置 libraryDirectory。
  3. {
  4. "plugins": [
  5. ["import", {
  6. "libraryName": "vant",
  7. "libraryDirectory": "es",
  8. "style": true
  9. }]
  10. ]
  11. }

接着你可以在代码中直接引入 Vant 组件,插件会自动将代码转化为方式二中的按需引入形式。

  1. import { Button } from 'vant';

方式二. 按需引入组件

  1. import Button from 'vant/lib/button';
  2. import 'vant/lib/vant-css/base.css';
  3. import 'vant/lib/vant-css/button.css';

方式三. 导入所有组件

  1. import Vue from 'vue';
  2. import Vant from 'vant';
  3. import 'vant/lib/vant-css/index.css';
  4. Vue.use(Vant);

CDN

  1. <!-- 引入样式 -->
  2. <link rel="stylesheet" href="https://unpkg.com/vant/lib/vant-css/index.css">
  3. <!-- 引入组件 -->
  4. <script src="https://unpkg.com/vant/lib/vant.min.js"></script>

更多内容请参考 快速上手.

贡献代码

修改代码请阅读我们的 开发指南

使用过程中发现任何问题都可以提 Issue 给我们,当然,我们也非常欢迎你给我们发 PR

浏览器支持

现代浏览器以及 Android 4.0+, iOS 6+.

手机预览

可以手机扫码以下二维码访问手机端 demo:

qrcode

链接

开源协议

本项目基于 MIT 协议,请自由地享受和参与开源。

vagrant+docker一键搭建php+mysql开发环境

必备软件

  1. Vagrant
  2. Virtual Box

启动脚本

  1. Vagrantfile
  1. Vagrant.configure("2") do |config|
  2. config.vm.box = "ubuntu/xenial64"
  3. config.vm.network "forwarded_port", guest: 80, host: 80
  4. config.vm.network "forwarded_port", guest: 3306, host: 3306
  5. config.vm.network "private_network", ip: "10.0.0.2"
  6. config.vm.provision "shell", inline: <<-SHELL
  7. # 更换aliyun软件源
  8. cp /etc/apt/sources.list /etc/apt/sources.list.bak
  9. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list
  10. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list
  11. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list
  12. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse' >> /etc/apt/sources.list
  13. echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list
  14. apt-get update
  15. # 安装docker
  16. apt-get -y install apt-transport-https ca-certificates curl software-properties-common
  17. curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  18. add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  19. apt-get -y update
  20. apt-get -y install docker-ce docker-compose
  21. # 使用aliyun加速docker镜像
  22. mkdir -p /etc/docker
  23. echo '{' > /etc/docker/daemon.json
  24. echo ' "registry-mirrors": ["https://kag9wqej.mirror.aliyuncs.com"]' >> /etc/docker/daemon.json
  25. echo '}' >> /etc/docker/daemon.json
  26. systemctl daemon-reload
  27. systemctl restart docker
  28. usermod -G docker vagrant
  29. cd /vagrant
  30. docker-compose up -d
  31. # 开机自启动
  32. echo '#!/bin/bash' > /etc/rc.local
  33. echo 'sleep 10' >> /etc/rc.local
  34. echo 'cd /vagrant' >> /etc/rc.local
  35. echo 'docker-compose up -d' >> /etc/rc.local
  36. echo 'exit 0' >> /etc/rc.local
  37. sudo rm /bin/sh
  38. sudo ln -s /bin/bash /bin/sh
  39. SHELL
  40. end
  1. docker-compose.yml
  1. version: '2'
  2. services:
  3. mysql:
  4. image: mysql
  5. environment:
  6. - MYSQL_ROOT_PASSWORD=root
  7. volumes:
  8. - "./mysql:/var/lib/mysql"
  9. ports:
  10. - '3306:3306'
  11. networks:
  12. - bridge
  13. www:
  14. build: .
  15. volumes:
  16. - "./wwwroot/www:/app"
  17. - "./wwwroot/static/Uploads:/app/Uploads"
  18. environment:
  19. - VIRTUAL_HOST="你要绑定的域名"
  20. - PHP_DB_HOST=mysql
  21. - PHP_DB_NAME=你的数据库名称
  22. - PHP_DB_USER=root
  23. - PHP_DB_PASSWORD=root
  24. networks:
  25. - bridge
  26. lb:
  27. image: 'dockercloud/haproxy'
  28. volumes:
  29. - /var/run/docker.sock:/var/run/docker.sock
  30. links:
  31. - www
  32. ports:
  33. - '80:80'
  34. networks:
  35. - bridge
  36. networks:
  37. bridge:
  1. Dockerfile
  1. FROM php:5.6-apache
  2. # 安装扩展
  3. COPY ./soft/*.tgz /soft/
  4. WORKDIR /soft
  5. RUN pecl install redis-3.1.6.tgz \
  6. && pecl install xdebug-2.5.5.tgz \
  7. && docker-php-ext-enable redis xdebug \
  8. && docker-php-ext-install pdo_mysql \
  9. && docker-php-ext-install mysqli \
  10. && rm -rf /soft
  11. # URL重写
  12. RUN a2enmod rewrite
  13. # 安装composer
  14. ADD ./soft/composer.phar /usr/local/bin/composer
  15. RUN chmod 755 /usr/local/bin/composer \
  16. && composer config -g repo.packagist composer https://packagist.phpcomposer.com
  17. # 安装代码
  18. COPY ./wwwroot /app/
  19. # 修改网站主目录
  20. ENV APACHE_DOCUMENT_ROOT /app
  21. RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
  22. RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
  23. # 可写权限
  24. RUN chmod -R 777 /app/
  25. # 默认工作目录
  26. WORKDIR /app
  27. # 暴露工作端口
  28. EXPOSE 80 443 22

一个markdown编辑器editor.md

Editor.md






Editor.md : The open source embeddable online markdown editor (component), based on CodeMirror & jQuery & Marked.

Features

README & Examples (English)


Editor.md 是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。

editormd-screenshot

主要特性

Examples

https://pandao.github.io/editor.md/examples/index.html

Download & install

Github download

Bower install :

  1. bower install editor.md

Usages

HTML:

```html


php生成网站截图

组件下载: http://wkhtmltopdf.org/
Ubuntu中文支持: apt-get install openssl build-essential xorg libssl-dev libxrender-dev fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp xfonts-intl-chinese

测试命令:./wkhtmltoimage baidu.com baidu.png

php中使用:

  1. // api.php
  2. <?php
  3. $url = isset($_GET['url']) ? $_GET['url'] : die('url param is require');
  4. $cache = __DIR__ .'/cache/' . md5($url) . '.png';
  5. if (!is_file($cache)) {
  6. // 这里写组件的存放位置, 主要要给文件可执行权限 chmod 777 wkhtmltoimage
  7. $shell = __DIR__ . '/shell/wkhtmltox/bin/wkhtmltoimage '. $url .' '. $cache;
  8. shell_exec($shell);
  9. }
  10. header("Content-Type: image/png");
  11. $im = imagecreatefrompng($cache);
  12. imagesavealpha($im, true);
  13. imagepng($im);
  14. imagedestroy($im);

然后访问 http://demo.zhaishuaigan.cn/php/html2img/api.php?url=baidu.com

php调用系统shell命令自动更新线上网站代码为git版本库最新版

我们开发网站经常使用git最为代码版本库管理功能, git可以方便多人合作和代码历史记录的保存, 很方便, 于是有很多人就直接把git版本库的代码直接部署到线上, 每次更新就用git pull 去更新网站的代码, 只是每次更新代码都需要ssh到服务器上, 很麻烦, 想到php可以执行系统命令, 就想到了用网页更新线上代码, 具体往下看

准备

  1. 你的网站是php写的
  2. 你网站的代码使用的是git clone的代码, 更新代码使用的是git pull方式

自动更新php文件

1 . 在网站根目录下新建 /update.php, 并写入下面的代码, 可以把DIR修改成网站所在目录, 如果是当前目录, 可以不修改.

  1. <?php
  2. chdir(__DIR__);
  3. echo '<pre>';
  4. echo shell_exec('/usr/bin/git pull 2>&1');

2 . 然后修改网站目录中的文件所有文件的权限为 0777
3 . 把 .git/config 文件的远程提交地址中加上帐号信息 https://username:password@git.xxx.com/xxxxx
4 . 然后就可以访问 http://xxx.com/update.php 来更新网站代码了

注意: 如果你的网站根目录是源码根目录, 要禁止http访问.git目录, 因为这里保存了你的git帐号

linux自动压缩apache日志的计划任务脚本

上线后的网站, apache的日志每天都会增长很多, 有时一天就是几个G, 要么关闭日志, 要么压缩保存, 这里提供一个定时压缩的脚本, 每天

步骤

  1. 创建备份压缩脚本
  2. 创建计划任务

1. 创建备份压缩脚本

在服务器上创建一个shell脚本文件, 写入以下内容
  1. now_date=`date -d yesterday +%Y_%m_%d`
  2. /usr/bin/gzip -c 日志文件路径/access.log > 压缩后的路径/access.log_${now_date}.gz
  3. echo "" > 日志文件路径/access.log
  4. /usr/bin/gzip -c 错误日志文件路径/error.log > 错误日志文件路径/error.log_${now_date}.gz
  5. echo "" > 错误日志文件路径/error.log
实例: /data/wwwlog/gzip_log.cron
  1. now_date=`date -d yesterday +%Y_%m_%d`
  2. /usr/bin/gzip -c /data/wwwlog/access.log > /data/wwwlog/access.log_${now_date}.gz
  3. echo "" > /data/wwwlog/access.log
  4. /usr/bin/gzip -c /data/wwwlog/error.log > /data/wwwlog/error.log_${now_date}.gz
  5. echo "" > /data/wwwlog/error.log

2. 创建计划任务

  1. 在命令行输入 crontab -e 调出计划任务配置文件
  2. 写入配置 10 0 * * * sh /data/wwwlog/gzip_log.cron
  3. esc :wq 回车保存

这样就可以在每天晚上 12点压缩日志了

使用php开发windows的cmd命令方法

最近心血来潮, 想做一些命令行工具, 用来备份数据库什么的, 但自己本身并不会windows的开发, 只会php, 于是就想到了用php写命令行工具, 所以, 想看懂这篇文章, 你需要会php就可以了, 了解一点cmd命令更好, 下面看设置方法.

准备工作

  1. 因为是工具, 我想到的是以后所有的命令行工具都放在统一的位置, 比如 D:/Tools/, 先按照下面的目录结构创建好目录
    1. 目录结构:
    2. - D:/Tools/ // 工具根目录
    3. - D:/Tools/shell/ // php功能脚本存放目录
    4. - D:/Tools/bin/ // 命令映射文件存放目录
  2. 配置系统的环境变量, 把 php的安装目录D:/Tools/bin/ 加入到系统环境变量里面
  3. 编写 php功能脚本 和 命令映射文件

php功能脚本实例

为了以后扩展方便, 一个工具我们就在D:/Tools/shell/创建一个目录, 多个工具就创建多个目录

最简单的当然就是输出 hello world 了

  1. 创建文件 D:/Tools/shell/hello/hello.php
  2. D:/Tools/shell/hello/hello.php 中写入 <?php echo 'hello world'; ?>
  3. 现在直接用cmd命令行运行 php D:/Tools/shell/hello/hello.php 就可以看到控制台输出 hello world

注: 如果没有输出, 应该是php的环境变量没有配置正确

命令映射

如果用php去运行我们的工具, 显然是不方便的, 我们需要的是在任何目录都可以 hello 然后输出 hello world, 这就需要用到命令映射文件了, windows有一种特殊的文件后缀是 .cmd的文件, 如果某个目录有 xxx.cmd文件, 就可以在那个目录用 xxx 去运行这个文件, 其实系统还会去寻找环境变量目录下是否存在xxx.cmd或 xxx.exe, 所以, 我们的命令映射文件其实就是一个 xxx.cmd, 然后让xxx.cmd里面去运行我们的脚本.

  1. 创建文件 D:/Tools/bin/hello.cmd
  2. D:/Tools/bin/hello.cmd 中写入 @php "D:\Tools\shell\hello\hello.php" %*
  3. 在命令行输入 hello 回车, 就会看到我们的 hello world

注: 如果没有运行成功, 说明环境变量没有配置成功, 配置正确后, 就可以使用 hello命令了, 后面就可以在hello.php写自己的处理程序了.

php中针对命令行的一些方法

  1. <?php
  2. getcwd(); // 获取当前命令行所在的目录
  3. $argv // 命令行参数集合, 第一个是脚本文件的路径, 第二个往后是参数
  4. __DIR__ // 当前脚本所在目录
  5. // 在命令行输出中文的方法
  6. function cecho($str) {
  7. if (PHP_OS == 'WINNT') {
  8. echo iconv('utf-8', 'gbk//IGNORE', $str) . "\n";
  9. } else {
  10. echo $str . "\n";
  11. }
  12. }
  13. cecho('中文提示信息');