xDroid's Blog

假装高冷的Geek

HiDPI 适配

最近又重新拾起 arch (假装自己在做科研),看着很小的字有点难受……

记得最简单的方案是调整 xrandr

xrandr --dpi 120

似乎效果不是很好? Android Studio 会出现蜜汁位图放大和错位的现象。


尝试了一下似乎 dpi 设置到 110 看起来差不多;而且把参数设置放到 ~/.Xresources 里去了:

Xft.dpi: 110

i3
先到 ~/.config/i3/config 去把 i3-bar 的字号调了一下(并重新发现了一些有用的按键绑定)

sogou-pinyin
输入法的字号就有点小了……而且白底实在看不下去了[捂脸]然而主题又很难改……

chrome
这个比较简单,直接改 ~/.config/chrome-flags.conf

--force-device-scale-factor=1.2

sublime
直接读取了 dpi 参数,不需要其他操作

android studio
按理说也是自动读取了 dpi 参数但是……每日 tips 居然是位图??

matlab
Wiki 上说 R2017b 支持……回学校我就重装 matlab !


参考链接
https://wiki.archlinux.org/index.php/HiDPI

untrunc

起因:手机接 OTG 线录视频,结果空间太小没把尾部/头部的流信息写上,完全无法播放。
查到似乎 untrunc 可以尝试修复。


先尝试安装一些依赖;在 Arch 上似乎是 ffmpeg-full :

cuda-9.1.85.3-5-x86_64  1119.3 MiB  28.7M/s 00:39 100%

???


还是先 clone 一下 repo 吧(
然后发现 / 没空间了 QAQ
清了一遍 cache ,发现 aur 上原来有现成的源;但试了一下似乎又不行,报错 std::bad_alloc ……


后来发现是采样用的视频太大了,装不进内存里。
那还是挺简单的,直接 ffmpeg 截一段就好。
最终顺利修复,有一些地方音画略不同步 QAQ

ss 与 nssm

期中考试的时候实在无法忍受 ss 的 Windows 客户端的速度了,于是琢磨着是不是要换个客户端用用。


先前用的是用 C# 实现的客户端,不知为何连接速度非常慢。考虑到在 Arch Linux 上使用的 python 版本表现还不错,试着在 Windows 下 pip 安装了一下。

然后就发现……并没有 systemd 啊(摔)这怎么开机自启?其实是有两种解决方案:

  1. 使用计划任务等工具配置
  2. 使用 the Non-Sucking Service Manager 配置
    我觉得 nssm 还是挺不错的,支持日志旋转等非常细致的功能,就是 last release 老了一点……

不过 ss 的 python 版维护已经不勤快了,正在测试 libev 的版本……

20.8 别名 (从新手到菜鸟的Linux教程)

其实就是给命令做个缩写~语法是 alias [name]=[value] ,如果只运行 alias 的话就会显示全部的别名替换,比如

$ alias
alias ls='ls --color=auto'
$

呃……还是拿我现在在用的 oh-my-zsh 举例子吧……

alias | wc -l
161
alias | grep git | wc -l
124

这么多别名有一大半都是为 git 服务的[捂脸]


看到一个好玩的 -='cd -' ,原来 - 表示旧目录的意思啊:

$ pwd
/home/xdroid
$ cd repo
$ pwd
/home/xdroid/repo
$ cd -
/home/xdroid
$ pwd
/home/xdroid

应该是个 shell 都能用。

20.7 输入输出重定向 (从新手到菜鸟的Linux教程)

这个是 shell 的(一部分)精髓吧 所以我几乎每次都会搞错

简单说来就是通过一些保留的符号,操纵命令的输入流、输出流(包括标准输出流和错误输出流)。我们提到过 Unix/Linux 设计哲学是一切都是文件,所以一个命令(进程?)输入、输出都是“文件”;既然是文件那就可以进行重定向。

Read More

20.5 Shell 条件表达式 (从新手到菜鸟的Linux教程)

除了 js 和 c/cpp 的三目操作符 [] ? [] : [] 和 python 的 [val1] if [cond] else [val2] 是的我就是要吐槽它们顺序不一样 ,应该大部分语言的条件表达式只有 if-else 类或者 switch-case 类,那么我们也从这两种看一下 bash 里怎么做条件判断。

if-else

基本语法是

if [ cond1 ]
then
exp1
elif [ cond2 ]
exp2
else
exp3
fi

假设大家都已经掌握了 if-else 结构,这里只强调几个不按常理出牌的地方:

  • 左右方括号周围要有空格,不然就是语法错误(原因接下来说道 test 的时候会分析),比如:

    $ if [ 1 -ne 2 ]; then echo "Surely"; else echo "Math taught by literature teacher."; fi
    Surely
    $ if [1 -ne 2 ]; then echo "Surely"; else echo "Math taught by literature teacher."; fi
    bash: [1: command not found
    Math taught by literature teacher.
    $ if [ 1 -ne 2]; then echo "Surely"; else echo "Math taught by literature teacher."; fi
    bash: [: missing `]'
    Math taught by literature teacher.

    这里我们也展示了如何将 if-else 写在同一行内。

  • 和 matlab 不一样的地方是, if-else 块用 fi 结束,而不是 end (相比之下我觉得还是 matlab 的写法好一点)。

  • 测试条件是返回值等于 0 为真,返回值非零为假(真 TM 奇怪,居然和 VB 差不多

[ 与 test

上面提到了左右方括号两边必须加空格,这是为什么呢?

$ help [
[: [ arg... ]
Evaluate conditional expression.

This is a synonym for the "test" builtin, but the last argument must
be a literal `]', to match the opening `['.

这就很有趣了,我们再来看看 test 的帮助:

$ help test
test: test [expr]
Evaluate conditional expression.

Exits with a status of 0 (true) or 1 (false) depending on
the evaluation of EXPR. Expressions may be unary or binary. Unary
expressions are often used to examine the status of a file. There
are string operators and numeric comparison operators as well.

The behavior of test depends on the number of arguments. Read the
bash manual page for the complete specification.

因此 [ 只是 test 的别名,只是最后一个参数必须是 ] ;至于 test 能干嘛,只要知道它测试文件状态、比较字符串或数字就可以了——剩下的,文档都说了 Read the bash manual page for the complete specification 面向 StackOverFlow 编程就可以了

if-else 的简化写法

我们注意到既然条件表达式可以包含命令,那么我们就可以直接把分支中的表达式“接”在做出判断后面;这种技巧是这样实现的:

condition && if_succeed || if_failed

这种语句为什么能够成立留作习题

case-esac 结构

是的,他们又把单词反过来了(手动微笑),举个例子:

$ day="Sat"
$ case $day in
> Mon | Tue | Wed | Thu | Fri)
> echo 'Oh no, we have to work today.'
> ;;
> Sat | Sun)
> echo 'Relax!'
> ;;
> *)
> echo 'Sorry aliens.'
> ;;
> esac
Relax!

别忘了打两个分号。