【原创】windows安装配置vscode编辑器golang开发环境和插件

VS Code配置Go语言插件和开发环境

golang逐渐普遍的今天,也安装个试试看所谓的协程,因为免费所有找个电脑关键一搜索就能很方便安装到vscode

就像其它语言一样除了选择好编辑器一样,还需要安装本身的编译器

官方地址:https://golang.google.cn/dl/
最新windows版:https://golang.google.cn/dl/go1.16.7.windows-amd64.msi

安装后设置GOPROXY用国内镜像来安装插件,不然会无法安装被拦了,打开终端执行以下命令:

go env -w GOPROXY=https://goproxy.cn,direct

VS Code启动后会自动检测提示安装中文包,没有就点界面左边最下面的图标打开扩展管理,输入chinese,安装语言包和go相关扩展,安装后重启。

接着要安装插件,Windows平台按下Ctrl+Shift+P,Mac平台按Command+Shift+P,弹出一个输入框,输入>go:install,下面会自动搜索相关命令,选择Go:Install/Update Tools这个命令,按下图选中并会回车执行该命令(或者使用鼠标点击该命令),安装后提示成功,如下图:

如无法安装重启下ide再尝试,安装成功后跑一段go试试看,按F5运行,结果出现了错误,根据提示进入launch.json修改配置,应该是找不到编译对应的文件,修改使用下图注释部分“${file}”变量。

修改后保存,重新运行下F5跑下,没错误了,出现结果了。

发表在 服务器 | 标签为 | 留下评论

windows10设置文件夹右键打开cmd命令窗口

之前windows都是使用文件夹右键选项来方便打开cmd,重新安装系统后发现不见了,只有一个系统自带的power shell,还是习惯cmd,也很简单,看下图开始输入regedit打开注册表,如图添加对应的项和值即可。

1、打开注册表编辑器并依次定位到“HKEY_CLASSES_ROOT\Folder\shell”,在shell项下新建一个cmdPrompt子项,并双击其右侧窗格的“默认”名称,将其数值数据修改为“打开命令提示符窗口”;2、随后再在cmdPrompt子项下建立一个command项,将其数值数据修改为“c:\windows\system32\cmd.exe cd “%1””。修改完成后关闭注册表编辑器;

 

发表在 服务器 | 标签为 | 留下评论

git追溯当前分支从什么分支创建而来的命令

可以使用git reflog show –date=iso remotes/origin/xxx 这个命令来追溯

发表在 服务器 | 标签为 | 留下评论

PHP5.6.40进行RSA加解密

最近因为工作编写接口安全用到RSA加密解密,记录下。

环境:windows10,php5.6.40

下载OpenSSL安装地址:http://slproweb.com/products/Win32OpenSSL.html

安装后cmd进入bin目录进行生成私钥和公钥

//生成私钥
openssl genrsa -out rsa_private_key.pem 1024 
//生成公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

将生成的私钥、公钥拷贝到你的php执行目录中。

用下面价格函数就可以实现rsa加解密了

openssl_pkey_get_private
openssl_private_decrypt
openssl_private_encrypt
openssl_pkey_get_public
openssl_public_decrypt
openssl_public_encrypt

参考资料:https://www.php.net/manual/zh/book.openssl.php

发表在 服务器 | 标签为 , | 留下评论

./swoole_config.h:22:2: error: #error “GCC 4.8 or later required”

Centos下php7安装swoole 扩展的时候,提示的错误。我记得gcc 版本升级过一次到4.8.5,无语。

root@netpc.com.cn swoole-4.3.5]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.5/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 4.8.5 (GCC)

[root@netpc.com.cn swoole-4.3.5]# cc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-libgcj-multifile –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –disable-plugin –with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre –with-cpu=generic –host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)

老旧共存啊?!

先找下到底有多少gcc

[root@netpc.com.cn ~]# find / -name ‘gcc’
/usr/bin/gcc
/usr/libexec/gcc
/usr/lib/gcc
/usr/local/bin/gcc
/usr/local/libexec/gcc
/usr/local/lib/gcc
/usr/local/src/gcc-4.8.5/gcc-build-4.8.5/gcc
/usr/local/src/gcc-4.8.5/gcc
/usr/local/src/gcc-4.8.5/gcc/testsuite/ada/acats/tests/gc

接着替换下:

mv /usr/bin/gcc /usr/bin/gcc4.1.2
ln -s /usr/local/bin/gcc /usr/bin/gcc

搞定

发表在 服务器 | 标签为 , | 留下评论

centos升级autoconf

服务器Centos因为安装一些包发现autoconf版本不够,需要升级。

[root@netpc.com.cn ]# rpm -qf /usr/bin/autoconf
autoconf-2.59-12
[root@netpc.com.cn ]# rpm -e –nodeps autoconf-2.59-12

[root@netpc.com.cn ]# wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz

[root@netpc.com.cn src]# tar zxvf ./autoconf-2.69.tar.gz
[root@netpc.com.cn src]# cd autoconf-2.69
[root@netpc.com.cn autoconf-2.69]# ./configure –prefix=/usr/

make&&make install

[root@netpc.com.cn autoconf-2.69]# /usr/bin/autoconf -V
autoconf (GNU Autoconf) 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

搞定

发表在 服务器 | 标签为 | 留下评论

【原创】php7安装扩展错误AS_CASE、AC_DEFINE、AC_CANONICAL_HOST

今天服务器安装swoole扩展死活提示错误:

[root@netpc.com.cn swoole-4.0.0]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012
config.m4:262: warning: AC_CANONICAL_HOST invoked multiple times
configure:7794: error: possibly undefined macro: AS_CASE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure:7801: error: possibly undefined macro: AC_DEFINE

查README和文档里
autoconf 2.69
gcc 4.8

查询本机发现autoconf版本低了

[root@netpc.com.cn swoole-4.0.0]# rpm -qf /usr/bin/autoconf
autoconf-2.59-12

升级后搞定。

发表在 服务器 | 标签为 , | 留下评论

【原创】PHP补充API接口数据安全验证加密解密相关问题

用PHP写了这么久api接口,需要总结下关于限制的一些问题。

通常接口有对外或对内情况,下面说下相关能用上的规则:

  • 限制IP、访问频率等,根据什么来判断就看你了。
  • 用户名和密码登陆,验证成功后,生成token,可以有过期限制。
  • sign作用:传过来的数据,根据规则生成sign,与传过来的sign对比。也是相当于验证身份
  • https保护保存数据

以上还不能保证数据安全,有可能你通过接口身份验证后传输数据还是有可能被路由、终端等拦截数据。

这时候可以选择数据加密方式,以下几种常用的:

DES:Data Encrytion Standard(数据加密标准),对应算法是DEA

特点:1. 对称加密 2. 同一个SK(跨平台可能会。。。)

AES:Advanced Encrytion Standard(高级加密标准)

特点:1. 对称加密 2. 一个SK扩展成多个子SK,轮加密(速度快)

RSA:特点: 1. 非对称加密,即:PK与SK不是同一个

2. PK用于加密,SK用于解密

3. PK决定SK,但是PK很难算出SK(数学原理:两个大质数相乘,积很难因式分解)

4. 速度慢,只对少量数据加密

介绍完特别后你知道选择什么了吧?

PHP 的 OpenSSL 扩展中加密的相关函数有:

  • openssl_encrypt()
  • openssl_decrypt()

详细看官方手册:https://www.php.net/manual/zh/function.openssl-encrypt.php

也有直接对外暴露在web上的随便访问毫无限制的对外接口,那???

发表在 服务器 | 标签为 , | 留下评论

【原创】PHP循环非递归或递归实现斐波那契数列Fibonacci

//参数按第几位算,零是第一位,第九位21。
//0, 1, 1, 2, 3, 5, 8, 13,21
//For非递归方式
echo Fibonacci_netpc(9);
echo Fibonacci_R(9);
function Fibonacci_netpc($n)
{
	if ($n > 2) {
		$o = 0;
		$t = 1;
		for ($i = 4; $i <= $n; $i++) {
			//调换保存最后2位累加位置
			$temp = $o + $t;
			$o = $t;
			$t = $temp;
		}
		return $t + $o;
	} else {
		return $n - 1;
	}
}
//递归方式
function Fibonacci_R($n)
{
	if ($n < 3) return $n - 1;
	if ($n == 3) return 1;
	return Fibonacci_R($n - 1) + Fibonacci_R($n - 2);
}
发表在 服务器 | 标签为 , , | 留下评论

[原创]svn 删除更新某条历史记录

这个问题?答案是有可能的。

如果是刚刚发生的记录,处理起来就相对容易,如果你提交到2001次记录刚好发现是不想要。

首先导出svn版本库记录

svnadmin dump netpc.com.cn -r 0:1000 > netpc.dump
svnadmin dump netpc.com.cn -r 1001:2000 –incremental > netpc-1001-2000.dump

incremental增量方式是考虑到如果需要修改某部分记录,而整个版本库又太大,你只能分段导出成小文件,便于修改。

修改原库netpc.com.cn名字为netpc.com.cn.old

创建个新的:svnadmin create /data/svn/netpc.com.cn

导入:
svnadmin load netpc.com.cn < netpc.dump
svnadmin load netpc.com.cn < netpc-1001-2000.dump

重新提交记录就可以了。

本地或远程其它地方拉取svn库更新源码的时候有可能会提示:出现校验和不匹配问题

那就进入对应的目录,不需要全库更新,然后清空再拉取即可。

svn update –set-depth empty
svn update –set-depth infinity

如果要更新历史上某段记录,打开dump文件看看应该就明白,涉及到源码变化关联md5,这部分处理起来就麻烦的多,根据需求自己试试看。

发表在 服务器 | 标签为 | 留下评论