去掉大白菜的广告

大白菜装机PE是我一直使用的PE,以前自己做,但自己做麻烦,后来也没精力去做了,遇到大白菜后感觉大白菜功能也不少,更新也及时,满足使用,就换成大白菜了。

不知从哪一天起,大白菜开始有广告了。理解大白菜的做法,但我都是用与工控系统,就是要纯净的系统,放一大堆我讨厌的软件算个什么事呢?好在大白菜为我们提供了去掉赞助推广的选项。但这就可以了吗?装完以后还是发生主页被改了,后台悄悄下载东西了……。

开刀吧,根治它。首先安装完系统后,看看系统里改变了什么!system32下多了67Gj5RNzvu.exe的文件,那就从这个文件入手,大白菜的文件里找遍了,没有这个文件,是不是隐藏的更深!通过文件大小比对,原来有一个文件C0NIME跟这个大小一样!哈哈,只是改了个名字!

这个C0NIME.exe共存在在两个地方。一个是DBC8.iso,解开有dbc8.wim,这里边的system32下的在pe里用wimtool删除。删除后再封起来。OK!干净了。在PE03里的文件存在与DBC3.7z里,这个就需要下载7z删除后再放回去了。

DBC8.iso这个文件有120M,改好后竟然放不回去了,提示空间不足。没关系,删了原来的肯定空间是有的,我们只需要再整理磁盘空间就可以了。整理完就可以再放回去了。OK完工!一个清爽的大白菜又回来了。

发表在 随手杂记 | 去掉大白菜的广告已关闭评论

ONES erp 安装笔记

CentOS安装ONES过程

官方文档介绍:

环境依赖

  • bower
  • composer
  • php 5.5.9+
  • mysql 5.6.5+

PHP和MySQL版本均为最低要求版本,安装前请先确认。

通过CLI安装

$ git clone http://git.oschina.net/xiaolan/ones ones # 取得最新代码
$ cd ones

$ npm install # 安装依赖 非必须
$ bower install # 安装依赖

$ cd server
$ composer install # 安装后端第三方依赖

$ php install/install.php # 简易安装向导,根据提示步骤来

$ cd ..
$ grunt build # 打包前端文件 非必须,部署环境下使用

常见问题及注意事项

dist

ONES源码库中并不包含dist目录,dist目录是ONES前端打包的目录;开发环境中建议访问/ones目录;部署环境中使用 grunt build来创建dist目录(注意修改前端DEBUG模式为false,后端不要修改)。

修改配置

  • 数据库连接配置: /server/phinx.yml
  • 后端配置: /server/Application/Common/Conf/config.php
  • 前端配置: /ones/common/config.js 以上配置通常通过安装向导安装完成后,会自动设置,无特殊情况通常不需要再手动修改。

安全指引

因为ONES 1.x之后的版本中大部分使用yaml格式为配置文件,但yaml格式在webserver中并没有被禁止访问的时候,可能会暴露敏感信息;所以在webserver的配置中,需要将 *.yml 文件设为禁止访问,这并不影响ONES使用。

升级

首先需要通过git获得最新源码,然后重新执行一遍npm install, bower install。最后同步数据库结构:

php vendor/robmorgan/phinx/bin/phinx migrate

第一步在cenos上默认git不能使用,需要支持git
yum install -y git
第二部,nmp命令,需要安装nodejs
yum install gcc-c++ openssl-devel 依赖包
完毕之后,我们输入gcc -v检查是否有出现版本号,如果有说明没有问题。
python –version执行之后看看版本,Node.js环境需要Python2.6以上,我们需要检查,如果不是则需要安装和升级Python。
cd /usr/local/src
wget http://nodejs.org/dist/node-latest.tar.gz
wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz
tar -zxvf node-latest.tar.gz
cd node-v***
./configure
make && make install
执行完毕之后,我们输入node -v看看是否看到版本。

安装NPM

curl https://npmjs.org/install.sh | sh

安装express

npm install express -g

