GoogleChrome多开独立缓存 /20200814.html 新建快捷方式 chrome.exe 后面加参数 --user-data-dir="D:\自定义文件夹"

例如:

1
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="F:\\ChromeX"

PS:Google Chrome自定义路径、缓存、数据文件夹

1
--user-data-dir     //用户数据目录
2
--disk-cache-size   //缓存大小(自己定义)
3
--disk-cache-dir    //上网缓存目录

参考

]]>
Chrome 多开
Excel使用问题记录 /20200528.html Word中把文字设置为标题却不改变文字的属性

视图中选“大纲”,在大纲视图中,将该段文字选定,设为一级标题。

来源百度

Excel每次打开文件都会出现一个空白sheet1文件的一个解决方法

问题

最近打开Excel文件或者只启动Excel都会出现一个空白的未保存的sheet1.xls文件,在网上搜了一波,终于找到原因。最终原因就是因为电脑装了MySQL导致的。。。

解决方法

打开Excel,在文件 - 选项 - 加载项 - 管理处选择COM加载项,点击转到… 取消勾选MySQL For Excel即可。

来源CSDN

]]>
Word Excel Office
win10误删系统变量path恢复方法 /20200311.html 折腾环境变量的时候把path直接给删掉了
注意:千万千万不要重启电脑.

解决方法:

  1. Win+R,打开运行,输入regedit,进入注册表。
  2. 定位至
    HYEK_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
  3. 修改Path
  4. 右键此电脑-属性-高级系统设置-高级-环境变量
  5. 在系统变量里找到path,编辑(或编辑文本),粘贴

如果注册表里也没了…

以下是win10默认的环境变量设置,先直接复制过去

  1. 1
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;
  2. 1
    C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel® Management Engine Components\iCLS;C:\Program Files\Intel\Intel® Management Engine Components\iCLS;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%SYSTEMROOT%\System32\OpenSSH;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT;C:\Program Files\Intel\Intel® Management Engine Components\IPT;C:\Program Files\Git\cmd;C:\DD\software\apache-maven-3.2.5\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\Program Files\Java\jdk1.8.0_144\bin;C:\Program
    原文链接
]]>
Win10 系统变量 Path
CentOS下jar包配置为系统服务 /20200310.html 一、配置service

1、创建service

首先进入到/etc/systemd/system目录

1
cd /etc/systemd/system

使用vim创建一个新文件,假设我们的项目叫sduserver

1
vi sduserver.service

内容:

1
[Unit]
2
Description=sduserver
3
After=network.target
4
Wants=network.target
5
6
[Service]
7
Type=simple
8
ExecStart=/usr/lib/jvm/java-1.8.0/bin/java -jar /home/package/sduserver.jar
9
ExecStop=/bin/kill -s QUIT
10
Restart=always
11
12
User=root
13
Group=root
14
[Install]
15
WantedBy=multi-user.target

上面的代码仅需要改三处即可:

Description=后面是你自己项目的名字
ExecStart=紧跟的是jdk的绝对目录
ExecStart这一行最后一部分是jar包的绝对目录
修改之后,按Esc键,然后输入:wq即可保存。

2、设置开机启动

运行下面代码可以设置服务为开机启动

1
systemctl enable sduserver

运行下面代码可以禁止服务开启启动

1
systemctl disable sduserver

其他命令:

运行下面代码可以启动服务

1
systemctl start sduserver

运行下面代码可以停止服务

1
systemctl stop sduserver

运行下面代码可以重启服务

1
systemctl restart sduserver

二、验证

将服务器重新启动,然后观察项目是否启动即可。

原文链接

]]>
CentOS
CentOS安装Nginx并配置转发 /20200306.html 转发效果

请求 http://www.yourdomain.com/
转发到 http://www.yourdomain.com:8080/

安装Nginx

一、配置 EPEL源

1
sudo yum install -y epel-release
2
sudo yum -y update

二、安装Nginx

1
sudo yum install -y nginx

安装成功后,默认的网站目录为: /usr/share/nginx/html

默认的配置文件为:/etc/nginx/nginx.conf

自定义配置文件目录为: /etc/nginx/conf.d/

三、开启端口80和443

如果你的服务器打开了防火墙,你需要运行下面的命令,打开80和443端口。

