您当前位置: 首页 » 所有由

admin

发布的文章
所有由admin发布的文章 - 第9页

[win]用脚本定时检查a和b进程是否存在

一下是一段脚本用于检查某个进程是否存在

@echo off 
:star
ping 127.1 -n 5 >nul 2>nul
tasklist|findstr /i "a.exe" > nul
if errorlevel 1 ( echo "[%date% %time%] a.exe **没有找到**"
) else ( echo "[%date% %time%] a.exe ==正在运行==" )
tasklist|findstr /i "b.exe" > nul
if errorlevel 1 ( echo "[%date% %time%] b.exe **没有找到**"
) else ( echo "[%date% %time%] b.exe ==正在运行==")
echo -------------------------------------
goto star
2014-11-13 | | windows-shell

[win]用脚本定时检查a和b进程是否存在已关闭评论

DebugBreak 与 _CrtDbgBreak 区别

首先_CrtDbgBreak是的 断言函数。

DebugBreak 与 _CrtDbgBreak 都是断言函数。

 

根据msdn中对DebugBreak的描述 和 (DebugBreak vs AfxDebugBreak vs _CrtDebugBreak vs __debugbreak)得知:

DebugBreak:

1,在release和debug版本下均有效

2,是一个系统调用,在做调试的时候,需要把windows的符号表加载起来一起用才可以观察到完整的异常栈,否则可能只看得到最后的那一点(帧)栈信息

_CrtDbgBreak

1,只有在debug下有效

2,函数可能在msdn上没有任何说明,类似私有api?或未写入文档的官僚函数(M$一贯的作风)?

 

其中在msdn的文档中提到,和DebugBreak相似的函数还有__debugbreak而,__debugbreak是不需要符号表,具体的 __debugbreak文档 并没有找到

 

在VS中创建一个win32工程,当使用VS/win自带的类库出现异常时,在debug版本下的断言均是_CrtDbgBreak被调用。

2014-10-23 | | win api

DebugBreak 与 _CrtDbgBreak 区别已关闭评论

【重要】2014上半年回顾

2014我定了两个方面的目标,一个是实,一个实虚的。

所谓实目标,就是一定要去执行,至于完成的程度至少达到60%(比掌握差些程度)

所谓虚目标,就是可以不执行也可以执行,对于目标的达成能达到20%即可(了解程度)

往往实目标主要是和未来职业规划有关,而虚目标主要和当前工作内容有关,或者是一个备选的职业方向。

readmore

2014-08-24 | | *生活*, now-way

【重要】2014上半年回顾已关闭评论

有时候不能明知故犯了

从小就被教育,饭点时候不正常吃饭到时候肚子饿了没人管。

小时候比较跳,所以有时候饭点不正常吃饭,很喜欢吃零食度过,不过小时候体型还不算非常胖,也好动。

“饭点不吃饭,到时候肚子饿没人管”的意识后来逐渐形成,一直延续至今,要说纠正这个错误的观点确实太难了。毕竟小时候确实经历过太多次这种情形。

长大以后,一到饭点有时候会潜意识的用这句话进行暗示,事实上当时很可能不想吃。后来么。。。。就形成习惯了,然后就越长越肥了。。。。。

现在物质生活逐渐充实起来,我觉得如果饭点不想吃饭的话,就不要勉强,中途肚子饿的话,可以用一点零食改善一下血糖。这样既可以控制体重和血痰的关系,也能防止一些胃病的发生。

除了有时候需要改变上面说的一些观念以外,可能在一些方面也需要调整。例如遇到不想吃饭的时候,就应该果断的提出想法,而不应该过于顺应大众的思维。虽然能够换来一点点微不足道的好评价,但对自身的身体和长久的职业发展完全无利。

身体才是本,眼前的一些东西其实一点意义都没有。

 

随着秋天的到来,天气将渐渐出现一段时间的好转,在这段时间里,要加强运动。每天顶电脑的时间一定要控制,不管有没有事情,晚上的时间一定是留出一部分进行户外运动的,除非天气因素。

工作永远是工作,那是老板的。身体和票子才是自己的!

2014-08-24 | | *生活*

有时候不能明知故犯了已关闭评论

现实对人的教育意义才是最直接,最有效!

标题看上去很严肃,或者很有一股愤怒的感觉。事实上确实最近很恼火,但写这篇文章最总的目的其实只想说减肥的事情。