安装好node和npm后,使用nmp安装bower工具:

npm install -g bower

这个过程很慢可以使用taobao的npm源

npm config set registry https://registry.npm.taobao.org

Composer的安装和使用
curl?-sS?https://getcomposer.org/installer?|?php

mv?composer.phar?/usr/local/bin/composer

composer?-V

安装grunt

npm install -g grunt-cli

更新

npm install -g minimatch
npm install -g lodash
npm install -g graceful-fs

npm i npm -g

新建用户

adduser ***
passwd ***

bower要使用非sudo权限的用户。
修改composer更新源

composer config -g repo.packagist composer https://packagist.phpcomposer.com
发表在 待分类 | ONES erp 安装笔记已关闭评论

twaver学习


<!DOCTYPE html>
<html>
<head>
<title>HTML5 Demo</title>
<script type="text/javascript" src="2d/lib/twaver.js"></script>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
var box = new twaver.ElementBox();
var network = new twaver.vector.Network(box);
function init() {
initNetwork();
initDataBox();
}
function initNetwork() {
var view = network.getView();
document.body.appendChild(view);
network.adjustBounds({x: 0, y: 0, width: 1300, height: 1000});
network.getToolTip = function (element) {
var Id = element.getId();
var name = element.getName();
var name2 = element.getName2();
var icon = element.getIcon();
var clientProperty = element.getClient('clientProperty');
return 'Id:' + Id + '<br>' + 'name:' + name + '<br>' + 'name2:' + name2+
'<br>' + 'icon:' + icon;
}
twaver.Styles.setStyle('label.color','#ec6c00');
twaver.Styles.setStyle('label2.color','#57ab9a');
twaver.Styles.setStyle('select.color','#ef8200');
}
function initDataBox() {
var node = new twaver.Node({
name: 'from',
id: '1',
location: {
x: 300,
y: 200
}
});
node.setClient("textName","bb");
node.setImage("textNode");
box.add(node);
var node2 = new twaver.Node({
name: 'to',
name2: 'to2',
location: {
x: 500,
y: 250
}
});
box.add(node2);
var node3 = new twaver.Node({
name: 'to',
name2: 'to3',
location: {
x: 600,
y: 250
}
});
box.add(node3);
var link = new twaver.Link(node3, node2);
link.setName('Hello TWaver!');
//link.setName2('Hello Vector!');
link.setClient('clientProperty',node);
link.setClient('value', 'hello');
box.add(link);

setInterval(function () {//放到initDataBox里。定时更新用。
//link.setName((new Date()).toString());//连线上更新。
node.setClient('textName',(new Date()).toString());
}, 1000);
}

$(document).ready(function () {
setInterval("startRequest()",1000);
});
function startRequest()
{
$("#date").text((new Date()).toString());
$("#aa").text("test");
}
</script>
<script>
$(function(){
setInterval(aa,100);
function aa(){
$("#aa").append("a");

}
});
twaver.Util.registerImage('textNode', {
w: 80,
h: 30,
origin: {
x: 0.5,
y: 0.5
},
v: [
{
shape: 'text',
text: '<%= getClient("textName") %>',
textAlign: 'center',
textBaseline: 'top',
font: 'bold 10px arial',
x: 0,
y: 0
}
]
});
</script>
</head>
<body onload="init()">
</body>
<div id="aa"></div>
<div id="date"></div>
</html>

发表在 网络知识 | twaver学习已关闭评论

网易企业邮箱登陆代码


<!--企业邮箱-->
<form action="https://entry.ym.163.com/login/login" method="POST" name="dform" >
<input type="hidden" name="domain" value="hbbsny.com" />
<label >邮箱:</label>
<input type="text" style="width:80px" name="account_name" />
<b>@</b><strong>hbbsny.com</strong>&nbsp;
<label >密 码:</label>
<input type="password" style="width:80px " name="password" />
<!--<input type="checkbox" class="ipt-c" name="ssl" checked />-->
<button type="submit"><span>登 录</span></button>
</div>
</form>
<!--企业邮箱-->