1
sudo firewall-cmd --permanent --zone=public --add-service=http
2
sudo firewall-cmd --permanent --zone=public --add-service=https
3
sudo firewall-cmd --reload

找到Nginx配置文件

1
[root@localhost ~]# nginx -t
2
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
3
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

修改nginx配置文件

1
...
2
server{
3
       ...
4
       #...默认转发至8080端口 Satrt 
5
        location / {
6
                 proxy_pass http://localhost:8080;
7
        }
8
       #...默认转发至8080端口 End
9
        location /nginx_status
10
        {
11
            stub_status on;
12
            access_log   off;
13
        }
14
        ...
15
     }
16
...
17
}

验证配置文件是否正确

1
nginx -t

使配置文件生效

1
nginx -s reload

Nginx操作命令

1.启动 Nginx

1
systemctl start nginx

2.停止Nginx

1
systemctl stop nginx

3.重启Nginx

1
systemctl restart nginx

4.查看Nginx状态

1
systemctl status nginx

5.启用开机启动Nginx

1
systemctl enable nginx

6.禁用开机启动Nginx

1
systemctl disable nginx
]]>
CentOS Nginx
CentOS下重置MySql密码 /20200301.html 停止mysql服务进程
1
service mysql stop

打开mysql配置文件my.cnf,在 [mysqld] 下添加skip-grant-tables #免密登录

1
vim /etc/my.cnf

重新启动mysql

1
service mysql restart

登录到数据库

1
mysql -uroot

切换到mysql数据库

1
use mysql;

更改密码

1
update mysql.user set authentication_string=password('新密码') where user='root';

刷新权限

1
flush privileges;

配置文件my.cnf,将skip-grant-tables #免密登录 删除

1
vim /etc/my.cnf

使用密码登录root用户

1
mysql -uroot -p新密码
2
如:mysql -uroot -p20200202
]]>
雨曦会翻身啦 /20200105.html 雨曦会翻身啦!

2020-01-05 22:22:22

]]>
Hexo 雨曦
使现有的VSCode成为便携版(绿色版) /20191217.html VSCode可以说是各种代码编辑器前端之中的神器了,相对体积小且扩展性强,我们希望将它携带在U盘中在各种工作环境中使用,官方也提供了在Windows,Linux和MacOS三大平台中使VSCode便携化的说明。

  • 如果你还没有VSCode, 请先下载各平台压缩包形式的版本。
  • 如果是Windows或Linux在Code.exe同级目录下创建data目录,MacOs创建code-portable-data目录。(新安装的VSCode到这一步已经是便携版了)
  • 各系统拷贝对应的Code目录到data目录(Mac下为code-portable-data目录)下并重命名为user-data:
1
Windows: %APPDATA%\Code
2
Linux: $HOME/.config/Code
3
macOS: $HOME/Library/Application Support/Code
  • 各系统拷贝插件目录extensions到data目录下:
1
Windows: %USERPROFILE%.vscode\extensions
2
Linux: ~/.vscode/extensions
3
macOS: ~/.vscode/extensions
  • 在data目录下创建tmp目录,使临时文件也存储在data目录中。(临时文件不包含必要存储的数据,洁癖和强迫症患者可以做)

原文链接

]]>
VSCode
使用Coding进行Hexo项目的持续集成 /20191212.html 使用访问令牌push代码

方法一(推荐)

Jenkinsfile

1
pipeline {
2
  agent {
3
    docker {
4
      image 'lenyuadmin/hexo'
5
    }
6
7
  }
8
  stages {
9
    stage('检出') {
10
      steps {
11
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
12
      }
13
    }
14
    stage('环境') {
15
      steps {
16
        echo '构建中...'
17
        sh 'npm config set registry http://mirrors.cloud.tencent.com/npm/'
18
        sh 'npm install'
19
        sh 'hexo -v'
20
        echo '构建完成.'
21
      }
22
    }
23
    stage('生产') {
24
      steps {
25
        echo '生产中...'
26
        sh 'hexo clean'
27
        sh 'hexo g'
28
        echo '生产完成.'
29
      }
30
    }
31
    stage('部署') {
32
      steps {
33
        echo '部署中...'
34
        dir(path: 'public') {
35
          sh 'ls'
36
          sh 'git init'
37
          sh 'git config user.name $USER_NAME'
38
          sh 'git config user.email $USER_EMAIL'
39
          sh 'git add -A'
40
          sh 'git commit -m \'init\''
41
          sh 'git push -u -f "$USER_PROJECT" master:master'
42
        }
43
        echo '部署完成'
44
      }
45
    }
46
  }
47
}

