JMVoid 博客

一个专注golang, flutter, v2ray, SSR 技术的博客,也随意聊聊政经逻辑


  • 首页

  • 标签

  • 分类

  • 归档

  • 站点地图

c api called by golang

发表于 2019-10-21 分类于 vpn技术

Golang调用c api的一些坑

  1. 可以通过查看github.com/kbinani/win里面的master branch 里面有相关的代码。里面的重点代码如下:

winnetapi = doLoadLibrary(“wininet.dll”)
// Functions
internetQueryOptionA = doGetProcAddress(winnetapi, “InternetQueryOptionA”)
internetSetOptionA = doGetProcAddress(winnetapi, “InternetSetOptionA”)
doLoadLibrary使用syscall.LoadLibrary
func doLoadLibrary(name string) uintptr {
lib, _ := syscall.LoadLibrary(name)
return uintptr(lib)
}

func doGetProcAddress(lib uintptr, name string) uintptr {
addr, _ := syscall.GetProcAddress(syscall.Handle(lib), name)
return uintptr(addr)
}
func InternetSetOptionA(hInternet unsafe.Pointer,
dwOption DWORD,
lpBuffer unsafe.Pointer,
dwBufferLength *uint32) bool {
ret1 := syscall6(internetSetOptionA, 4,
uintptr(hInternet),
uintptr(dwOption),
uintptr(lpBuffer),
uintptr(unsafe.Pointer(dwBufferLength)),
0,
0)
return ret1 != 0
}

  1. 我根据kbinani的自动生成的go. 自己定了winnet.go. 有兴趣可以到github.com/JMVoid/win查看代码。
  2. syscall3, syscall6是有最多3个或者6个参数。其中nargs是实际有多少个参数. 如上面syscall6就是实际有4个参数。最多可转入6个参数,多的参数用传入
  3. unsafe.Pointer就是一个无确定类型指针。而uintptr是将一个指针转成一个uint. 如果你要对一个指针进行运算。例如在
    (*byte)(unsafe.Pointer(uintptr(p) + uintptr(i)))
    如果要进行指针相加运算就需要uintptr之间进行运算。一开始就想着直接+1. 这样是不行的
  4. 在golang string中的结尾是没有\0的。(因此我也不知道是怎么golang怎么知道结束的)。在InternetQueryOption中返回的option.pzVaule是一个char*。一个指向\0结尾的字符串指针。因此需要这个函数
    func LPSTR2Array(p unsafe.Pointer) ([]byte, uint32) {
    ar := make([]byte, 0)
    for i:=0; i < PROXY_MAX_LEN; i++ {
    bp := (*byte)(unsafe.Pointer(uintptr(p) + uintptr(i)))
    if uint32(*bp) != uint32(0) {
        ar = append(ar, *bp)
    } else {
        return ar, uint32(i)
    }
    }
    return nil, 0
    }
    将它转成slice

v2ray free node sharing

发表于 2019-10-05 分类于 vpn技术

v2ray 香港节点, 烦请有节制取用.

vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogImhrLmFsaWNsb3VkMDItc2hhcmUwMSIsDQogICJhZGQiOiAiaGsuYWxpY2xvdWQwMi5iaXRzdHVubmVsLm9ubGluZSIsDQogICJwb3J0IjogIjQ0MyIsDQogICJpZCI6ICIwNjVhN2I5My0wZTdmLTRlNjItOGVjNS0wOGNlZDk2Nzc4ZjAiLA0KICAiYWlkIjogIjE2IiwNCiAgIm5ldCI6ICJ0Y3AiLA0KICAidHlwZSI6ICJub25lIiwNCiAgImhvc3QiOiAiIiwNCiAgInBhdGgiOiAiIiwNCiAgInRscyI6ICJ0bHMiDQp9

为什么要放弃shadowsocks(ss)以及shadowsocksR(SSR)转用 v2ray 作为科学上网手段

