ntzyz's space

∠( ᐛ 」∠)_

Category

  • Linux
  • Web
  • Network
  • Algorithm
  • Other
  • Photos

Tags

  • Linux
  • JavaScript
  • A6300
  • HTML5
  • PowerShell
  • 狗
  • 雪
  • VPN
  • OpenWrt
  • AudioContext
  • node
  • PS4
  • Web
  • Surface
  • CSharp
  • SDL
  • Gaming
  • WebAssembly
  • iSCSI
  • USB
  • SQLite
  • HTML
  • NAT
  • Highcharts.js
  • Minecraft
  • PHP
  • iptables
  • UglifyJS
  • LeetCode
  • IPv6
  • Routing
  • MediaSource
  • Algorithm
  • PPTP
  • Tunnel
  • MPV
  • HDOJ
  • systemd
  • Highlight.js
  • Arch Linux
  • Node
  • SVP
  • Network

Recent replies

  • xzdry 发表于「DSC01072」
  • ntzyz 发表于「家里的傻狗」
  • ShellBin 发表于「家里的傻狗」
  • ntzyz 发表于「从网易云音乐到 Walkman 媒体播放器」
  • 庚宝 发表于「从网易云音乐到 Walkman 媒体播放器」
  • ntzyz 发表于「电子垃圾列表」
  • kiracca 发表于「电子垃圾列表」

Links

About me
WordPress 存档

ZephRay
>Lithia's Core
Yuno's Wonderland
notonokodds
春上冰月的博客
初春 · 姫
kasora's blog
徐靖峰 | 个人博客
Test2g
447f.Misaka
Project RC
Shell Bin

Windows 10 网络连接共享重启失效的临时解决方案

2018 年 9 月 9 日分类:Other#PowerShell

在上海租的房子只提供了无线接入(802.11n)的方式来访问互联网,而我个人又比较希望自己能获得一个更快的无线内网,并把自己的网络设备对外部隐藏,所以我就购入了一个 NETGEAR A6210 的无线网卡,支持 802.11AC,USB 3.0 界面,准备做一个这样的网络连接:

+--------------------+       +-----------------------+
| LAN(802.11AC + GbE)| CAT5E |  HP ProLiant MS Gen8  |
| (PS4, Kindle, etc) +-------+  eth0: 192.168.137.1  |
|  192.168.137.0/24  |       | wlan0: 192.168.0.x/24 |
+--------------------+       +---+-------------------+
                                 | 802.11n
                             +---+------------+
                             | TP-LINK Router |
                             +----------------+

这种结构对于 Linux PC 来说十分简单,只需要开启 ip_forward 并执行 iptables -t nat -A POSTROUTING -j MASQUERADE 就能做到,但是可惜这块 USB3.0 的无线网卡主线内核里并没有驱动,MTK 开源的驱动在 OpenWrt 下性能又非常糟糕,无奈只能选择使用 Windows 来做路由。

本来呢对于 Windows 来说配置这样的网络也很简单,右击无线网卡的适配器选择共享网络连接就好了,然而万恶的微软在网络共享的实现上埋了个 bug:重启电脑后网络共享会失效,表现为被共享的接口仍然能提供 DHCP 服务,但是 IP Forward 却完全不可用。进入网络连接,取消共享后再执行一次共享,问题就能解决。

那么我们只需要准备一个计划任务让系统每次开机都重复一遍这个操作就 OK 了,写一段 PowerShell 脚本即可:

$NetShare = New-Object -ComObject HNetCfg.HNetShare
$wlan = $null
$ethernet = $null

foreach ($int in $NetShare.EnumEveryConnection) {
  $props = $NetShare.NetConnectionProps.Invoke($int)
  if ($props.Name -eq "WLAN") {
    $wlan = $int;
  }
  if ($props.Name -eq "网桥") {
    $ethernet = $int;
  }
}

$wlanConfig = $NetShare.INetSharingConfigurationForINetConnection.Invoke($wlan);
$ethernetConfig = $NetShare.INetSharingConfigurationForINetConnection.Invoke($ethernet);

$wlanConfig.DisableSharing();
$ethernetConfig.DisableSharing();

$wlanConfig.EnableSharing(0);
$ethernetConfig.EnableSharing(1);

参考资料

  1. NetConnectionSharing (PowerShell Module)

从网易云音乐到 Walkman 媒体播放器

2018 年 7 月 9 日分类:Other#PowerShell#SQLite#CSharp

今年六月份突然脑抽想买个很“传统”的 MP3 回来玩玩,于是就从同学那收了这么一个大法的播放器:NW-A45。到手之后检查了一下机器,几乎是全新成色,带一个 64GB 的 TF 卡,非常兴奋。但当我接上了电脑准备开始快乐地复制音乐时,我突然意识到一个问题:我从哪里复制呢?

在高中的时候,我还是保持着从网上收集音乐并整理好的习惯,原因是当时手里的播放器是 Apple iPod nano 6,整理妥当的音乐在使用 iTunes 同步时会方便很多很多。不过后来被人安利了网易云音乐之后,这个收集和整理的习惯就彻底停下来了,原因同样很简单,在线的音乐服务使用起来比自己整理要便捷太多太多。也因为如此,iPod nano 正式退休,开始养(吃)老(灰)。这之后我都是一直使用着网易云音乐,为了解决手机 16GB 存不下音乐的问题还购买了一个 iPod Touch,64G 的版本拿来听歌显然时毫无问题的。就这样,网易云音乐 + iPod Touch 的组合用到了现在。