配置环境变量

1
USER_NAME = 你的昵称
2
3
USER_EMAIL = 你的邮箱
4
5
USER_PROJECT = 提交的地址
6
7
USER_PROJECT地址的规则是
8
https://子账号名:子账号的密码@项目https地址

原文链接

方法二

_config.yml

1
deploy:
2
  type: git
3
  repo: repo: https://令牌用户名:访问令牌@e.coding.net/mcontext/mContext/Blog.git
4
  branch: master

令牌用户名和访问令牌在 头像->个人设置->访问令牌

JenkinsfileContent

1
pipeline {
2
agent any
3
stages {
4
    stage('检出') {
5
      steps {
6
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
7
                                            userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
8
      }
9
    }
10
    stage('构建') {
11
      steps {
12
        echo '构建中...'
13
        sh 'node -v'
14
        sh 'npm install -g hexo-cli'
15
        sh 'npm install hexo --save'
16
        sh 'npm install -g hexo-generator-searchdb'
17
        sh 'npm install -g'
18
        echo '构建完成.'
19
      }
20
    }
21
    stage('测试') {
22
      steps {
23
        echo '单元测试中...'
24
        sh 'hexo clean'
25
        sh 'hexo g '
26
        echo '单元测试完成.'
27
      }
28
    }
29
    stage('部署') {
30
      steps {
31
        echo '部署中...'
32
        sh 'npm install hexo-deployer-git --save'
33
        sh 'hexo deploy'
34
        echo '部署完成'
35
      }
36
    }
37
  }
38
}

参考:使用Coding进行Hexo项目的持续集成

]]>
Coding Hexo持续集成
Unable to establish SSL connection. /20191209.html –secure-protocol=TLSv1

1
sh -c "$(wget --secure-protocol=TLSv1 https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
]]>
使用Hexo+Ubuntu搭建博客 /20191208.html Ubuntu

安装nodejs

1
sudo apt-get install nodejs

安装git

1
sudo apt-get install git

Hexo使用

安装nodejs,然后使用npm安装hexo

1
npm install -g hexo

创建博客文件夹

1
hexo init 文件夹的名字(假设为BLOG)
2
cd BLOG
3
npm install  //安装依赖

git配置

1
cd BLOG
2
git config --global user.name "username" // username为你自己的github用户名
3
git config --global user.email "email@example.com"

为了用于保存hexo的代码,防止hexo代码遗失,并方便不同平台博客编辑的同步,可以将hexo的代码保存到github上,方式是新建一个仓库,并进行并联

1
git remote add origin git://github.com...

修改配置文件

修改BLOG目录下的_config.yml里面的Deployment部分为
deploy:
type: git
repo: git@github.com:username/username.github.io.git
branch: master

常用命令

1
hexo g //generate ,编译成静态文件
2
hexo d //deploy, 部署网站
3
hexo s //server, 本地运行
4
hexo c //clean, 清空generate生成器的文件

新建博文

  • 先建立文件
    1
    hexo new post "newPost"
  • 编辑/source/_post/newPost.md,使用的是markdowm语法,其语法可以参考链接
  • 关于编辑的工具可以在sublime里面安一些关于markdown的插件,也可以使用markdowm cmd等工具来编辑
  • 编辑完成后
    1
    hexo generate
    2
    hexo deploy
    3
    hexo server //本地查看
    关于主题

本人使用的是 yilia
访问自己的博客:https://username.github.io/ (username为自己的用户名)

Hexo经验
使用hexo g有时会出现
TypeError: Cannot read property ‘compile’ of undefined

解决的方法降低使用的hexo的版本,打开package.json