先说说为什么现实的教育意义最直接,最有效。每个胖子相信自己肯定都不是胖子或者不是最胖的,但事实上呢,你很肥的事实是存在的。因为现在还年轻,很多人(肥仔)可能没有感觉到身体其实在发生着各种不好的变化。

体重变大的坏处:

1,膝盖的负担越来越重,尤其是走、跑、跳的时候,由于体重太大了,以至于脚每次落地时需要扛住巨大的能量冲击。

2,在走路或者运动时,身体的肥肉一晃一晃的会间接拉长人的皮肤,一些人容易出现皱纹(哥是汉纸,哥不怕)

3,胖的人有较高的概率出现低血糖,这主要和肥仔的饮食习惯有关。就拿我来说,我并不喜欢吃甜食,也不喜欢吃零食;但我的“糖分”摄入量还是比较大的。在吃饭的时候我吃饭速度太快,由于饱腹信号作用缓慢(信号产生、传递),吃饭速度快于信号作用速度,一不小心就吃多了,并且把胃给撑大了。等到信号发生作用成功时,其实我已经严重过量进食了;然后在接下来的过程中呢,胰岛开始干活了,肥肉积累开始,在这个积累过程中也是需要消耗能量的,当积累到一定时间后,血糖不足了。。。然后你就懂了。这是一个恶性循环的开始!!!!!!!!

还有一个就是,人体消耗脂肪是需要能量的,因此在脂肪转化成能量之前是需要大量的糖分参与。当人体开始消耗脂肪时,这个时候更容易感到肚子饿,因为血糖。。。。。。。

4,血液粘稠。血液粘稠的原因有很多,其中有一个主要原因就是血糖、血脂、固醇浓度太高。血液粘稠会影响血液流动的速度,血液速度变慢,人反应也会变慢。接着长期粘稠容易出现栓塞,如果脑部微血管栓塞就会形成微型中风,接着呢你离真“脑残”就不远了。

改变血液粘稠虽然可以多喝水来稀释,但也存在很严重的弊端。我就是在很早以前通过自我暗示来加大饮水量,饮水量过大其实害处也不少,水中毒,肾功弱,体内营养流失过快。所以也不能一味的追求和大量的水来改善这个问题。

 

5,长得胖,如果不是天生胚子好。那么十胖子九丑!

6,太胖带来各种不便,如果太胖子那么小车你是做不了了。例如两厢紧凑车,还有自行车等。没法弯腰,行动不灵活等。

 

骚年该控制进食量了。。。。。。。。

2014-08-24 | | *生活*

现实对人的教育意义才是最直接,最有效!已关闭评论

【debian7】自动备份目录shell脚本

这个脚本的原型来自之前提到的db备份脚本,但做了一些改动略有不同。

这次的脚本支持逗号分隔的kv输入,具体输入文本格式如下

+------------------+--------------+----------------+
| folder full path | separator(,) | folder descript|
+------------------+--------------+----------------+
| /var/aaaaa/      |    ,         | aaaa11111      |
+------------------+--------------+----------------+

发送到邮箱的标题命名:web_bak_${folder descript}_${data}

具体shell代码如下:

#!/bin/bash
 