发表于 2019-08-06 分类于 vpn技术
  1. 经过长期的自建服务顺使用ss 和 ssr, v2ray 以及与科学上网的群友的交流,发现防火墙基本识别了SS/SSR, 我个人觉得gfw不是明确识别,只是应该已经有规则是较易识别SS/SSR.
  2. 在比较敏感的时期,gfw会提升拦截的阀值。经过几次的敏感时期,基本确定的事实就是:只是多个IP以不明的流量连接 VPS服务商的IP都会被全部封锁。而主要的VPS服务内的 IP 段都是明确的。
  3. 以前使用阿里云。以SS/SSR + tcp的方式进行上网,已经被莫明封禁了两次, 而且这只是单人在使用。由此说法SS/SSR已经被识别的可能性是挺高的。
  4. 同样的单人使用,以utp+v2ray使用vultr使用近一年,一直正常使用。但是在今年5月底敏感期间开始,连该vps也被封禁,由此可以得到第2点的结论。考虑到此,因此决定试用v2ray + https的方式来进行科学上网。用这种方案,竟然安全通过整个敏感期。
  5. 对于为什么要使用v2ray utp网络协议, 这个是v2ray自带的类似kun的加速功能。 这个功能能使用虽然ping延时到vps在到200ms延时及较高的丢包率,但是这个utp network能让达到使用效果达到满意程度。但是也有一个明显的缺陷,就是流量会大增,增加幅度可能2倍到5倍不止,如果你是使用定流量的vps,可能就要小心每月流量限额了。但是如果使用https的方式而你又使用高延时的vps.可能的使用感受就比较差了。因此最好选用用CN2的vps.例如阿里香港这种。中国电信的延时只有10ms, 几乎没有丢包的情况下使用https。
  6. V2ray https使用的要素是domain name + tls 证书来完全模拟https的站点。但是对于个人来讲, 整个实施过程有点麻烦,而且对于到vps的延时也有较高的要求。
  7. 由于v2ray内部整合了utp技术,可以在延时较差的vps保征有校好的体验。而且在延时效好的vps, 可以使用https保征安全性

关于中美贸易协议不可能谈成的原因分析

发表于 2019-07-30 分类于 政经分析

要看中美贸易战的起因,先从美国为什么要发起贸易战原因说起。

  1. 美国对中国的贸易逆差会导致长期制造业能力, 虽然逆差会对美元国际化有好处,但是长期制造力和科技技术外流,最终会有美元的实际含金量下降。
  2. 而且中国做为新崛起的第二大国,在人力和资源上都可以与美国一争高下。现在中国缺的就是科技实力无法与美国抗衡。但是随着中国拥有用更多的美元。使用美元的资源把军事及其他关键领域里面技术差距完全拉近至平。
  3. 美国原来的小算盘是以对中国贸易及技术转移,来获取市场和利润。同时,试图培养中产阶级,并且把中国变成走西方邪路的国家
  4. 到2008年美国对中国的实力崛起已经有所警惕,只是提出了重返太平洋战略。但是一直到南海建岛以及强迫西方航空公司网站不许出现台湾的事。引起西方国家注意到中国并不会像说的那样,崛起后不输出意识形态 . 而美国最终意识到因为与中国贸易,累积巨额的逆差,但是却只是培养了一个强大的对手。因此国策上决定压制中国。
  5. 有人可能会提到不在中国进行制造也不会等于制造业会回流到美国。 但是美国的现在的想法是能回流到美国最好,就算不能回流,也不能让中国继续挣美元从而培养一个最强劲的对手。毕竟像越南等东南亚国家,就算有钱了,由于人口和资源太少。也无法跟美国对抗的。
    以上简述了美国为什么要对中国进行贸易战。并且预判中美的关系似乎未来应该会走到冷战的阶段,现阶段只是由于双方的经贸关系太过紧密,都需要点时间来做切割。免得双方同时受到过大的震荡。这个时间点预计在5年-10年。未来的3-5年就会看到各种针锋相对事,各自企业也会根据这些事件而慢慢切割。

说完美国为什么必须要针对中国,那另外就要说说中国方面了。我们要先要看一下中国对外开放的目的是什么。以下为简单整理的对外开放的原因:

1. 从历史看。文革后,当年一穷二白,经济接近崩溃。中国不像朝鲜。两边是海,南边只有韩国。北面有友国-中国。而中国却不能像朝鲜那样。没有国力后,北方有俄罗斯。南面有印度,越南。更不用说台湾的独立了。因此,中国只能通过改革开放来快速提升国力, 以避免受外部势力影响而政权崩坏。

2. 现在又回来改革开放的现实目的:

a. 快速得到技术转移,提升生产效率。 随便以汽车制造为例,要从78年的解放牌手摇汽车发展到自己摸索生产出6缸发动机,ABS刹车及造出制造汽车的工具,估计需要很多很多年。而能外资的引入,通过在外资公司对工作工人和技术人员得到的技术转移,并且后面离开外资创立自己的公司,从而快速提升了民营企业的整体技术水平和生产效率。
b. 获得大额的外汇。外汇的作用主要用于原始生产资料和生产设备的购买。例如:石油,粮食的购买,大量的机床,测量仪器等生产设备都是购买。而且在国外技术收购及吸引高端人才回流,政治上的大外宣工作都是需要大量的外汇。
c. 解决国内的失业问题。不管是外贸,还是外资的引入都解决了大量就业问题。不少民营企业中都是生产出口商品或者出口端口的上游产品。

改开的历史原因就不讨论了,现在分析改革开放现实目的来判断为什么中美贸易的谈判不可能达成了。现在我们来看在新闻中披露中美贸易谈判中双方开出价码

美国的价码, 按中方愿意让步的难度来排列

  1. 买更多的美国产品。虽然数量上没有披露。我们看中美一直以来逆差数量大约每年约为4000亿美元。 川普出了这么多政策,吹这么多牛。总不会只多买500亿就能接受, 他完全无法向国内的选民和国会交代。
  2. 零关税。即对于美国的优势产业提供零关税进入,例如汽车,汽油,农产品等
  3. 签定协议后的核查机制。在前面WTO的履行情况,由于美国对中国的不信任。从外电访问美国两党议员的谈话中。还没有一个议员认为中国在贸易上没有欺诈行为的。因此,没有任何核实的机制,是无法被两党强烈批评。从而影响川普在共和党内的支持
  4. 互联网业务和影视产品的无差别进入。

总结一句话,美国的价码就是要中国的开放程度对标韩国

中国的价码,没有难易程度

  1. 签好合同后,取消所有已加的关税
  2. 取消对于华为的禁运

先说一下中国的价码。第2点,取消对华为的禁运,在美国参众两院的压力下,完全没有机会完全放开的。现的情况就是川普就是提了下要放松对华为的管制, 参议院已经在制定提案限制总统放松的权利。
对于第1点,取消上次加的关税这个是有可能的。但是全面取消是基本不可能的。川普在推上多次提到能收税也不错。他不会全部取消全部的关税,然后完全打自己的脸的。

由于中美贸易谈判中,美方处于绝对强势地位。因此是否能达成协议,主要是看中国能让步到多少了。我们先看中方最容易让步的价码:买更多的美国产品。而就算对于大量购买美国产品对于中国也几乎不可能让步的。

我们从中国改开的现实目的来逐条来分析:

a. 快速得到技术转移. 由于改开已经有40年。外资愿意转让的技术已经接近瓶颈。还 没有转移的技术是外资的核心竞争力,是不会以出售的方式转让的。以中国自豪的高铁为例,就是最明显的技术转移。日,德,法等国家愿意转移高铁相关的所有技术。是因为他们这个技术已经成熟了非常久,能上马高铁地区已经都上马了。 在发达国家只能购买维护性的产品,再保密高铁相关技术已经利润不太。因此当中国大力发展高铁时,其增量的可观的。因此各方拥有高铁技术的外资都会愿意做相关的技术转移。而核心没有转移的技术,例如:飞机发动机。类似这样的技术就是西方国家严防死守的技术,而且原来的技术拥有人也没有意愿转让。总结来计,经过40年,能转移的技术都已经转了。没有转的技术就很难转了。到了2019年,继续开放而得到技术转移的效益已经大打折扣
b. 得到大额的外汇. 这个目的由于需要购买大量的美国产品,贸易顺差大幅减少,这个目的也就无法达到了
c. 解决国内的失业问题. 同上,如果大量产品从美国购买,即中国国内的购买力用在了美国的产品上了。本国的产能无法消化,本地工人同样会失业。
单从大量购买美国产品的这一条来说,中方就基本上无法让步。既然对外贸易的目的在协议达成后就不存在了,那为什么来做对美外贸呢?而且购买的大量的美国产品或者零关税进入的产品都是国有企业控制的产能。而对外贸易的小商品都是民营企业的产能。以现在的中国国内的政治情况,是不会出让国有企业的市场而让民营企业壮大的。
如果与美国签定的协议,出口的目的没达到,而且还受到美国的监督,从而导致国内统治问题,还不如放弃对美国的贸易是更好选择。
而我们现在看到中美还继续谈判,只不过是双方都是心照不宣的进行相关的decouple的操作。毕竟以前的经贸关系实在是太紧密了。估计未来下一步的中美之间就是金融方面的脱勾。美国现在不少基金持有中资的股票和债权。因此也是需要慢慢进行卖出和切割后,才会做到全面切断中美金融联系。现行的例子就是
现在阿里已经开始回归香港上市的操作,这也是北京无法对香港强硬的原因。对于香港的态式,未来单独写一篇博。

从以上的分析,中美是不会真正达成贸易协议。有也做做样子,放出各种好消息。就 像是一对要离婚的明星夫妻,虽然里面已经做了各种开撕和分割财产,但是人前人后还是装恩爱,互相为后面的切割而做出给各自粉丝来稳定情绪而已。

hackintosh(黑苹果)在X230安装简要纪录

发表于 2019-07-28 分类于 OS

X230安装的硬件准备:

  1. 要安装Hackintosh需要先将Intel的网卡换成BCM的。

  2. 购买BCM94352HMB 网卡,拆机更换网卡。

  3. 由于X230有硬件白名单问题。因此需要购买MinPro 100E和SP80夹子对于BIOS进行刷新。

  4. 在刷白名单有几种方法,1. 装机后弹出来硬件ID, 然后读取的Bin进行打开修改,将硬件ID写入bin后重新刻录回去bios来解决。
    而我采用的第2种方案,就是直接用文件夹X230_WhiteList_Patch里面的方法直接对对Bios打补丁,然后再刷回BIOS有效。亲测是有效的
    详细操作手册
    https://forum.51nb.com/forum.php?mod=viewthread&tid=1737551&extra=page%3D1&page=1

  5. 由于原系统就有Win7,但是Win 7无法认出新的网卡,需要自行搜索及下载对应的驱动

  6. 需要先从
    https://forum.51nb.com/forum.php?mod=viewthread&tid=1857633&extra=&page=1
    下载相关的EFI驱动。我是使用了X230-EFI-10.14-BCM94352HMB-FakeSMC.zip 这个安装压缩包

为了防止原网站消失,保留一些重要的信息在这里:

  1. 先由Windows中使用Transmac将Mojova 倒进U盘作为启动盘。详细可以看解压后包里的操作文档.还是比较简单的。不过要强调一下,macOS的分区跟Linux与windows是不同的。而且在支持NTF文件系统也是不同的
  2. 由于生成U盘是苹果格式,因此windows无法打开,因此需要另一个盘将相关的EFI用于安装时使用。另外补充一下:NTFS文件格式,在macos是只能打开无法写入。
  3. 需要先对进行分区删除或者划分,在MacOS中的disktuil在界面似乎无法进行分区删除,可能在命令行可以,当时有点傻,是用windows启动后对分区进行删除和创建。
  4. 按下面修改bios设置。用U盘启动macos, 然后使用diskutils对相应的分区进行格式化。然后进行安装,第一次安装,主要是文件的copy. 在重启后再次进入
    启动界面。选择macOS install in (macOS)再次安装。
  5. 在安装完成后, 启动到Mac OS 后需要EFI copy进EFI. 因此需要mount EFI分区,在不少帖子里面说用Clover Configuration,但是常用工具里面的Clover configuration
    估计是旧版本。因此无法mount上,后来转用了EFI mounter V3 mount上后,直接将FakeMSC下面的EFI文件夹之/Clover /Boot copy进 EFI分区的 FEI文件夹下面
  6. 重启之后就应该相关的硬件就能适配了。
    13。在参考 https://forum.51nb.com/forum.php?mod=viewthread&tid=1743388 的文章中关于如果iCloud, iMessage存在问题的解决方案部分,config.plist的需要生成Serial number
    里面又用到clover configurator. 因此到网站下载了最新的configurator后覆盖了原来旧的clover configurator, 现可正常mount EFI并且查看config.plist后,发现在已经有相关的Serial number等
    并且根据帖子在apple中验过serial number是无效的,估计能正常用iCloud, iMessage了