1
"dependencies": {
2
  "hexo": "^3.1.0",   //这里修改为 3.1.1
3
  "hexo-deployer-git": "^0.1.0",
4
  "hexo-generator-archive": "^0.1.2",
5
  "hexo-generator-category": "^0.1.2",
6
  "hexo-generator-index": "^0.1.2",
7
  "hexo-generator-tag": "^0.1.1",
8
  "hexo-renderer-ejs": "^0.1.0",
9
  "hexo-renderer-jade": "^0.2.0",
10
  "hexo-renderer-less": "^0.1.3",
11
  "hexo-renderer-marked": "^0.2.4",
12
  "hexo-renderer-stylus": "^0.3.0",
13
  "hexo-server": "^0.1.2"
14
}

修改好hexo的版本后再npm install更新下版本就可以了

原文链接

]]>
Ubuntu Hexo
git配置 /20191206.html git配置email&name
1
git config --global user.email "ingressjinyu@gmail.com"
2
git config --global user.name "mContext"

git提交记住用户名和密码

1
git config --global credential.helper store

为github设置代理

1
git config --global http.https://github.com.proxy http://127.0.0.1:1080
]]>
git配置
Windows 10 bat脚本设置环境变量 /20191205.html setx /m Path "%PATH%;D:\BlogGit\node-v12.13.1-win-x64;D:\BlogGit\PortableGit"

另存为bat,以管理员身份运行

]]>
Windows10 环境变量
Windows 10 WSL 的安装和使用 /20191204.html Windows 10 企业版 LTSC安装 WSL

开始——>设置–>搜索”启用或关闭 Windows 功能“,点击弹出”Windows 功能“对话框.

在弹出”Windows 功能“对话框中,找到”Windows Subsystem for linux“/“适用于Linux的Windows子系统“条目,点击选中其前面的复选框。
点击确定等待下载安装完成后重启.

手动下载适用于Linux的Windows子系统发行版安装包

如果 Microsoft Store 应用不可用,则可以通过单击以下链接下载并手动安装 Linux 发行版:

官网链接: https://aka.ms/wsl-ubuntu-1804百度网盘链接: https://pan.baidu.com/s/1p5ZzYTeQTko-V4_dwYl_Rw 提取码: uf8k

安装发行版

解压后直接安装(推荐)

将下载的appx文件后缀名改为zip后解压到”D:\WSLUbuntu”,
在目录中的exe文件上右键以管理员身份运行

命令安装

使用 PowerShell 安装发行版。 只需导航到包含上面下载的发行版的文件夹,并在该目录中运行以下命令,其中 app_name 是发行版文件的名称。

1
Add-AppxPackage .\app_name.appx

初始化发行版

首次运行新安装的分发版时,会打开一个控制台窗口,其中指出需要等待一两分钟时间来完成安装。
安装完成后,系统会提示创建新的用户帐户(及其密码)。

设置root密码

1
sudo passwd root

默认使用root用户登录

1
D:\WSLUbuntu\ubuntu1804.exe config --default-user root

Windows 10 子系统Linux重启(不重启Win10)

1
net stop LxssManager
2
net start LxssManager

使用

启动的时候,在命令行中输入bash就可以启动.
另外存放在linux系统,点击exe也可以启动.两种方式启动的默认路径不一样.
如果安装了多个发行版,默认启动的发行版可以指定.指定方式为
使用wslconfig /l查看所有的发行版.
使用wlsconfig /s 发行版名,指定默认发行版.

win10内置Ubuntu/Linux换阿里源

先用lsb_release -a查看自己的Ubuntu/Linux系统的版本

1
ray@mContext:~/blog$ lsb_release -a
2
No LSB modules are available.
3
Distributor ID: Ubuntu
4
Description:    Ubuntu 18.04.3 LTS
5
Release:        18.04
6
Codename:       bionic

备份内置源

1
cp /etc/apt/sources.list /etc/apt/sources.list.bak

替换阿里源

参考:https://developer.aliyun.com/mirror
用你熟悉的编辑器打开:/etc/apt/sources.list
替换默认的archive.ubuntu.commirrors.aliyun.com

例如:Vim编辑器

1
sudo vi /etc/apt/sources.list
2
:% s/archive\.ubuntu\.com/mirrors.aliyun.com/g

更新和升级分发版的包

1
sudo apt update && sudo apt upgrade

卸载