#need 2 var
if (($# != 2)); then
        echo "need input [Web Site Name Full Path in File] [mode]"
        echo "mode -> 0, <Web Site Name Full Path in File> read!"
        echo "mode -> 1, do Web Site bak!"
        exit;
fi
 
if (($2 < 0 && $2 > 1)); then
        echo "err mode!"
        exit
fi
 
#filter some lines:
# 1. pure tab line
# 2. pure \r\n
# 3. pure space line
WebSiteFullPathInFilePath=$1
sed /^[[:space:]]*$/d $WebSiteFullPathInFilePath > $WebSiteFullPathInFilePath".tmp"
 
#################################################### 
#pre-info
#
# +----------+--------------+-------------+
# | fullpath | separator(,) | description |
# +----------+--------------+-------------+
#
####################################################
loop_count=0
bak_WebSiteFullPathInFilePath_target=1
bak_WebSiteDescriptionFilePath_target=1
echo "WebSiteFullPathInFilePath: "$WebSiteFullPathInFilePath" <<<>>>  WebSiteFullPathInFilePath_tmp: "$WebSiteFullPathInFilePath".tmp"
echo ============ output all web site info $(date +"%Y%m%d")  ==================
while read -r line
do
	#echo $line
	stringlen=${#line}
	keyend=$(expr index $line ',')
	key=${line:0:$keyend-1}
	value=${line:$keyend:$stringlen-$keyend}

	#echo "stringlen: "$stringlen" keyend: "$keyend" key: "$key" value: "$value

	bak_WebSiteFullPathInFilePath_target[loop_count]=$key
	bak_WebSiteDescriptionFilePath_target[loop_count]=$value
        ((loop_count++))
done < $WebSiteFullPathInFilePath".tmp"

i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
 echo "website name: "${bak_WebSiteDescriptionFilePath_target[$i]}
 echo -e "\twebsite full path: "${bak_WebSiteFullPathInFilePath_target[$i]}"\n"
done
echo "total - "$i
echo ============ end ==================

if (($2 == 0)); then
        echo "test over"
        exit;
fi

if (($i<=0)); then
 echo "don't have website full path!"
 exit
fi

#do work
i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
        WebSiteFullPath=${bak_WebSiteFullPathInFilePath_target[$i]}
	WebSiteDescription=${bak_WebSiteDescriptionFilePath_target[$i]}
        BakName_tmp=website_bak_${WebSiteDescription}_$(date +"%Y%m%d")

	#mkdir
	mkdir /tmp/website_bak
	mkdir /tmp/website_bak/${WebSiteDescription}

        #del bak file before 3 days
        rm -rf /tmp/website_bak/${WebSiteDescription}/website_bak_${WebSiteDescription}_$(date -d -3day +"%Y%m%d").tar.gz

        #compact file
        tar zcf /tmp/website_bak/${WebSiteDescription}/$BakName_tmp.tar.gz $WebSiteFullPath

        #Send mail
        mutt -s $BakName_tmp "email@163.com" -a /tmp/website_bak/${WebSiteDescription}/$BakName_tmp.tar.gz < /var/auto_script/emptytext.txt
done

同样作为定时任务,将命令执行放在crontab中

2014-08-24 | | linux-shell

【debian7】自动备份目录shell脚本已关闭评论

gclient下载chromium代码及代码构建(chromium 36版本,gclient使用http代理)

新版本的chromium代码下载方式远比以往的版本要麻烦了一些。

首先说一下chromium几个必备的条件,我的系统是win7 64就按照这个环境描述。

必须安装环境:

win8 sdk

directx sdk

vs 2010(至少)

 

由于vs 2010对C++11支持的问题,试了好几次实在受不了了果断装了vs 2013,所以我的新环境是:

vs 2013 update 3

win8 sdk

directx sdk(没有装,也不清楚vs 2013会不会帮我装,遇到编译问题再说)

 

准备好环境以后就是下代码,我觉得vpn太麻烦,所以下面用的http代理方式,下面是配置http代理:


set http_proxy=http://127.0.0.1:808

#配置winhttp代理,cscript 走代理
netsh winhttp set proxy 127.0.0.1:808 

git config --global http.proxy http://127.0.0.1:8080

#svn配置略,这个简单

 

配置好http代理以后,需要做的就是拿代码,如果是一个新建的chromium环境,由于没有代码和.gclient文件,所以不能直接用gclient sync,官方也没有说gclient config要怎么配。

所以按照官方的说明就只能通过fetch拿代码了:

<pre>#从代码库拿chromium
fetch --nohooks --no-history chromium --nosvn=True

#看看在拿代码的期间有没有什么代码产生变动
gclient sync --force --nohooks

 

拿完代码以后,让gclient生成vs 2013工程配置

<pre>set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2013

gclient unhooks --force

 

这样就完成了整个chromium代码的下载和工程配置,接下来就是编译的事情了。

新版本的gclient和获取chromium方式带来了很多问题,通过google发现其实gclient的bug还很多,这需要各种斗智斗勇。。。。。。

 

2014-08-22 | | chromium

gclient下载chromium代码及代码构建(chromium 36版本,gclient使用http代理)已关闭评论

gclient 生成webrtc对应的vs 2010解决方案及工程

通过gclient拿下来的只有代码和一堆配置文件,需要让其生成工程文件。

由于已经安装vs 2010和win8 sdk了。不打算走vs 2013的路线,参考chromium官方文档后,需要在执行gclient runhooks之前执行以下环境变量的配置

set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.0"
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2010
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

其中几个参数的说明:
GYP_DEFINES 指明win8 sdk的位置。
GYP_GENERATORS 指明是msvs环境
GYP_MSVS_VERSION 指明是2010 pro版本

DEPOT_TOOLS_WIN_TOOLCHAIN 让gclient不要自动去构造环境,利用本机现有环境即可。

由于代码中用到了c++11还有一些其他我还没搞清楚的特性,所以编译代码最好用vs 2010。vs 2008可能会存在大量的问题。

2014-08-14 | | chromium

gclient 生成webrtc对应的vs 2010解决方案及工程已关闭评论

gclient 走代理方式获取google开放源码 — gclient内git走http代理

继 《gclient 走代理方式获取google开放源码 — gclient说明》

我这边的环境比较奇怪,gclient总是会找google去下chromium对应的git包,它不使用环境里面的git,这样也好,在gclient的配置至少不会影响到大局。

1,进入cmd

2,cmd中配置让cmd走代理(我的http代理不需要认证,所以注释掉了其中两个命令)

set http_proxy=http://127.0.0.1:8080

#set http_proxy_user=<你的用户名>
#eset http_proxy_pass=<你的密码>

3,配置gclient的git走http代理,在之前的cmd中执行如下命令

#gclient git的位置
cd D:\work\depot_tools\git-1.9.0.chromium.5_bin\bin

#执行配置
git config --global http.proxy http://127.0.0.1:8080

这样gclient通过自身目录下的git拿代码时就走了http代理了。

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient内git走http代理已关闭评论

gclient 走代理方式获取google开放源码 — gclient自身更新走http代理

继 《gclient 走代理方式获取google开放源码 — gclient说明》

查了一下网上的说明,基本大同小异,但还是有些地方没有说清楚。现在这里总结一下我实验成功的用法。


netsh winhttp set proxy 127.0.0.1:808 "<local>" #配置winhttp代理
set http_proxy=http://127.0.0.1:808             #gclient 的 python脚本里的urllib2和其他几个对象默认使用http代理

 

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient自身更新走http代理已关闭评论

gclient 走代理方式获取google开放源码 — gclient说明

chromuim和webrtc均使用了gclient。

实际上直接使用svn或git将代码拿下来也是可以的,但只不过gclient做了一些工程配置相关的行为,不使用gclient去管理源码,后期对代码的编译、修改都多少会有点影响。

从chromium项目上拿下来的gclient是缺少几个必备的辅助工具:python runtime、svn、git。

我的win7下已经安装了git和svn,很奇怪的是gclient每次都会自动去下git和svn,也引起也不小的困扰。

先说说gclient拿代码的几个步骤:
1,检查gclient是否完整
*2,如果不完整就安装缺少的东西,或者更新gclient自身
3,拿代码(假设运行的是gclient sync)

对于第二步来说,gclient下python、svn、git等工具均是采用javascript。
对于第三部来说,gclient会根据.gclient配置去使用svn/git去下载代码。

由于众所周知的原因,gclient最容易受阻的地方显然是2和3。下面几篇文章将分别说明如何解决。

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient说明已关闭评论

【debian 7】查看可执行文件依赖的so,极其目录

在编译ffmpeg的时候,发现libx264的so无法加载;后来发现加载的so位置不对。

通过ldd可以查看可执行文件以来的so文件极其位置,执行后命令输出如下:

aaa@debian-dev:~/dev_mobile$ ldd 'ffmpeg'
	linux-gate.so.1 =>  (0xb77be000)
	libx264.so.142 => /lib/libx264.so.142 (0xb75d9000)
	libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb75b3000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7599000)
	librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb7590000)
	libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb7577000)
	libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7413000)
	libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb740f000)
	/lib/ld-linux.so.2 (0xb77bf000)