发表在 待分类 | 网易企业邮箱登陆代码已关闭评论

简易WEBserver

MyWebServer

支持asp,可扩展PHP等。轻量级。

发表在 待分类 | 简易WEBserver已关闭评论

PHP进制转换应用


<?php
$sendStr = '30 32 30 34 03 30 33';? // 16进制数据
$sendStrArray = str_split(str_replace(' ', '', $sendStr), 2);? // 将16进制数据转换成两个一组的数组
$socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp"));? // 创建Socket
if (socket_connect($socket, "192.168.1.204", 1000)) {? //连接
for ($j = 0; $j < count($sendStrArray); $j++) {
socket_write($socket, chr(hexdec($sendStrArray[$j])));? // 逐组数据发送
}
$receiveStr = "";
$receiveStr = socket_read($socket, 1024, PHP_BINARY_READ);? // 采用2进制方式接收数据
$receiveStrHex = bin2hex($receiveStr);? // 将2进制数据转换成16进制
$RArray = str_split(str_replace(' ', '', $receiveStrHex), 2);? // 将16进制数据转换成两个一组的数组
echo "client:" . $receiveStrHex;
var_dump( $RArray);
echo $RArray[2];
}
socket_close($socket);? // 关闭Socket
?>

发表在 待分类 | PHP进制转换应用已关闭评论

swoole应用

实现了数据发送json格式后存储到数据库,同时存储到cache文件里。


<?php
/*
$cache_set = array(
//缓存路径 , 最后要加"/"
'cacheRoot'=>'./cache/',
//缓存时间
'cacheTime'=>20,
//cache type
'cacheType'=>1,
//扩展名
'cacheExe'=>'.php'
);
$cache = new Cache($cache_set);
$a=array('1','2');
$a="aaa";
$b='';
if($cache->cache_is("d")){
$c=$cache->cache_read("d");
echo "c";
print_r($c);
}else {
$b=$cache->cache_data('d',$a);
}
print_r($b);
//$cache->clear("a");
//echo $cache->cache_read("./cache/d.php");
//echo $d;
*/