安装后使用心得:

  1. 使用数月后没有遇到大的问题. 外接一个显示器也很正常
  2. 只是原alt, windows等键使用非常不习惯,但是Mac OS非常适合使用git, golang等命令编译
  3. 但是在QQ 这类的使用就比较不习惯。而且很多软件在破解版也不容易找到.
  4. vmware fusion in Mac OS 比较不好用。比较卡,而据说好用的Parallels在破解版不太好找。

用Hexo建博中遇到的坑

发表于 2019-07-27 分类于 web

使用hexo建立中博客搞过的坑:
安装手册有很多,而且又简单。初入门只要注意几项:

GitHub Repository 命名

GitHub.io的专页的开通需要在你的repository下创建一个 yourname.github.io的项目即可。前面的要跟你github用户名相同就好了。其他的只能是一个项目。但无法影射到 youname.github.com. 像jmvoid只能创建jmvoid.github.io。一个简单易记的github用户名还是挺重要的..

Hero Theme的选择:

经过查看和试验过其他的一些Theme. 发现在大家很多例子中都是使用Next还是很有道理的。主要原因Next还在不停的更新和强化。可使用的配置功能也比其他一些theme要强。因此如果没有特别需要,直接使用Next Theme 还是最方便的. 对于如何配置,搜一下就有很多很好的文档

Next Theme的动画启动:

刚开始对于要增加的动画,刚开始以为变更true, false就好了。发现需要下载相关的动画第三方库的。请转到_config.yml动画栏对应github库查看相关说明

Hexo-Next的操作说明细节,建议直接参考 http://theme-next.iissnan.com/

博客SEO,搜索排名的坑

a. 要提升网站的排名,将自己的description, keyword以及内容上传到相关的搜索引擎。对于如何提交需要根据不同搜索引擎不同操作。
b. 在国内的搜索引擎的在pc端百度占60%, 其次是sogo, 360等. 而移动端搜索中,百度份额占到80%。
c. 由于github.io禁止百度爬虫不被允许爬取github.io。因此给也更容易的方案就主动推送到百度. 但是百度的的流量已经转移到熊掌了.而熊掌的个人注册需要实名+手持身份证。这个有点麻烦

对于Hexo的概念的错误理解纠正

a. hexo new 'post_name' 会创建一个blog. 这将会_post创建post_name的md文件。刚开始以为博的名字与文件名一致。后才发现这是错误理解,md文件里面的title才决定你的博的title.
b. 对于categories和tags也有理解的错误. 一直以为你有一个category就要创建一个category:你要有一个web的类别,就要创建web的类别先。基本这是错误。你只需要使用hexo new page 创建一个categories和tags就好。然后你在你的博中的categoires和tags属性中直接写你需要的类名和标签名即可
c. markdown失效的问题。如果在##代表head中有数字。##的markdown标识在开发软件是有效的。但是在hexo 服务就失效了。只能删除1

初始博

发表于 2019-07-25 更新于 2019-07-27 分类于 General

本站初始博。

本博专注于golang, flutter, blockchain的技术研究以及政经的一些体会心得。

JMVoid

一个专注golang, flutter, SSR, v2ray 技术的博客,也随意聊聊政经逻
7 日志
5 分类
5 标签
© 2019 JMVoid
由 Hexo 强力驱动 v3.9.0