在Win10 LTSC 2019之前,卸载可以用lxrun工具,但是LTSC 2019抛弃了这个工具.因此你可以在别的地方看到很多说重装linux子系统要用lxrun的.这都是老黄历,不要采信.
前面提了一句,这个所谓安装其实只是注册.因而卸载的时候只要解除注册就可以.解除注册还是用刚才提到的wslconfig
因而卸载过程为:在命令行输入“wslconfig /u 发行版名” ,解除注册.然后删掉相应的文件夹即可.

windows10 的linux子系统(windows subsystem for linux)WSL 文件位置

1
C:\Users\hanaxilo\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\

附:wslconfig的所有命令:

1
C:\Users\hanaxilo>wslconfig ?
2
Windows 上的 Linux 子系统进行操作管理
3
4
用途:
5
    /l, /list [/all]
6
        列出已注册的分发版。
7
        /all - 有选择地列出所有分发版,包括
8
               当前正在安装或卸载的分发版。
9
10
    /s, /setdefault <DistributionName>
11
        将该分发版设为默认。
12
13
    /t, /terminate <DistributionName>
14
        终止分发。
15
16
    /u, /unregister <DistributionName>
17
        取消分发版注册。
18
19
    /upgrade <DistributionName>
20
        将分发版升级至 WslFs 文件系统格式。
]]>
Windows10 WSL
No matching version found for js-sequence-diagrams@^1000000.0.6 /20191203.html
1
[package.json] js-sequence-diagrams changed the way of adding version number

I try to open HexoEditor/package.json and change
“js-sequence-diagrams”: “^1000000.0.6”,
into
“js-sequence-diagrams”: “0.0.1-security”,
then npm install successfully

https://github.com/zhuzhuyule/HexoEditor/issues/69

extract:fsevents: sill extract fsevents@^1.0.0 extracted to XXXXXXXX

解决

删除node_module

1
npm cache clean --force
2
3
npm install fsevents@1.2.9 --save
4
5
sudo usermod -s /usr/bin/zsh $(whoami)
6
7
sudo usermod -s /bin/bash $(whoami)
8
9
alias
10
11
alias gitpush  = 'git add . && git commit -m "update" && git push origin master'
12
alias hgs  = 'hexo g && hexo s'
13
alias hgd  = 'hexo clean && hexo deploy'
]]>
npm配置 /20191202.html npm设置缓存路径
1
npm config set prefix "D:/BlogGit/npmCache/npm_global"
2
npm config set cache "D:/BlogGit/npmCache/npm_cache"

使用淘宝镜像源安装cnmp

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

更换为默认源

1
npm config set registry https://registry.npmjs.org

更换为淘宝镜像源:

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

配置后通过以下方法验证是否成功:

1
npm config get registry
]]>
Linux下开启SSH,并且允许root用户远程登录,允许无密码登录 /20191201.html 允许root用户远程登录

修改ssh服务配置文件

sudo vi /etc/ssh/sshd_config

调整PermitRootLogin参数值为yes

允许无密码登录

同上,修改ssh服务配置文件,两种情况:

1) 将PermitEmptyPasswords yes前面的#号去掉2) 将PermitEmptyPasswords 参数值修改为yes,如下图:

无论哪种,最后PermitEmptyPasswords参数值为yes

以上两种配置,均需要重启ssh服务

service sshd restart  # 或者/etc/initd.d/sshd restart

扩展:

为了安全起见,FreeBSD默认情况下是不允许root用户进行SSH远程登录的,需要进行以下操作才可以进行Root用户的ssh远程登录。

首先vi编辑/etc/inetd.conf,去掉ssh前的#注释,保存后:wq退出 (开启监听ssh服务)

编辑/etc/rc.conf, 最后加入:sshd_enable=”yes”即可
激活sshd服务:

#/etc/rc.d/sshd start

检查服务是否启动,在22端口应该有监听。

# check port number 22#netstat -an # 或#netstat -tnlp

最后,编辑ssh配置文件

#vi  /etc/ssh/sshd_config

在/etc/ssh/sshd_config最后中加入

PermitRootLogin yes #允许root登录PermitEmptyPasswords no #不允许空密码登录PasswordAuthentication yes # 设置是否使用口令验证。

修改完配置文件后,重新启动sshd服务器(/etc/rc.d/sshd restart)即可。