2014-07-03 | | unix编程环境学习

【debian 7】查看可执行文件依赖的so,极其目录已关闭评论

【vps总结】第一次从空间将blog移植到vps的一些问题

1,需要配置apache2的虚拟站点,实际上很简单,只需要在ServerName那写清楚就行了,但目前遇到一个问题多域名同时绑定到同一个站点时,需要创建多个配置文件很麻烦,不知道有没有简单的做法

2,mysql和php之间需要有一个php5-mysql的库

3,数据库要自动备份。

4,每个站点需要创建一个自己的数据库账号,不要用root/sa

5,wp很多地方需要调整
5.1 想让wp自动升级等工作。需要给网站的目录赋予www-data权限。
5.2 如果域名或目录有修改,那么需要在wp里面配置跳转地址。
5.3 如果域名或目录有修改,想让以前放在wp上的照片可以正常看,需要在数据库里执行这条SQL语句。UPDATE wp_posts SET post_content = replace(post_content, ‘http://旧域名’, ‘http://新域名’);

6,未完待续

2014-05-31 | | vps总结

【vps总结】第一次从空间将blog移植到vps的一些问题已关闭评论

【debian7】创建自动任务

在创建自动任务之前需要安装的安装包:
cron

使用crontab来对当前用户的定时任务进行编辑
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出当前(某个)用户cron服务的详细内容
crontab -r //删除当前(某个)用户的cron服务
crontab -e //编辑当前(某个)用户的cron服务

这里使用root创建的用户,所以直接在root用户下,执行crontab -e编辑好以后然后退出编辑器即可。
如果不放心还可以执行以下/etc/init.d/cron restart

编辑好以后的脚本如下

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
25 22 * * 4 /var/auto_script/db_bak/dbbak.sh /var/auto_script/db_bak/dbname.txt 1 >> /var/auto_script/db_bak/autoworker_log.txt

其中的25代表时间的25分钟
22代表时间的22点
4代表每周星期4
/var/auto_script/db_bak/dbbak.sh /var/auto_script/db_bak/dbname.txt 1 >> /var/auto_script/db_bak/autoworker_log.txt 则是命令行

对于cron自身的配置来说,他的配置放在/etc/crontab,内容如下:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
51 * * * * root cd / && run-parts --report /etc/cron.hourly
40 1 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
48 5 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
28 2 23 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

对于cron的配置来说,尽量不要去修改,网上有些文章说,如果要执行周期性任务,可以到/etc/cron.*目录下保存脚本,我这边看到的是,大部分都是系统类任务;最好不要去这样做。混淆了脚本的分类很麻烦

2014-05-30 | | linux-shell

【debian7】创建自动任务已关闭评论

【debian7】按需备份数据(mysql),并将备份好的文件通过邮件发送到指定邮箱

首先需要安装这几个包:
mutt、uuencode、sendmail

脚本如下:

#!/bin/bash

#need 2 var
if (($# != 2)); then
        echo "need input [DBNamefile] [mode]"
        echo "mode -> 0, test DBNamefile read!"
        echo "mode -> 1, do DB bak!"
        exit;
fi

if (($2 < 0 && $2 > 1)); then
        echo "err mode!"
        exit
fi

#filter some lines:
# 1. pure tab line
# 2. pure \r\n
# 3. pure space line
DBNameFilePath=$1
sed /^[[:space:]]*$/d $DBNameFilePath > $DBNameFilePath".tmp"

#pre-info
loop_count=0
bak_DBName_target=1
echo "DBNameFilePath: "$DBNameFilePath" <<<>>>  DBNameFilePath_tmp: "$DBNameFilePath".tmp"
echo ============ output all db Name $(date +"%Y%m%d")  ==================
while read -r line
do
    #echo $line
        bak_DBName_target[loop_count]=$line
        ((loop_count++))
done < $DBNameFilePath".tmp"

i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
 echo ${bak_DBName_target[$i]}
done
echo "total - "$i
echo ============ end ==================

if (($2 == 0)); then
        echo "test over"
        exit;
fi

if (($i<=0)); then
 echo "empty db name!"
 exit
fi

#do work
i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
        DBName_Tmp=${bak_DBName_target[$i]}
        DataBakName_tmp=Data_bak_${DBName_Tmp}_$(date +"%Y%m%d")

        #del db before 3 days
        rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz

        #expory mysql db
        mysqldump -u root -ppassword $DBName_Tmp > /tmp/mysql_db_bak/$DataBakName_tmp.sql

        #compact db file
        tar zcf /tmp/mysql_db_bak/$DataBakName_tmp.tar.gz /tmp/mysql_db_bak/$DataBakName_tmp.sql

        #del temporary sql
        rm -rf /tmp/mysql_db_bak/$DataBakName_tmp.sql

        #Send mail
        mutt -s $DataBakName_tmp "email@163.com" -a /tmp/mysql_db_bak/$DataBakName_tmp.tar.gz < mailbody.txt
done

上面脚本的用法是:

./a.sh 1.txt 0

1.txt是保存要备份数据库名称的文件。

2014-05-30 | | linux-shell

【debian7】按需备份数据(mysql),并将备份好的文件通过邮件发送到指定邮箱已关闭评论