回到从前的整理音乐+使用工具同步肯定是不会去做的,这辈子都不可能。然而 Walkman 买都买了,不把这个设备用起来就很不服气。仔细思考了一下,网易云音乐上的歌曲其实是可以随意下载的(会员才能下无损,但这不是重点),不过下载了歌曲是会丢失当时整理歌单时的顺序和分类,这一点说重要也不怎么重要,但是我很不愿意半夜听歌时随机到一些奇怪的音乐(比如血源诅咒的 OST,怕不是半夜直接吓醒),所以歌单这一信息还是有必要保留下来的。

MORE

ARM v7 交叉编译笔记

2018 年 5 月 16 日分类:Linux#SDL#Linux

busybox,产生一个最小的可用 coreutils 等工具,并充当新系统的 init,毕竟这种嵌入式场景要是跑 systemd,开机速度什么的就走远了(

$ wget https://busybox.net/downloads/busybox-1.28.3.tar.bz2
$ tar xjvf busybox* && cd busybox*
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j64
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install CONFIG_PREFIX=/root/basefiles

SDL 1.2,把除了 fbcon 之外的 video 和 audio 都关了。SDL 支持的东西真多啊,居然还有 PS2 PS3的。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr \
            --disable-audio \
            --disable-threads \
            --disable-x11 \
            --disable-dga \
            --disable-video-photon \
            --disable-video-cocoa \
            --disable-video-directfb \
            --disable-video-ps2gs \
            --disable-video-ps3 \
            --disable-video-svga \
            --disable-video-vgl \
            --disable-video-wscons \
            --disable-video-xbios \
            --disable-video-gem \
            --disable-video-opengl
make && make install

zlib,作为 libpng 和 freetype2 的依赖。

CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AS=arm-linux-gnueabihf-as ./configure --prefix=/root/basefiles/usr
make && make install 

libpng 1.6,资源文件保存格式,SDL_image 依赖该库。

必须注意的是头文件目录一定要放在 CPPFLAGS 这个变量里,否则会报错。同时如果 已经报错了记得 make clean 了之后再编译,否则这个错误不会被修正。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr \
            CPPFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib"
make && make install

SDL_image 1.2,去掉了所有其他用不到的格式,只保留 PNG 的支持。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-sdl-prefix=/root/basefiles/usr/ \
            --disable-jpg \
            --disable-tif \
            --disable-webp \
            CFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib"
make && make install

Freetype2 会通过 pkg-config 命令来判断系统内是否安装了 libpng 和 zlib,所以我们需要手动指定这个 PKG_CONFIG_PATH ,或者干脆去掉对 libpng 的支持。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-png=yes \
            CFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib" \
            PKG_CONFIG_PATH=/root/basefiles/usr/lib/pkgconfig/

SDL_ttf,需要把 include/SDL 内的 SDL_opengl.h 给删掉或者改名,因为 configure 内没有提供任何方法来关闭 OpenGL,只能破坏这个检测机制来避免让 autoconf 认为我需要使用 libGL 进行链接。

[ -e /root/basefiles/usr/include/SDL/SDL_opengl.h ] && mv /root/basefiles/usr/include/SDL/SDL_opengl.h /root/basefiles/usr/include/SDL/SDL_opengl.fucked.h
./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-freetype-prefix=/root/basefiles/usr/ \
            CFLAGS="-I/root/basefiles/usr/include -I/root/basefiles/usr/include/freetype2" \
            LDFLAGS="-L/root/basefiles/usr/lib -lfreetype" \
            PKG_CONFIG_PATH=/root/basefiles/usr/lib/pkgconfig/

OpenCV3,测试算法使用,正式代码中使用的部分将被重构

cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../.. -DCMAKE_INSTALL_PREFIX=/opt/rootfs/usr -DENABLE_NEON=ON

PS4 开玩一周年破事水

2018 年 3 月 21 日分类:Other#PS4#Gaming

和 @kasora 聊天的时候突然发现去年的今天我下单了一台 PS4 Slim,没想到这么快都一周年了。随便水点什么也算是纪念一下吧(

图片什么的都转成了 jpg,不过想看原图的可以试试直接新标签打开图片,把后缀名改成 png,如果有无损图片的话就能看到了,全都放 png 有点卡的(

账户

高三毕业之后我还是买过一台 PSV 的,注册了港服的账号,后来又换了个日服,可是这些账号都……怎么说呢,总之就是 ID 已经不想用了。所以这次就很干脆的注册了一个新的账号 @ntzyz320602 ,这种地名+名字缩写+瞎几把打的数字的 ID 感觉到处都能看到,也没什么特点,挺好的(

MORE

在浏览器中使用 WebAssembly 解码 MP3 并播放

2018 年 2 月 26 日分类:Web#Web#JavaScript#WebAssembly#AudioContext

纯属闲得蛋疼

实际运行效果

首先我们需要准备好 WebAssembly 的工具链(大概可以这么叫吧),此处请参考 Compiling from C/C++ to WebAssembly | MDN 中的步骤 来完成。对于 Arch Linux 用户,可以从 AUR 中安装 emsdk:

yaourt -S emsdk

之后则是和 MDN 中的步骤一样,编译并配置 LLVM 和 Emscripten SDK:

sudo emsdk install --build=Release sdk-incoming-64bit binaryen-master-64bit
sudo emsdk activate --global --build=Release sdk-incoming-64bit binaryen-master-64bit
MORE
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Copyright © 2016-2019 ntzyz. All rights reversed.
Except where otherwise noted, content on this blog is licensed under CC-BY 2.0.