java script, php

PHP js 左移 << 操作

主要因为 PHP 运行在 64位, js 是 32位,造成的.

问题表现:
In Javascript:

document.write((1732584193 << 5)+"<br />");
document.write((125 << 5)+"<br />");
output:

-391880672
4000
In PHP:

echo (1732584193 << 5)."<br />";
echo (125 << 5)."<br />";
output:

55442694176
4000

解决办法:

$a = 1732584193;

$b = $a << 5;
$c = (($a << 5) << 32) >> 32;

echo $a, "\n"; # 1732584193
echo $b, "\n"; # 55442694176
echo $c, "\n"; # -391880672

转载:https://stackoverflow.com/questions/25587803/why-lshift-in-javascript-and-php-are-not-the-same

python

LookupError: unknown encoding: idna 的处理方法

 写了一个脚本,想把它打包成exe文件,在python编译器中运行正常,但是打包成.exe文件运行报错 LookupError: unknown encoding: idna

找遍资料终于找到了解决方法:

在脚本开头import这个module即可,这个可能是某个编码的问题,没有深究,解决就好
import encodings.idna

linux

Debian9开机运行Python脚本

 

Debian9开机运行Python脚本

Debian 9.x "stretch" 解决 /etc/rc.local 开机启动问题

由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc.local 服务却还是自带的

root@debian9 ~ # cat /lib/systemd/system/rc.local.service #  This file is part of systemd. # #  systemd is free software; you can redistribute it and/or modify it #  under the terms of the GNU Lesser General Public License as published by #  the Free Software Foundation; either version 2.1 of the License, or #  (at your option) any later version.  # This unit gets pulled automatically into multi-user.target by # systemd-rc-local-generator if /etc/rc.local is executable. [Unit] Description=/etc/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.local After=network.target  [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no  

并且默认情况下这个服务还是关闭的状态

root@debian9 ~ # systemctl status rc-local ● rc-local.service - /etc/rc.local Compatibility    Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)   Drop-In: /lib/systemd/system/rc-local.service.d            └─debian.conf    Active: inactive (dead) 

添加/etc/rc.local

为了解决这个问题,我们需要手工添加一个 /etc/rc.local 文件

cat <<EOF >/etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing.  exit 0 EOF 

赋予权限

chmod +x /etc/rc.local 

启动 rc-local 服务

systemctl start rc-local 

再次查看状态

root@debian9 ~ # systemctl status rc-local ● rc-local.service - /etc/rc.local Compatibility    Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)   Drop-In: /lib/systemd/system/rc-local.service.d            └─debian.conf    Active: active (exited) since Thu 2017-08-03 09:41:18 UTC; 14s ago   Process: 20901 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)  Aug 03 09:41:18 xtom-proxy systemd[1]: Starting /etc/rc.local Compatibility... Aug 03 09:41:18 xtom-proxy systemd[1]: Started /etc/rc.local Compatibility. 

添加命令启动

然后你就可以把需要开机启动的命令添加到 /etc/rc.local 文件,丢在 exit 0 前面即可,并尝试重启以后试试是否生效了

root@debian9 ~# vim /etc/rc.local

python /home/test.py &

exit 0

Nas

群晖 Docker 和 Kvm (qemu) 网络共存桥接网络

群晖控制面板–>网络–>网络界面–>管理–>Open vSwitch设置,启用Open vSwitch。

docker部分网络配置:

docker network create -d macvlan –subnet=192.168.1.1/24 –gateway=192.168.1.1 –ip-range=192.168.1.80/27 -o parent=ovs_eth0 bridged_lan

创建完毕把 容器全部迁移到 bridged_lan 即可

kvm 部分网卡配置

用putty登入群晖系统,执行virsh edit win7(win7是虚拟机名称),加入以下配置:
mac address:请改为自己的物理地址,不要和家里其他设备重复。
source bridge:NAS接网卡1,使用名称ovs_eth0,NAS接网卡2,使用名称ovs_eth1。
address type=’pci’:这行中slot确保和其他pci设备不重复,配置文件中有多个pci设备,如果重复是无法保存修改的。

