<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ROVAST的专栏]]></title><description><![CDATA[失败只有一种，那就是半途而废]]></description><link>https://blog.youkuaiyun.com/ROVAST</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ROVAST]]></copyright><item><title><![CDATA[理解 shell 脚本中的常见用法2＞&1]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/116498292</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/116498292</guid><author>ROVAST</author><pubDate>Fri, 07 May 2021 17:23:49 +0800</pubDate><description><![CDATA[原文：https://www.brianstorti.com/understanding-shell-script-idiom-redirect/
在我们接触的 shell 脚本中，对 2&gt;&amp;1 一定不陌生，比如 ls foo &gt; /dev/null 2&gt;&amp;1。
本文就来解释下 2&gt;&amp;1 究竟做了什么，并且是如何起作用的。
一、I/O 重定向简介
「重定向」是计算机用来把命令的输出从一个地方，输出到另一个地方。举个例子，默认情况下，我们使用 cat 指令可以把]]></description><category></category></item><item><title><![CDATA[Makefile 简明教程]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/109696605</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/109696605</guid><author>ROVAST</author><pubDate>Sat, 14 Nov 2020 21:14:44 +0800</pubDate><description><![CDATA[Makefile 简明教程

英文原文地址：https://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
本文源码同步在：https://github.com/rovast/makefile-tutorial

Makefiles 是组织代码编译的一种方式。通过这篇简明教程，虽然你不能完整学会 make 指令，但是你可以使用 makefile 来组织小到中型的项目啦。
一个 简单的例子
我们来从下面的三个文件开始吧：hellomake.c，hel]]></description><category></category></item><item><title><![CDATA[使用 www-data 用户运行定时任务（cron）]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/102929071</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/102929071</guid><author>ROVAST</author><pubDate>Wed, 06 Nov 2019 09:37:13 +0800</pubDate><description><![CDATA[其实这个没啥好说的，就是记录下解决的过程（说得好像跟一篇水文似的…）。或者给遇到这类问题的小伙伴提供个思路。
痛点
我们在部署 web 服务时，经常用到定时任务。正常的流程就是直接执行下面的指令来配置定时任务
crontab -e

问题来了，正常情况下，这个指令在哪个用户下面执行，这个权限就是谁的（如果你听不懂我在说啥，那基本就是属于 root的）。

定时任务本身的配置也是个精细活，你可以阅读...]]></description><category></category></item><item><title><![CDATA[git diff 用法]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/101302153</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/101302153</guid><author>ROVAST</author><pubDate>Tue, 24 Sep 2019 18:16:12 +0800</pubDate><description><![CDATA[参考链接： http://xahlee.info/linux/git_diff.html

本文阐述 git diff 的不同用法。
git 中有三个主要区域

Working Directory 工作区。当前用户正在工作的区域
Staging Area（也被叫做 cache，index）。使用 git add 后存放的临时位置
HEAD 指向一个 commit 位置。通常情况下，是指上一次提交...]]></description><category></category></item><item><title><![CDATA[composer 私有化]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/93019084</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/93019084</guid><author>ROVAST</author><pubDate>Thu, 20 Jun 2019 13:16:40 +0800</pubDate><description><![CDATA[我们知道，正常情况下，我们使用 composer install 时，是从 https://packagist.org/ 拉取的 package.
如果设置了 中国镜像，那么就会从你的镜像地址拉取。
处于一些需要，我们往往需要引用自己开发的 composer package。如果是公用还好，我们直接结合 github 和 packagist 发布共有的镜像就好了。
那如果我们使用的是自建的 git...]]></description><category></category></item><item><title><![CDATA[ubuntu 18.04 桌面版应用、美化、配置备忘录[更新中]]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/91808306</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/91808306</guid><author>ROVAST</author><pubDate>Thu, 13 Jun 2019 10:39:48 +0800</pubDate><description><![CDATA[文章目录桌面美化挪动关闭按钮至左侧更改顶部 bar 显示方式为 unity 风格gnome 相关安装 gnome shell extension常用应用albert（类似 MacOS 的 alfred）微信、企业微信、微信开发者工具钉钉开发环境nginx安装配置开发工具phpstormwebstorm
本文记录了使用 ubuntu 桌面版过程中的一些常见问题和初始化步骤。
桌面美化
挪动关闭按钮至...]]></description><category></category></item><item><title><![CDATA[soar 启发规则汇总 && 常见 MySQL 优化案例]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/88431682</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/88431682</guid><author>ROVAST</author><pubDate>Tue, 12 Mar 2019 23:30:31 +0800</pubDate><description><![CDATA[前言
最近偶然翻翻一些博客，发现依然有一些介绍 mysql 常见优化场景的东西，甚是有趣。想起了之前在公司做的 SQL 规范相关工作。独乐了不如众乐乐，独学习不如众分享，跟大家分享下自己在这个环节的一些心得。
之前无非是根据一些经验和书籍，列出常见的场景。直到有一次看到了小米的开源工具，SOAR，简直是被震惊的感觉。这个工具通过是 SQL 语法树的分析，结合小米 DBA 多年经验的总结，进行了一系...]]></description><category></category></item><item><title><![CDATA[Linux cron 避坑指南]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/88388807</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/88388807</guid><author>ROVAST</author><pubDate>Mon, 11 Mar 2019 10:08:30 +0800</pubDate><description><![CDATA[场景
好多系统中会用到邮件系统，我们假设有一个 PHP 脚本用来发送邮件。使用 Linux cron 每分钟执行一次

我们暂时不引入队列系统，其实使用队列处理此方式更优。

我们得到下面的基本配置
* * * * * php /home/app/email.php

问题分析和解决
如果这个邮件服务出现异常，进程僵死怎么办？
假设由于未知因素， email.php 脚本一直执行，没有退出。极端的...]]></description><category></category></item><item><title><![CDATA[phpunit光速入门]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/86139647</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/86139647</guid><author>ROVAST</author><pubDate>Wed, 09 Jan 2019 11:36:48 +0800</pubDate><description><![CDATA[phpunit 的官方文档对如何使用 phpunit 进行了详细的说明。本人在通读文档后进行了一些概要提升，
同时摘录了一些示例 phpunit-demo，便于以后
理解和查阅。
文档较为简洁，但是也涵盖了平时使用的基本用法，适合入门使用。
安装 phpunit
项目安装
composer require --dev phpunit/phpunit

使用 ./vendor/bin/phpunit...]]></description><category></category></item><item><title><![CDATA[Ubuntu18.04安装深度截图]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/84758321</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/84758321</guid><author>ROVAST</author><pubDate>Mon, 03 Dec 2018 12:45:37 +0800</pubDate><description><![CDATA[文章目录1. 下载deb包2. 安装3. 安装其他一些依赖4. 使用
1. 下载deb包
访问 http://packages.linuxdeepin.com/deepin/pool/main/d/deepin-scrot/ 下载 deepin-scrot_2.0-0deepin_all.deb
或者直接 wget http://packages.linuxdeepin.com/deepin/po...]]></description><category></category></item><item><title><![CDATA[Gnome 相关配置目录小记]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/84098669</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/84098669</guid><author>ROVAST</author><pubDate>Thu, 15 Nov 2018 09:33:01 +0800</pubDate><description><![CDATA[Cursor

系统目录 /usr/share/icons
自定义目录 ~/.icons


]]></description><category></category></item><item><title><![CDATA[ubuntu 安装 ppa 出现 UnicodeDecodeError: 'ascii' codec can't decode byte]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/83721880</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/83721880</guid><author>ROVAST</author><pubDate>Sun, 04 Nov 2018 22:58:46 +0800</pubDate><description><![CDATA[udo locale-gen en_US.UTF-8
export LANG=en_US.UTF-8


]]></description><category></category></item><item><title><![CDATA[vue router push new tab，使用vue router push 新标签页]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/83151206</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/83151206</guid><author>ROVAST</author><pubDate>Thu, 18 Oct 2018 18:47:19 +0800</pubDate><description><![CDATA[openNewTab(to) {
    const routeData = this.$router.resolve(to)
    window.open(routeData.href, '_blank')
}

调用
openNewTab({name: name, query:{query: query}})


]]></description><category></category></item><item><title><![CDATA[phpstorm 设置 webpack alias 路径]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/82878510</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/82878510</guid><author>ROVAST</author><pubDate>Fri, 28 Sep 2018 11:20:19 +0800</pubDate><description><![CDATA[文章目录
成功后的效果图

进行 如下设置，正确配置 webpack 目录即可


]]></description><category></category></item><item><title><![CDATA[ubuntu/deepin 下增加 phpstorm 桌面快捷方式 phpstorm.desktop]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/82495099</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/82495099</guid><author>ROVAST</author><pubDate>Fri, 07 Sep 2018 13:18:20 +0800</pubDate><description><![CDATA[[Desktop Entry]
Encoding=UTF-8
Name=phpstorm IDE
Comment=The Smarter Way to Code
Exec=/bin/sh &amp;quot;/home/rovast/Software/PhpStorm-182.4129.45/bin/phpstorm.sh&amp;quot;
Icon=/home/rovast/Software/PhpStorm-182.4129....]]></description><category></category></item><item><title><![CDATA[win10 子系统之 Ubuntu，解放你的生产力]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/82156971</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/82156971</guid><author>ROVAST</author><pubDate>Wed, 29 Aug 2018 00:41:50 +0800</pubDate><description><![CDATA[


win10 子系统能带来什么
如何安装子系统
0、windows 系统版本
1、开启开发者选项
2、打开子系统功能
3、打开 miscrosoft store 安装 ubuntu 子系统


启用子系统
在子系统中安装 nginx 来测试是否可以共享端口
注意事项
1、重启 windows 后，服务不可用
2、windows 和 Linux 目录对应关系









题主很少为 win...]]></description><category></category></item><item><title><![CDATA[Vue检测object变化]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/81188960</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/81188960</guid><author>ROVAST</author><pubDate>Tue, 24 Jul 2018 17:30:20 +0800</pubDate><description><![CDATA[在开发中，object必不可少。使用Vue时，往往会结合 watch 和 computed 等方法进行更好地编码。

如何检测 object 的属性变化是个问题。



let app = new Vue({
  data:{
    user:{
      name:&quot;apple&quot;,
      color:&quot;red&quot;
    }
  },
  computed:{
    fullName:...]]></description><category></category></item><item><title><![CDATA[运维中的日志切割操作梳理（Logrotate/python/shell脚本实现）]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/80704688</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/80704688</guid><author>ROVAST</author><pubDate>Fri, 15 Jun 2018 14:12:00 +0800</pubDate><description><![CDATA[原文：  
《运维中的日志切割操作梳理（Logrotate/python/shell 脚本实现）》




配置文件介绍
切割介绍
分享一例曾经使用过的 nginx 日志切割处理脚本
logrotate 日志分割配置：
日志分割脚本
crontab 定时执行
php 脚本切割一例
nginx 日志切割一例
系统日志切割一例
tomcat 日志切割一例
早期用过的 nginx 日志处理一例
尝试解决...]]></description><category></category></item><item><title><![CDATA[apache 80跳转至 443]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/80615782</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/80615782</guid><author>ROVAST</author><pubDate>Thu, 07 Jun 2018 21:52:34 +0800</pubDate><description><![CDATA[&amp;lt;VirtualHost *:80&amp;gt;
ServerName your.domain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
&amp;lt;/VirtualHost&amp;gt;]]></description><category></category></item><item><title><![CDATA[根据名称杀死进程]]></title><link>https://blog.youkuaiyun.com/ROVAST/article/details/80590107</link><guid>https://blog.youkuaiyun.com/ROVAST/article/details/80590107</guid><author>ROVAST</author><pubDate>Wed, 06 Jun 2018 09:21:33 +0800</pubDate><description><![CDATA[sudo kill -9 $(ps aux | grep artisan | awk '{print $2}')]]></description><category></category></item></channel></rss>