WSL

WSL的安装及配置

1. 自定义安装位置

  1. download LxRunOffline release ver from https://github.com/DDoSolitary/LxRunOffline then unzip

  2. download appx ver linux package from https://docs.microsoft.com/en-us/windows/wsl/install-manual

  3. change package from .appx to .zip then unzip

  4. install wsl with

    1
    $LxRunOffline.exe install -n Ubuntu -d A:\wsl -f C:\Users\lijiong\Desktop\Ubuntu_1604.2019.523.0_x64\install.tar.gz
  5. use cmd command wsl to open

ps. this method may cause some damage and can’t open browsers in ubuntu, I then tried put Ubuntu.zip in other disk and run Ubuntu.exe, it may work ,wait for update.

2. Add user

​ WSL has a default root user, you‘d better add your own user to prevent damage from mis-operation. Every time you open WSL, manually switch to your own user.

3.更换清华源

1
2
3
4
5
6
7
wget https://tuna.moe/oh-my-tuna/oh-my-tuna.py

python oh-my-tuna.py -h (h for help)

python3 oh-my-tuna.py -g (g for gobal)

apt-get update

4. xfce4+VNC图形界面

1
2
3
4
5
6
7


apt-get install vnc4server

apt-get install xfce4

vncserver

修改root(or username)\.vnc\xstart文件

1
2
3
4
5
6
7
8
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey

重启vncserver

win10VNC连接127.0.0.1:5901

————————————7.22 update————————————

安装anaconda后 由于conda init操作导致系统python版本与VNC4server不兼容,将~/.bashrc部分修改,只保留必要功能即可解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
#
export PATH="$PATH:/home/lijiong/anaconda3/bin"
conda activate base
#__conda_setup="$('/home/lijiong/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
#if [ $? -eq 0 ]; then
# eval "$__conda_setup"
#else
# if [ -f "/home/lijiong/anaconda3/etc/profile.d/conda.sh" ]; then
# . "/home/lijiong/anaconda3/etc/profile.d/conda.sh"
# else
# export PATH="/home/lijiong/anaconda3/bin:$PATH"
# fi
#fi
#unset __conda_setup

tensor操作

写PR作业的时候出了诡异bug,train_acc很正常,valid_acc一直是个很小的数字。检查发现问题出在:

1
acc=sum(pred==torch.chunk(torch.nonzero(My_valid),2,1)[1].squeeze())

其中My_valid为one-hot编码,torch.chunk(torch.nonzero(My_valid),2,1)[1].squeeze()操作即one-hot转数字,nonzero()转为 [序号,标签] 的二元tensor,使用chunk()squeeze()转为一维tensor

sum里面的内容为tensor,直接求sum出错(很奇怪求train_acc也是这么写的就没错,小样本没啥问题,大样本结果会变小???)

可以改为:

1
acc=tensor.sum(pred==torch.chunk(torch.nonzero(My_valid),2,1)[1].squeeze())

Or

1
acc=sum(pred==torch.chunk(torch.nonzero(My_valid),2,1)[1].squeeze().cpu().numpy())

VisualStudio真滴害人

cmd里一直用不了conda命令,报错

起因:

​ cmd使用conda命令报错如下

猜测:

​ 应该是由于路径里含有空格,但是cmd不支持含空格的路径导致的

验证:

​ 使用powershell执行conda命令正常。

解决:

​ 找了半天该改哪里,改环境变量改了好久,最后发现就在报错的第一行的位置

​ C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\condabin

​ 打开文件夹里的conda.bat,将第9行的命令

1
@for %%B in (%~dp0.) do @set PATH=%%~dpB;%%~dpBLibrary\mingw-w64\bin;%%~dpBLibrary\usr\bin;%%~dpBLibrary\bin;%%~dpBScripts;%%~dpBbin;%PATH%

​ 改为

1
@for %%B in (C:\PROGRA~2\MICROS~4\Shared\Anaconda3_64\condabin\.) do @set PATH=%%~dpB;%%~dpBLibrary\mingw-w64\bin;%%~dpBLibrary\usr\bin;%%~dpBLibrary\bin;%%~dpBScripts;%%~dpBbin;%PATH%

​ 其中%~dp0为批处理中获取当前路径的代码(长路径)

总结:

​ 都怪自己之前贪省力,在VisualStudio里装anaconda,VisualStudio真的害人不浅。

写了个小脚本

​ 开学了,写个油猴脚本限制一下自己看B站的欲望。

需求:

​ 从主页面直接跳转到动态页,删除动态页上的无关内容(重新排版有待完成)。

实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
// @include      *://www.bilibili.com
// @match *://www.bilibili.com
window.location.href='https://t.bilibili.com';
var eledelete=function(x){
var obj = document.getElementsByClassName(x);
if (obj!= null){
obj[0].parentNode.removeChild(obj[0]);
}
};
eledelete("left-panel f-left");
eledelete("right-panel f-left");
eledelete("section-block");
eledelete("nav-con fl");
踩坑:
  1. ERROR:Cannot read property ‘removeChild’ of undefined

    1
    2
    3
    4
    5
    6
    7
    var eledelete=function(x){
    var obj = document.getElementsByClassName(x);
    alert(x);
    if (obj!= null){
    obj.parentNode.removeChild(obj);
    }
    };

    原因:getElementsByClassName()的返回值为对象的数组,应当改为

    1
    obj[0].parentNode.removeChild(obj[0]);

Hexo

2019-02-14:

​ 写了新东西后疯狂hexo d但是并没有deploy到github库里,原因是没有hexo g生成static files。坑的是教程里面并没有写清楚,且hexo s可以不需要生成直接预览结果。写完直接hexo d -g就完事了。(如需清理则先hexo clean

​ 改了一下文件结构,图片凉了,解决方案参考https://blog.csdn.net/sugar_rainbow/article/details/57415705

2019-02-25

​ 给hexo上的私人日记加密

​ 解决方案:https://github.com/MikeCoder/hexo-blog-encrypt/blob/master/ReadMe.zh.md

2019-02-14

​ 前两天在给VS code配置C艹和python的调试工具时踩了很多坑,产生了记录一下可能会有用的错觉,于是乎今天用hexo+github pages简单搭了一个“踩坑日记”(博客),搭建过程参考https://www.cnblogs.com/jackyroc/p/7681938.html,不再赘述。

坑1:环境变量配置

​ 由于anaconda的安装路径包含空格(环境变量中conda所在的Path包含空格),导致VS code在初始化python环境时conda antivate命令报错(cmd不支持含空格的路径),因此需要在环境变量中将带有空格的长路径转为8.3命名规则的短路径,

1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include <windows.h>
#include <string.h>
using namespace std;
char buffer[100];
int main() {
cout << "C:\Program Files (x86)\Microsoft Visual Studio";
GetShortPathName("C:\\Program Files (x86)\\Microsoft Visual Studio", buffer, sizeof(buffer));
cout << buffer;
}

​ 转换效果如下:

效果图

坑2:项目模板编写

​ 坑太多,懒得写了,参考https://github.com/AZMDDY/vscode_cpp_template改了一个。