/**
* 数据缓存类 v1.0
* @author shooke
* 2009-11-13 16:02:26
* 用于缓存数据,如变量,但不能缓存页面
*/
class Cache{
//配置
public $config = array(
//缓存路径
'cacheRoot'=>'./cache/',
//缓存时间
'cacheTime'=>1,
//cache 类型 1串化数据 2变量
'cacheType'=>2,
//扩展名
'cacheExe'=>'.php'
//转换中间变量
);

public $return_name=array();

function __construct($cache_set = array())
{
if(!empty($cache_set)) $this->config=array_merge($this->config,$cache_set);
$this->config['ClassName'] = __CLASS__;
}

public function clear($filename=''){
if (file_exists($this->cache_file($filename))) {
@unlink($this->cache_file($filename));
}elseif (empty($filename)){
$this->clear_dir($this->config['cacheRoot']);
}else{
$this->clear_dir($this->config['cacheRoot'].$filename);
echo $this->config['cacheRoot'].$filename;
}
}
//循环删除路径
private function clear_dir($dir,$to = false)
{
if ($list = glob($dir.'/*'))
{
foreach ($list as $file)
{
is_dir($file) ? $this->clear_dir($file) : unlink($file);
}
}

if ($to === false) rmdir($dir);
}

//写入缓存
private function cache_write($filename, $writetext, $openmod='w'){
if (!file_exists($filename)) {
@$this->makeDir( dirname($filename ));
}
if(@$fp = fopen($filename, $openmod)) {
flock($fp, 2);
fwrite($fp, $writetext);
fclose($fp);
return true;
} else {
echo "File: $filename write error.";
return false;
}
}

//缓存有效期 有效返回 true
public function cache_is($fileName){
$fileName=$this->cache_file($fileName);
if( file_exists( $fileName ) ) {
//如果缓存时间为负数则永不过期
if ($this->config['cacheTime'] < 0) {
return true;
}
//如果缓存时间为0则一直过期
if ($this->config['cacheTime'] == 0) {
return false;
}
//获取缓存文件的建立时间
$ctime = intval(filemtime( $fileName ));
//比较是否大于缓存时间,是则过期 否则不过期
if (time() - $ctime > $this->config['cacheTime']) {
return false;
}else {
return true;
}
//文件不存在视为过期失效
}else {
return false;
}
}

public function cache_data($name,$data){
$varname=$name;
$name = $this->cache_file($name);
//config['cacheTime']==0也就是不启用缓存是直接返回数据
if ($this->config['cacheTime'] <> 0) {
if($this->config['cacheType']==1){
$write_data = "<?php exit;?>".serialize($data);
//return $data;
}else {
$write_data = "<?php\r\n\$var= ";
$write_data .= var_export($data,true);
$write_data .=";\r\n?>";
}
$this->cache_write($name,$write_data);
}
return $data;

}
//缓存文件名
private function cache_file($filename){
return $this->config['cacheRoot'].$filename.$this->config['cacheExe'];
}

//读取文件
public function cache_read($file){
$file=$this->cache_file($file);
if (!file_exists($file)) {
return '';
}
if($this->config['cacheType']==1){
if (function_exists('file_get_contents')){
$cache_Content= file_get_contents($file);
}else{
$fopen = fopen($file,'r');
$cache_Content = '';
do {
$data = fread($fopen,filesize($file));
if (strlen($data)===0) break;
$cache_Content .= $data;
}while(1);
fclose($fopen);
}
$cache_Content = substr($cache_Content,13);/* 去除<?php exit;?> */
$cache_Content = unserialize($cache_Content);
return $cache_Content;
}else{
include_once($file);
return $var;
}

}

//循环创建目录
private function makeDir( $dir, $mode = 0777 ) {
if( ! $dir ) return 0;
$dir = str_replace( "\\", "/", $dir );
$mdir = "";
foreach( explode( "/", $dir ) as $val ) {
$mdir .= $val."/";
if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;

if( ! file_exists( $mdir ) ) {
if(!@mkdir( $mdir, $mode )){
return false;
}
}
}
return true;
}

}

?>

<?php
require('Cache.php');
$cache_set = array(
//缓存路径 , 最后要加"/"
'cacheRoot'=>'./cache/',
//缓存时间
'cacheTime'=>20,
//cache type
'cacheType'=>1,
//扩展名
'cacheExe'=>'.php'
);
function is_json($string) {
json_decode($string);
return (json_last_error() == JSON_ERROR_NONE);
}
$serv = new swoole_server("0.0.0.0", 9501, SWOOLE_BASE, SWOOLE_SOCK_UDP);
$serv->set(array(
'dispatch_mode' => 1,
'worker_num' => 4,
));
$serv->on('Start', function ($serv){
echo "MasterPid={$serv->master_pid}|Manager_pid={$serv->manager_pid}\n";
echo "Server: start.Swoole version is [".SWOOLE_VERSION."]\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
if (is_json($data)){
$array=json_decode($data);
if (array_key_exists("add",$array)){
$a=$array->add;
$cache_set = array(
//缓存路径 , 最后要加"/"
'cacheRoot'=>'./cache/',
//缓存时间
'cacheTime'=>20,
//cache type
'cacheType'=>1,
//扩展名
'cacheExe'=>'.php'
);
$cache = new Cache($cache_set);
$cache->cache_data('add'.$a,$fd);
foreach($array as $key=>$value)
{
if ($key<>"add"){
$db_host = '127.0.0.1'; //数据库主机名称,一般都为localhost
$db_user = 'hsg'; //数据库用户帐号,根据个人情况而定
$db_passw = 'hongshigou'; //数据库用户密码,根据个人情况而定
$db_name = 'hsg'; //数据库具体名称
//连接数据库
$conn = MySQL_connect($db_host,$db_user,$db_passw) or die ('数据库连接失败!');
//设置字符集,如utf8和gbk等,根据数据库的字符集而定
//MySQL_query("set names 'utf8'");
MySQL_query("set names 'gb2312'");
//选定数据库
MySQL_select_db($db_name,$conn) or die('数据库选定失败!');
//执行SQL语句(查询)
$sql = "INSERT INTO `hsg`.`data` (`point` , `val`)VALUES ('$key$a', '$value');";
$result = MySQL_query($sql) or die('数据库查询失败!<br/>可能数据库中没有记录'); //SQL语句在这里执行
if(!$result){
echo $fd." ";
}
$cache->cache_data($key.$a,$value);
mysql_close($conn);
}
}
$serv->send($fd, "OK");
}
}
});
$serv->start();
?>