<interface type=’bridge’>
<mac address=’00:11:23:ef:88:66′/>
<source bridge=’ovs_eth0′/>
<virtualport type=’openvswitch’>
<parameters interfaceid=’a1b551a8-e732-4efe-9abf-1db37b93ecc9′/>
</virtualport>
<model type=’virtio’/>
<driver name=’vhost’ txmode=’iothread’ ioeventfd=’on’ event_idx=’off’queues=’5′>
<host csum=’off’ gso=’off’ tso4=’off’ tso6=’off’ ecn=’off’ ufo=’off’mrg_rxbuf=’off’/>
<guest csum=’off’ tso4=’off’ tso6=’off’ ecn=’off’ ufo=’off’/>
</driver>
<address type=’pci’ domain=’0×0000′ bus=’0×00′ slot=’0×06′ function=’0×0′/>
</interface>

Nas

群晖 安装 kvm (Libvirt, Qemu)

使用的是第三方套件: https://github.com/bsdcpp/synoKVM

1. 首先在群晖系统中安装kvm套件(点此下载):

由于是第三方套件,需到套件中心设置允许任何发行者,然后点手动安装

装完显示已启动表示成功,有问题请联系套件作者。

2. 在Linux实体机或虚拟机中安装virt-manager图形化虚拟机管理包。以debian为例,执行apt-get install virt-manager安装。其他Linux使用对应安装命令安装就行了。安装后执行virt-manager调出虚拟机管理图形界面。

我是在Windows下用putty和xming连接virt-manager主机的,如何配置环境请参考文末链接。

 

3. 使用virt-manager建虚拟机,安装系统。

在Virtual Machine Manager(简称VMM)主界面,点File–>Add Connection连接到群晖系统。

Method选TCP方式,Hostname填群晖IP地址。

 

装完系统请关机,光驱挂上virtio的驱动iso(点此下载),等下会用到。

然后去群晖控制面板–>网络–>网络界面–>管理–>Open vSwitch设置,启用Open vSwitch。

用putty登入群晖系统,执行virsh edit win7(win7是虚拟机名称),加入以下配置:
mac address:请改为自己的物理地址,不要和家里其他设备重复。
source bridge:NAS接网卡1,使用名称ovs_eth0,NAS接网卡2,使用名称ovs_eth1。
address type=’pci’:这行中slot确保和其他pci设备不重复,配置文件中有多个pci设备,如果重复是无法保存修改的。

<interface type=’bridge’>
<mac address=’00:11:23:ef:88:66′/>
<source bridge=’ovs_eth0′/>
<virtualport type=’openvswitch’>
<parameters interfaceid=’a1b551a8-e732-4efe-9abf-1db37b93ecc9′/>
</virtualport>
<model type=’virtio’/>
<driver name=’vhost’ txmode=’iothread’ ioeventfd=’on’ event_idx=’off’queues=’5′>
<host csum=’off’ gso=’off’ tso4=’off’ tso6=’off’ ecn=’off’ ufo=’off’mrg_rxbuf=’off’/>
<guest csum=’off’ tso4=’off’ tso6=’off’ ecn=’off’ ufo=’off’/>
</driver>
<address type=’pci’ domain=’0×0000′ bus=’0×00′ slot=’0×06′ function=’0×0′/>
</interface>
 

 

 

Go

golang go-session SetsessionID 以及直接返回MD5的修改

 刚接触 GO 两天, 用了echo 使用官方推荐的 session 不好使,(估计是我不会用). 找到了一个国人兄弟的库,这里强烈推荐一下,很不错.

https://github.com/go-session/echo-session

因为个人业务罗技需要作了如下修改:

1.将原作者返回的base64 修改为直接返回 md5

go-session\session\session.go

import 增加 "crypto/md5"

三十二行左右,将 return newUUID() 修改为下面

sessionID: func(_ context.Context) string {
return Sha1String(newUUID()) //修改 默认返回uuid 修改为 md5值  by 职业菜鸟 20190429
},
 