补充:

  1. 如果重启后还是不行, 请重新载入sshd_config 文件/etc/rc.d/sshd reload
  2. 如果出现using keyboard-interactive authentication
    password:
    请确认配置文件中,PasswordAuthentication参数值是否已经改成yes
    另外如果客户端是putty, 那么请确认”尝试’智能键盘’认证(SSH-2)”的勾是否有去掉!!!!
  3. 如果是使用root帐号登陆
    请确认密码是否为空
    空密码无法登陆
  4. 请确认是否有安装SSH
    确认sysinstall>>>configure>>>networking>>>sshd是否的勾是否有打上.
  1. Please login as the user “ingressjinyu” rather than the user “root”.

    nano /root/.ssh/authorized_keys

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user "ubuntu" rather than the user "root".';echo;sleep 10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCPqJ2U4gidqek4FPQJABENkrUiLVP61LObdFAZXvs2EpCf/nBQCRg4ykMNg+8TC9lb7jC65zfIrTUcNcwongDb43k6miSKu1M8fdqXDpcb8CdDRaKpM2wP8l+hTaJ2aWycXmGJ7lZKQPiwNUOhbrOLNEtDmOI9eiVlz7See98LVLW+6AwfzNA8Cu4riDTvEMQr/WQ9NLrS3BZE1TAAswJi9lGDfTgEvfh4Ji+eI/xTXrjkkwjerkjk3jrkwejrkjwe9wASXob4rbV12TXjQIcMKaRGQAGrwOHu0nM2ibfTdgqjrTAG03CXKzQhF09LdxKlT7GpYe0oVU2R1kjkejwQp howtoing.com

删除ssh-rsa 前面的no-port….

参考:http://blog.csdn.net/jia0511/article/details/8237698

]]>
清洁打印CSDN文章 /20191130.html 打印CSDN内容,将以下js复制放入Chrome开发者选项里边的console,回车即可
1
(function(){
2
$("#side").remove();
3
$("#comment_title, #comment_list, #comment_bar, #comment_form, .announce, #ad_cen, #ad_bot").remove();
4
$(".nav_top_2011, #header, #navigator").remove();
5
$(".p4course_target, .comment-box, .recommend-box, #csdn-toolbar, #tool-box").remove();
6
$("aside").remove();
7
$(".tool-box").remove();
8
$("main").css('display','content');
9
$("main").css('float','left');
10
window.print();
11
12
$("tool-box").remove();
13
})();

图片测试

]]>
雨曦降临 /20190913.html 可爱的雨曦来啦!]]> Hexo 雨曦 按键精灵脚本开发_环境准备 /20180913.html 按键精灵脚本开发_环境准备

1. 使用 Windows经典主题

2. 关闭 平滑屏幕字体边缘

系统属性–>高级–>性能选项(设置)–>视觉效果–>平滑屏幕字体边缘

3. 编程字体 MONACO

]]>
按键精灵
ViewHolder的超简洁写法 /20160816.html ViewHoder如下:

1
public class ViewHolder {  
2
    // I added a generic return type to reduce the casting noise in client code  
3
    @SuppressWarnings("unchecked")  
4
    public static <T extends View> T get(View view, int id) {  
5
        SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();  
6
        if (viewHolder == null) {  
7
            viewHolder = new SparseArray<View>();  
8
            view.setTag(viewHolder);  
9
        }  
10
        View childView = viewHolder.get(id);  
11
        if (childView == null) {  
12
            childView = view.findViewById(id);  
13
            viewHolder.put(id, childView);  
14
        }  
15
        return (T) childView;  
16
    }  
17
}

在getView里这样

1
@Override  
2
public View getView(int position, View convertView, ViewGroup parent) {  
3
4
    if (convertView == null) {  
5
        convertView = LayoutInflater.from(context)  
6
          .inflate(R.layout.banana_phone, parent, false);  
7
    }  
8
9
    ImageView bananaView = ViewHolder.get(convertView, R.id.banana);  
10
    TextView phoneView = ViewHolder.get(convertView, R.id.phone);  
11
12
    BananaPhone bananaPhone = getItem(position);  
13
    phoneView.setText(bananaPhone.getPhone());  
14
    bananaView.setImageResource(bananaPhone.getBanana());  
15
16
    return convertView;  
17
}