发表在 网络知识 | swoole应用已关闭评论

IC卡钱包数据分析

IC卡,M1卡共计16个扇区,每个扇区3个数据区,一个控制区。分为0-63区块。0区块为只读区块,存储了序列号和厂商编码。

IC卡的钱包功能。
任意的数据区都可以设置为钱包功能,设为钱包功能后可以进行增值和减值操作。
钱包扇区的数据格式:
01000000FEFFFFFF0100000001FE01FE解析为:
01000000(低位在前,高位在后,共4字节)FEFFFFFF(金额的反码)01000000(金额值)01(数据块编号)FE(数据块编号的反码)01FE(数据块编号及反码)

 

发表在 待分类 | IC卡钱包数据分析已关闭评论

swoole安装

安装wdcp3.0可以使用centos6.5,在7版本的系统上会出现问题。

安装完毕后需要设置php到环境变量中。

修改 ect/profile

加入:

export PATH=”$PATH:/www/wdlinux/php/bin:/www/wdlinux/mysql/bin”

然后重启。

重启后可以用php –version命令了就是设置正确

安装完PHP后,即可安装swoole扩展。 swoole扩展下载地址:https://github.com/swoole/swoole-src/releases?尽量选择stable版本,alpha版本最好仅用于实验新特性。 解压源码至任意目录,执行如下命令:

cd swoole-src-swoole-1.7.6-stable/
phpize
./configure –enable-async-mysql
sudo make
sudo make install

(注:swoole的./configure有很多额外参数,可以通过./configure –help命令查看,这里仅开启其中async-mysql项,其他均选择默认项) 安装完成后,进入/etc/php目录下,打开php.ini文件,在其中加上如下一句:
extension=swoole.so

重启web服务后,即可检查swoole是否安装成功。

 

 

命令行下,使用到的命令:

ls列出文件夹目录
cd ../ 返回上级目录
vi 编辑文件
VI里i就可以编辑,编辑好后ESC,再”:wq”保存退出。

tar? -zxvf 解压tar.gz格式文件

 

centos7下,设置环境变量后执行

source /etc/profile

不报错就可以。

发表在 待分类 | swoole安装已关闭评论

centos5.4虚拟机安装

正常安装后,vmtools的安装:

光盘里因为没有权限会提示安装失败。

把安装包解压到其它位置后再运行,就可以 了

全新安装环境全新后台
wget http://dl.wdlinux.cn/files/lanmp_v3.tar.gz
tar zxvf lanmp_v3.tar.gz
sh lanmp.sh

安装apache时,源码有错误,少了;号,需要手动加上就可以编译通过。

安装PHP时,

PHP 5.4 Install php-intl extension on centos 5 with latest ICU data | Development life?

wget http://download.icu-project.org/files/icu4c/4.8.1.1/icu4c-4_8_1_1-src.tgz
tar -xvf icu4c-4_8_1_1-src.tgz
cd icu/source/
./runConfigureICU Linux
make
make install

修改网卡自动连接的文件夹:/etc/sysconfig/network-scripts/

发表在 待分类 | centos5.4虚拟机安装已关闭评论