Squid Game 2 Quick Thoughts

年末,公子要求观看这部爽剧,对网飞早已审美疲劳的我,还是为公子准备好了首发,料想几天过后,公子一直不闻不问,主动献片后,公子淡然道,哦,我已经看了解说了,果然后现代人的娱乐生活,早已是短平快的天下了。

年中,利用宝贵的闲暇,尝试看几部盖里奇的爽片,早年被这位结构叙事+黑色幽默才子的 Snatch 和 Two Smoking Barrel 惊艳过,决定看Revolver,镜头里的郭达斯坦森摆出一个个囧脸,屏幕外的我也是这个表情,这是什么垃圾?!还是捡起潮流看一看鱿鱼2罢。

首先说结论,这个片作为爽片续作来讲,我可以打到4.8/5分,拍的不错。第二部相较第一部完成了从爽片到隐喻片的跃迁,而且这个过渡的比较自然,隐喻的对象都是民生痛点,就业、教育、医疗公平、社会阶层、韩战历史包括朝鲜民族特点等等,比较诡异的是,韩国的海军陆战队这么拉的么?当着全世界公开鞭尸羞辱啊。值得称道的是,在反WOKE潮流风起云涌的当下,这个片在LGBTQ元素的引入上比较柔和,演员朴成焄饰演的赵贤珠令人印象深刻,在议题两端的人群都应该可以接受,这个角色该怎么塑造,网飞应该是下了一番功夫。整体好评!

其次说挖坑,看的出来,网飞在这个爆点IP上还是寄予了“后望”,我可以大胆预测下,成奇勋至少在60岁之前,还会在杀人游戏中度过20年,其实完全可以代言下某家韩国保险公司,穿着456的运动服,满脸自信的伸手拦下LIMO,“自打投了韩保,游戏我一天刷五遍!”主角光环附体,一看进度条就知道肯定又没事了,就连最后黑衣人都觉得赔款太高不敢开枪;另外,深隐的黄仁昊什么时候跳,姜霞和鱿鱼组织内的斗争,男版红绿灯的Sneekpeek,还有一帮业余探险气氛组的下场,这些坑挖的足够拍两季了,只是不知道,格调和故事性再怎么升级呢?

最后抽象下这类题材,我还是蛮喜欢的,这类在架空现实后能够直问人性的片,我把它们称为“思想实验片”,譬如有一部西班牙的系列片叫“Platform”,还有类似的日本真人秀,有些只有架空现实的部分,因为思想性还不足,我们姑且就叫它“实验片”,后者里面还在追的有一部“弥留之国的爱丽丝”,故事性和娱乐性还可以,还有就是经典的“SAW”系列等等,我观影有限,能够在实验片以上拍出思想的,目前鱿鱼游戏2就这一部:这个片直面了人性和道德命题,而且诸位演员对“人性”的出演水准很高,这个片有意通过交待各色人物背景后引出类似“有轨电车难题”的道德命题,为了拯救自己的女儿,杀死其他女儿的父亲是否是正当的?为了一个高尚的目的,是否可以行卑鄙的手段?可以说,这个片进一步削弱了我对人类道德可以相对独立存在仅有的一点美好设想,过往很多末日题材的作品也论证这个主题,对于仍然保有正常社会制度的我们应当警惕,公共基础福利的缺失将直接导致普遍道德沦丧;这个片也揭示了直接民主的不足,联想到韩国的一些历史,应该承认,政治制度价值在与文化、地缘、意识形态等等远为宏大命题相提并论时,便完全不值一提。

奇勋是位勇于实践的理想主义者,2亿多人民币身价,虽然在Chaebol面前不算什么,但是靠雇佣讨债公司在Chaebol面前耍大刀就是有点不尊敬对手了。我要是奇勋早就跳上飞机,拿着456亿韩元,找个游说公司,拿200亿让川普领上慰问下驻韩美军,拿100亿让福克斯拍个焦点访谈现身说法下,拿56亿在青瓦台吃个慈善晚宴,最次也得给国会发点土特产,敲一敲检察总长的大门吧。

刷到X博士的视频,尼古拉和发哥确实看的更懂,贴一个:

临近新年

当YT推送Year in Search的时候,我就感到,新年又临近了,但是毕竟不能像大厂后台有数据库,时刻调用生成Compilation,每每自己回溯一年的时候,都是一种感性、跳跃的感觉。

然而,即便是在这种影影绰绰中,仍有些许星星点点,值得记录下来:

我(们)成功指令再审了一件案件,涉及到美沙酮滥用罪责刑的平衡问题,由于司法实务中关于这个命题的争议性理解,导致量刑悬殊,超过七个人的命运可能就此改变,我头一次真切体会到当你正确履职亲手赋予当事人“公平正义”时,那种巨大的成就感。在这里也挖个坑,待这个系列案件全部生效以后,写一篇分析文章。

本年度在刑三庭首次达成全年100%结案率,然而最高法突然宣布:呃,我们不再追求年度结案率了,我们开始讲究法定审限内结案率。然而老爷们显然没有注意到,嫌疑人作案不会按照时序,案件复杂程度从来不是均质。于是绩效状态一定意义上再一次进入量子态,当你打开案卷前,你是否能在法定审限内审结的事实处于叠加态,一旦碰上烧脑的、离奇的、匪夷所思的,你就可以按照领导的指示“效率服从于质量”。

本年度轮岗到刑二庭,达成刑庭遍历成就,开始耕耘刑法三、五、八、九章,新的事实、新的罪名,条文解释开始变得繁复臃肿,刑档变多,递归援引变多,智商高的人干出的事熵值也高,立法者如此,司法者如此,不守法者亦如此。然而,有些案件也透出一丝诡异的简洁美,清晰的事实,完美的印证,甚至连字体、排版、标点都完美无缺,让刚刚沉浮于毒品案件的我,有一种置身楚门世界的错觉。时逢台北地院审裁柯文哲交保3KW返家,想必瞪着1500Excel档的同行们,这样优雅的案件,他们是难以想象的。

若干年前,我值岗信访窗口,有一位老太前来递交材料,陈年旧事,但言之确实有理,料想一颗螺丝钉又岂能改变车轮的方向,我还是硬着头皮当即接通属地办事电话,安顿一阵,给老太留下自己的联系方式,表示有需要可以联系,但眼下确实无能为力,鞠躬致歉。老太握着我的手说:这么多年,我跑北京告状被黑保安抓我都没有流过一滴泪,你是个好官…沉默,我无言以对,掏出两张纸巾,一张递给老太,一张留给自己。虽然时过境迁,比起一次次参观各种基地,浏览各种网课,这一幕让我永远无法忘怀,并不是老太的肯定,而是当你身处体制面对其固有巨大惯性前的无力感,有一个法律术语很贴切,“不可抗力”。为什么若干年前的事还要写在这里,因为本年度仍然数次体验到被“不可抗力”碾压内心的痛苦,套用同事的话,多米诺骨牌一路倒到你这里,你不但不倒,还要反过来让倒下的全部倒回去,你费那个劲。我笑笑,小心翼翼藏好我那片早已伤痕累累的逆鳞。老爷们新近发明的新话还是传神的,“如我在诉”,愿我在新的一年里,还能披襟斩蒺,还能如我在诉!愿看到这里的朋友们,新的一年顺遂,平安,喜乐,记得保持纯真!

爷青再回——运用Docker来部署DOS环境

这个做图我给自己打100分

农历新年再临,生活仍然十分抽象,要问具体抽象在哪里?都具体了还怎么抽象?每每按下熄屏按键,叹一口气,或者吸一口烟,内心涌出一阵…

不如躲进电竞成一统,点开STEAM,然而,鼠标在绿色大按钮前转了三圈,又毅然决然地奔赴了X,然后就是Google Chrome,听列位Oldies讲讲过去的故事,画面斑斓,仿佛又回到暑假的那个下午,我按开CRT的电源,然后消磁功能发出“嗡”的一声响。Himem is testing the memory ……. done.

Anyway,今天我们来研究运用Docker来部署你自己的云上DOS环境,如果只是为了玩DOS游戏的话,类似的方案其实有很多,比如rwv大神的在线dos游戏,这位大神还有另一个群辉玩家十分熟悉的网名oldiy,他也发布了可以在群辉上部署的docker镜像。Google下Online DOS Game,也有制作很精良的网站,比如https://www.dosgames.com/,在github或者dockerhub上继续深耕,会有很多类似的项目,这些项目对于挑的玩两下的童鞋来说,属于是即用即抛型,体验是极好的,服务器开销也小,然而,对于偶们这些少年立志学习debug要写出自己COM文件然后蹉跎40yearsandcounting的屌丝来说,它们都是使用js在本地构建了虚拟机,然后下载回数据来在浏览器里加载运行,系统的功能始终在本地,存档支持即便有,实现也是靠本地cookie(么?),总的来说,不够“云”。好了,废话讲完,隆重介绍下我们今天要站肩的大神:

搜了搜,大神大名Blaize Stewart,还有一个个人网站,本尊青年时还是很帅的,居然是文理双修的作家,Azure专家,然而对比个站中的英姿飒爽和管站中的,厄…,不知道为什么,总有一种猩猩相惜的感觉。

大神的X在这里,深耕深耕,发现油管还改过一次名字,从惯用的theonemule到techonfire,是想火么?靠讲Docker或者Azure能火么?想想就觉得,骡大咱这都唱美声的,就不要硬刚HIPHOP了吧,不信你去看看时下trendy的各种平台发布,反智的怎么也有75啪,猩猩相惜啊。

这次的站肩没有电梯,我们得拾级而上,手搓一个docker image出来。

点开大神在github上的repo,https://github.com/theonemule/dos-game,对于不会用git的我来说,直接点绿色的<>code按钮,最后一项Download ZIP把项目下载回来,解压。

使用notepad++,打开Dockerfile,修改几处地方,于是我提前踩过的坑,各位看官您就不用了。

ENV USER=root
ENV PASSWORD=password1

这里修改好自己的账户和密码。

 echo "tzdata tzdata/Areas select America" > ~/tx.txt && \
 echo "tzdata tzdata/Zones/America select New York" >> ~/tx.txt && \

这里的时空选择,改不改其实都行。

#Install VirtualGL and TurboVNC		
RUN  wget https://gigenet.dl.sourceforge.net/project/virtualgl/3.1/virtualgl_3.1_amd64.deb && \
     wget https://zenlayer.dl.sourceforge.net/project/turbovnc/3.0.3/turbovnc_3.0.3_amd64.deb && \
     dpkg -i virtualgl_*.deb && \
     dpkg -i turbovnc_*.deb

注意这里要安装两个不在官方源里的软件,我给贴上:

https://sourceforge.net/projects/virtualgl/files/3.1/virtualgl_3.1_amd64.deb/download
https://sourceforge.net/projects/turbovnc/files/3.0.3/turbovnc_3.0.3_amd64.deb/download

把这两个软件下载回来,放进解压文件夹里,然后修改上段代码为:

#Install VirtualGL and TurboVNC		
COPY virtualgl_3.1_amd64.deb /etc/
COPY turbovnc_3.0.3_amd64.deb /etc/
RUN  dpkg -i /etc/virtualgl_3.1_amd64.deb && \
     dpkg -i /etc/turbovnc_3.0.3_amd64.deb

这里必须要指定一个绝对地址,放进~里不行,为稳妥直接放进etc里,为了不强迫,你可以将来在建成的容器里删掉这两个文件。

接下来,把

  echo "exec dosbox -conf ~/.dosbox/dosbox.conf -fullscreen -c 'MOUNT C: /dos' -c 'C:'">> ~/.ratpoisonrc && \

修改为

echo "exec dosbox -conf ~/.dosbox/dosbox-0.74-3.conf">> ~/.ratpoisonrc && \

这是因为,安装DOSBOX的时候会生成一个带版本的conf文件,目前DOSBOX已经停留在这个版本很久了,如果不修改,将来会出来两个CONF,然后你肯定也不知道哪个起作用,那些mount可以将来在这个带版本的conf里面做,好了又为您节省1小时。

删除掉以下三行

export DOSCONF=$(dosbox -printconf) && \
  cp $DOSCONF ~/.dosbox/dosbox.conf && \
  sed -i 's/usescancodes=true/usescancodes=false/' ~/.dosbox/dosbox.conf && \

理由同上,直接修改自带安装的conf即可。

如果对骡大为你自带测试的两个游戏没兴趣,可以直接删除掉以下两行

COPY keen /dos/keen
COPY doom /dos/doom

好了,点保存,点开supervisord.conf,直接贴成我改好的

[supervisord]
nodaemon=true
pidfile=/root/supervisord.pid
logfile=/root/supervisord.log

[program:beforevnc1]
command=/usr/bin/rm -rf /tmp/.X11-unix
autostart=true
autorestart=false
redirect_stderr=true

[program:beforevnc2]
command=/usr/bin/rm -rf /tmp/.X1-lock
autostart=true
autorestart=false
redirect_stderr=true

[program:vncserver]
command=vncserver
stdout_logfile=/root/x11vnc.log
redirect_stderr=true

[program:websockify_vnc]
command=websockify --web /usr/share/novnc 8080 0.0.0.0:5901
stdout_logfile=/root/websockify-vnc.log
redirect_stderr=true