来源

]]>
工具类
android 限制广播消息的接收者 /20150613.html 在android系统中sendBroadcast和BroadcastReceiver。只要BroadcastReceiver指定的action和sendBroadcast action一致就可以就行消息接收。但是我们有这样的需求即我发送的广播不允许所有应用都可以接收广播消息,而是要经过发送者允许的才可以。比如某一个产品簇,每一个产品发送的广播消息只允许本簇内的产品才允许接收消息。其它应用即使action一样,也无法接收消息。这样就大大的提供了产品的安全性。那么如何实现呢?本文主要目的就是于此。

一、只允许本应用内允许接收

解决方案一:LocalBroadcastManager (局部广播)

优点:

  1. 因广播数据在本应用范围内传播,你不用担心隐私数据泄露的问题。

  2. 不用担心别的应用伪造广播,造成安全隐患。

  3. 相比在系统内发送全局广播,它更高效。

缺点:

  1. 它只能够在同一个进程使用,如果本应用是多进程的。必须保证发送者和接收者是在同一个进程内。

  2. 它只能够动态注册和取消。

使用实例

先通过LocalBroadcastManager获取实例

1
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);

然后通过函数 registerReceiver来注册监听器

1
registerReceiver(newBroadcastReceiver() {  
2
3
 @Override  
4
  public void onReceive(Context context, Intent intent) {  
5
6
 // TODO Handle the received local broadcast
7
8
  }
9
  
10
}, newIntentFilter(XXXX));

通过 sendBroadcast 函数来发送广播

1
lbm.sendBroadcast(newIntent(XXXX));

解决方案二:intent 指定包名Intent.setPackage设置广播仅对本程序有效【见二】

二、指定某一个应用允许接收

解决方案:intent 指定包名Intent.setPackage设置广播仅对相同包名的有效

优点:

  1. 支持跨进程

  2. receiver可以是静态注册也可以是动态注册。

  3. 只有指定的包名的应用程序才能够接收到数据,所以安全性较高。

缺点:

  1. 如果一旦反编译,很容易伪造广播,造成安全隐患

  2. 在系统内发生全局广播,它效率较低

  3. 它只能够满足一个应用的需求,不能够同时指定多个

使用实例_

1
Intent intent = new Intent();
2
intent.setPackage("应用包名");
3
intent.setAction("消息action");
4
sendBroadcast(intent);

三、指定某一个receiver允许接收

解决方案:intent 指定包名Intent. setComponent设置广播仅对相同包名的有效

优点:

  1. 可以指定到具体某一个receiver,安全性更高

  2. receiver可以是静态注册也可以是动态注册。

缺点:

  1. 它只能指定一个receiver,局限性较大

使用实例:

1
Intent intent = new Intent();
2
3
intent. setComponent(newComponentName("包名", "Receiver类名"));
4
5
intent.setAction("消息action");
6
7
sendBroadcast(intent);

四、指定多个应用有权接收

解决方案:sendBroadcast(Intent, String)的接口在发送广播时指定接收者必须具备的permission

如果担心反编译后,权限被窃取,限制失效。可以在声明权限时,提高权限的leverl为签名验证,即只有相同签名的应用且有该权限才能够接收,这样就能够满足产品簇的问题。

使用实例:

1
AndroidManifest.xml
2
3
 <permission android:description="@string/XXX"  
4
5
        android:label="XXXX"  
6
7
         android:name=" com.test.permission"  
8
9
         android:protectionLevel=" signature">
10
11
 <receiver
12
13
            android:name="XXXX"
14
15
            android:permission="com.test.permission" >
16
17
            <intent-filter >
18
19
                 <actionandroid:name="XXXXX" />
20
21
            </intent-filter>
22
 </receiver>

Java:

1
Intent intent = new Intent();
2
3
intent.setAction("消息action");
4
5
sendBroadcast(intent, "com.test.permission");

注意:如果要求安全级别较高,使用签名验证机制即使优点又是缺点。目前还没有找到更好的方法,能够满足多个指定应用都能够接收消息,且安全级别不会受到伪造或窃取的风险。

原文:http://blog.csdn.net/mingli198611/article/details/17762149

]]>
广播安全
Hello World /20140520.html Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

]]>