随便找个位置 新增 下面函数
func Sha1String(data string) string { //新增 获取字符串sha1 备用  by 职业菜鸟 20190429
sha1 := sha1.New()
sha1.Write([]byte(data))
return hex.EncodeToString(sha1.Sum([]byte(nil)))
}
搜索下面函数:
func (m *Manager) decodeSessionID(value string) (string, error) {
直接函数顶增加:
return value, nil //修改 丢弃SessionID解码操作 直接放回MD5 SessionID by 职业菜鸟 20190429
 
搜索下面函数:
func (m *Manager) encodeSessionID(sid string) string {
直接函数顶增加:
return sid //修改 丢弃SessionID编码操作 直接放回MD5 SessionID by 职业菜鸟 20190429
 

2.增加 SetsessionID 函数.

我看了文档 也简单读了源码,发现 go-session\session\session.go 是有

// SetSessionID Set callback function to generate session id
func SetSessionID(handler IDHandlerFunc) Option {
return func(o *options) {
o.sessionID = handler
}
}
 
应该是我不会用,没跑成功………
 
小刀小斧的改一下
 
go-session\echo-session\session.go
增加:
func SetsessionID(ctx echo.Context, sessionid string) { //新增 设置sessionid  by 职业菜鸟 20190429
ctx.Get(manageKey).(*session.Manager).SetsessionID2(sessionid)
}
 
go-session\session\session.go
增加函数:
func (m *Manager) SetsessionID2(sessionid string) { //新增 设置sessionid  by 职业菜鸟 20190429
m.opts.sessionID = func(_ context.Context) string {
return sessionid
}
}
 
 
大概这些吧,记性差了,随便记一记.

 

Go

golang 解析json到 map 使用办法

习惯了 python 简易, 这里放一下 go 的 json 解析到map的方法

 import (

"encoding/json"
"fmt"
)
data := "{\"info\":{\"ver\":\"1.0\"},\"id\":\"1\"}"
json_map := make(map[string]interface{})
err := json.NewDecoder(strings.NewReader(data)).Decode(&json_map)
if err != nil {
return err
} else {
info := json_map["info"].(map[string]interface{})
ver := info["ver"].(string)
fmt.Println("ver:" + ver)
}

Go

go vscode 调试环境安装

 go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv

一行命令.

精品软件

迅雷老版本下载地址大全,迅雷还是老版本好用

传说老版本 不封资源 不限速, 下面是官方的下载地址,如果无法下载,请使用迅雷下载 

 迅雷极速版

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.35.366.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.34.360.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.27.310.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.26.290.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.22.238.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.20.224.exe

http://down.sandai.net/thunderspeed/ThunderSpeed1.0.3.32.exe

http://yangtai.xunlei.com/?cat=62



迷你迅雷

http://down.sandai.net/mini/MiniThunderSetup3.0.4.46.exe

http://down.sandai.net/mini/MiniThunderSetup3.0.3.32Deluxe.exe

http://down.sandai.net/mini/Minithunder_dl1.5.3.288.exe

http://yangtai.xunlei.com/?cat=4



迅雷精简版

http://down.sandai.net/mini/ThunderMini_dl1.5.3.288.exe

http://down.sandai.net/mini/ThunderMini1.5.2.246.exe

http://down.sandai.net/mini/ThunderMiniInstall1.5.1.238.exe

http://down.sandai.net/mini/ThunderMiniInstall1.5.0.200.exe

http://down.sandai.net/mini/ThunderMiniInstall1.5.0.184.exe

http://down.sandai.net/mini/ThunderMiniInstallBeta1.0.1.84.exe

http://down.sandai.net/mini/ThunderMiniInstall.exe

http://yangtai.xunlei.com/?p=2676

http://yangtai.xunlei.com/?cat=41



迅雷测试版

http://down.sandai.net/thundertptool/XLDownloader_1.0.0.4_Alpha.zip

http://down.sandai.net/thundertptool/XLDownloader_1.0.0.3_Alpha.zip

http://yangtai.xunlei.com/?p=10048



迅雷老版本

http://down.sandai.net/thunder7/Thunder7.2.13.3882.exe

http://down.sandai.net/thunder7/Thunder7.1.2.2014.exe

http://down.sandai.net/thunder7/Thunder6.1.0.1882.exe

http://down.sandai.net/Thunder6.0.1.98Beta.exe

http://down.sandai.net/Thunder5.9.28.1564.exe

http://down.sandai.net/Thunder5.9.11.1168.exe

http://down.sandai.net/Thunder5.8.14.706.exe

http://down.sandai.net/Thunder5.8.7.639.exe

http://down.sandai.net/Thunder5.8.3.533.exe

http://down.sandai.net/Thunder5.8.2.515.exe

http://down.sandai.net/Thunder5.8.1.507.exe

http://down.sandai.net/Thunder5.7.11.486.exe

精品软件

win10 清理备用内存

 win10 这个 备用内存非常有问题, 我本机最大可以达到 10G 左右备用内存.

这样导致我浏览器频繁崩溃,游戏也崩溃, 查了微软相关说明,说是为了运行更快,就会提前加载文件到内存里,他们说会自动释放….but  我本机无效.

重点来了: RAMMap 单机下载

https://docs.microsoft.com/zh-cn/sysinternals/downloads/rammap

可以手动释放所有内存,很好使, 唯一缺点就是不能自动清理.