[program:pulseaudio]
command=/usr/bin/pulseaudio --disallow-module-loading -vvvv --disallow-exit --exit-idle-time=-1
stdout_logfile=/root/pulseaudio.log
redirect_stderr=true

[program:audiostream]
command=tcpserver 0.0.0.0 5902 gst-launch-1.0 -q pulsesrc server=/tmp/pulseaudio.socket ! audio/x-raw, channels=2, rate=24000 !  opusenc ! webmmux ! fdsink fd=1
stdout_logfile=/root/audiostream.log
redirect_stderr=true

[program:websockify_audio]
command=websockify 8081 0.0.0.0:5902
stdout_logfile=/root/websockify-audio.log
redirect_stderr=true

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
startretries=5
numprocs=1
startsecs=0
stdout_logfile=/root/nginx.log

这里加入了beforevnc1和beforevnc2两个块,目的是解决原作容器重启以后VNC卡死的bug,本来supervisor是监控运行的,因为只会在entrypoint里加内容实现容器效果,所以就照猫画虎放在这里,实测除了会在log里丢一些exitcode的报错以外,无任何副作用。把127.0.0.1换成0.0.0.0是因为websocket的一些引用问题,其实我也不想懂,直接换就好。

OK,接下来点开nginx.conf,把两处127.0.0.1修改成localhost,希望加验证的朋友可以在这个时候加入auth_basic,不想懂的朋友直接保存就OK。

好了,moment of truth,在你的机器上,使用命令行进入到这个修改了半天的文件夹,执行

docker build -t dosbox .

这里的dosbox就是将来你的镜像名字,可以自己随便取,不要忘了后面的句点,代表本目录。

大概需要二十分钟,取决于网络速度,如果一切顺利,你可以通过docker命令查看一下容器。

会出来一堆中间容器,不用管,只要有了最上面一个dosbox的image,就算成功了。

然后就是用这个image跑一个容器,你可以先把你收藏的DOS游戏放进一个目录,然后用-v参数映射到容器里的目录中,类似:

sudo docker run -d --name=dosbox -p 4080:80 -v /mnt/sdc/dosgames:/dos dosbox

跑起来以后,用浏览器点开你服务器的端口,选vnc.html,输入密码,看到dos界面,就算容器成功了。

接下来,我们再来搞一些finetweak

使用docker命令进入容器,类似:

sudo docker exec -it dosbox /bin/bash

然后,装一个nano

apt install nano

cd ~ 回车进入~目录,cd .dosbox,nano dosbox-0.74-3.conf 回车,把里面的fullresolution= 后面的换成desktop,output= 后面的换成opengl,userscancodes= 后面的换成false,aspect= 后面的换成true,scaler= 后面的换成none,移动到最后,加入以下命令

mount c /dos
c:

然后,Ctrl+O,回车,Ctrl+X,退出。

继续修改,打开/etc/tightvncserver.conf,修改

  $geometry = "640x480";

注意要把前面的注释去掉,后面把分辨率改好,dos时代这个就叫高清了。不改的话X桌面会比较大,很傻。保存,退出。

命令行exit一下,再重启一下容器

sudo docker restart dosbox

登陆一下,注意,这里有一个很tricky的地方,如果你是局域网访问,必须在浏览器里输全网址,类似http://192.168.2.230:4080/vnc.html,如果丢了前面的http,会发现ui.js里的import里没有webaudio,里面就会丢声音,谁的问题?chrome,容器,原作,image,ws协议,不想懂。为您节约3小时。映射以后的跨网登陆或者反代就不会有这个问题。局域网访问的同学可以收藏这个写全的地址。

然后你就有:

如果你出来是小屏幕,按ALT+ENTER可以全屏到桌面,然后在左面VNC控制的菜单里可以选择本机缩放,再F11全屏,听着熟悉的音乐,熟练的dir,cls,cd,play。

你暑假的那个夏天,回到了么?

Kudos to Blaize Stewart and many more.

2024年2月19日更新:

那个鸡腿盖饭就是我,你认识这个图标么?

经过进一步测试,原来dosbox-0.74-3.conf里的fullscreen=后面可以改成true,output=后面可以改成opengl,这样似乎性能更好一些。

在和原作Blaize大佬沟通过后,我头一次真正运用了一回github,将本文中对supervisord.conf的修改做成一个Pull Request,被大佬纳入了主分支,也算过了一把开源的瘾。