Skip to content

【東方】アリス

七月 17, 2017

按理说应该昨日(7月16日)来画这个,起因么,自然是7月16日是爱丽丝之日的这样一个pixiv梗。具体的梗的来源大概是:

7/16(なな い ろ)->七色(なないろ)->七色の人形遣い(アリス的异名)->アリス

按理说爱丽丝其实应该算是Y某人最喜欢的东方角色,然而被我忘掉了(你也好意思说是粉丝么!)。不过借这个机会也来画一下好了,然而其实这是本人第一次画爱丽丝(你也好意思说是粉丝么!):

アリス-CROP

アリスと上海

自然上海也是第一次画……随便(?)勾了线稿然后涂了底色。然而有人说我这个版本的爱丽丝看起来像是ギャル(只是看到了肤色而已吧)。等到什么时候有时间再把色上了吧(转头

Advertisements

重讀蘇里高海戰記錄有感

六月 26, 2017

蘇里高海戰(Battle of Surigao Strait)大概是萊特灣海戰(Battle of Leyte Gulf)中無關緊要的一場戰鬥……爲什麽說無關緊要,大概主要是因爲交戰雙方的實力懸殊,結果可以預料,而且結果很難改變整體海戰進程。美國人的戰史裏面多半把西村當成主動上門送人頭的好人,日本人則喜歡把西村的突進看成武士般的求死行爲(雖然確實西村在山城受炮擊之後隨船陣亡而不像栗田逃命換了旗艦),所以西村是一位成功得到了日美雙方的高評價的將領(大誤)。

chart


萊特灣海戰航路圖(西村是紅色的第三部隊,藍圈内是蘇里高海峽)是來自wikipedia

簡單介紹態勢的話,萊特灣海戰總體是美國人準備在海空軍掩護下登陸菲律賓,切斷日軍補給綫的一次作戰。日本人對美國人的想法也心知肚明,補給綫一旦斷了,那些艦艇沒有油燒也是廢鐵一堆,所以想要孤注一擲把(所剩不多的)老本都押上殲滅美軍登陸部隊。加之日軍的航空和海軍航空部隊基本都已經損失殆盡,所以日海軍本部的想法大概是靠水面艦艇來擊敗美國人,而美國人擁有壓倒性的海軍航空兵優勢,所以日本人想到了個誘敵出動的方法,由一支艦隊來擔任誘餌來把美國人的航母群引走,剩下的主力部隊則殲滅美軍登陸船團。聽起來不錯的主意吧?

誘餌艦隊由小澤中將率領四艘(基本沒有飛機的)航母,兩艘戰列艦,三艘輕巡洋艦,八艘驅逐艦來從北方擔任誘敵,實話說這個架勢確實有一點像是主力艦隊了(除了沒有飛機之外)。而事實證明小澤也成功的吸引住了美國人(更確切的說是哈爾西)的航母編隊。哈爾西迫切的想要消滅日本人最後的航空母艦,這樣美國人就可以完全掌握西太平洋上的制空權了。

而實施攻擊的艦隊分爲三路從南方進攻,栗田艦隊(7戰列艦,10重巡,2輕巡,15驅逐),西村艦隊(2戰列艦,1重巡,4驅逐)志摩艦隊(1重巡,2輕巡,4驅逐),當然從配置上來説,栗田艦隊是絕對的主力,因此其實衹要栗田能夠順利進攻到美軍登陸場作戰就基本成功了。西村和志摩的艦艇數量本身就少,西村的兩艘戰列艦又是一次大戰時建造的老舊貨,就算能夠殺入重圍,在美軍主力被引走的條件下,估計也會被護衛登陸船團的輕型航母和驅逐艦,魚雷艇等牽制而無法達到阻止登陸的目的。

然而計劃(顯然)沒有順利進行……雖然哈爾西的航母被小澤調走了,但栗田似乎並不知道這件事(電報記錄中沒有小澤發出的誘敵成功的電文),相反,他在前往戰區的過程中受到美國轟炸機的襲擊,被擊沉一艘戰列艦(記得是武藏?),之後栗田下令後撤轉進(著名的“迷之反轉”,這個本身有不少爭議)。自然這個説法有點事後諸葛亮,不過日本國内的研究很多認爲這個判斷除去導致了整體的潰敗之外,也間接的導致了西村艦隊的覆滅。由於栗田到達戰區受阻,西村和志摩沒有辦法與栗田同時進攻,所以收到了栗田電文的西村一開始選擇降低艦隊航行速度來等,但最終發現栗田可能無法按時進攻,因此決定冒險通過蘇里高海峽到達戰區。

而實際上蘇里高海峽當時有美國人的6艘戰列艦,4艘重巡,4艘輕巡,21艘驅逐,39艘魚雷艇的壓倒配置,就算主力的栗田艦隊通過也難以全身而退。西村在這個時候選擇通過(順便一提,由於西村和志摩兩人私交甚惡,這兩支小艦隊甚至都沒有統一行動,雖然志摩只在西村後面20海里左右)無異于給美國人送人頭。因此日本方面的普遍觀點是西村明知是死地而赴之,而志摩……是在坑隊友(這個似乎很少有人質疑)。然而如果重新看下記錄的話,西村似乎也不是那麽單純的武士精神。因爲西村在當日早6:50曾派出最上號的水上偵察飛機對萊特灣内進行偵查,當時的報告指出蘇里高海峡僅有敌驱逐舰4 艘、鱼雷艇若干。此外,因爲日本人有夜戰能力強的優勢(所有艦艇都受過夜戰訓練),按照當時的情報考慮的話,西村想要趁夜幕闖過蘇里高海峽其實還是有勝算的。

然而,西村在當日上午8時許被美軍偵察機發現,隨後被企業和富蘭克林號航母艦載機試探攻擊。美國人大概不想只靠四艘驅逐艦和魚雷艇對抗西村艦隊(日本人好歹也有兩艘戰列艦呢)。因此西村在海峽内實際碰到的强敵應該是哈爾西臨時抽調部隊的結果。從反面來看,這樣的分兵則使栗田方面壓力大大減低,因爲六艘戰列艦其實已經是萊特灣哈爾西的全部家當了,剩下的戰列艦都被派去追小澤了……然而,栗田艦隊在迷之反轉后殺了個回馬槍,與美國人展開了第二次交火(一些驅逐艦和輕型航母),卻再次做出了錯誤的判斷,大概由於這些驅逐艦和輕型航母的拼死抵抗(美國驅逐艦以全速衝向日本人並在被擊沉前發射了他們能發射的所有魚雷,因爲驅逐艦的主炮對與戰列艦如同瘙癢),栗田認爲這是哈爾西的主力,而沒有全力進攻,開始再次進入轉進模式。然而,如果美國人真的有主力艦在附近,日本人挨的就肯定不會是魚雷而是衣阿華級的406毫米主炮了。因此其實如果栗田艦隊不轉進,鐵了心攻擊登陸船團的話,美國人大概也要受到很大損失。

所以西村大概是抱著賭一把的心理進入海峽的,如果衹有那幾艘驅逐艦和魚雷艇,日本人大概可以相對輕鬆的穿過海峽,如果美國人覺得他是個威脅,他正好可以擔任第二個誘敵艦隊。而實際的情況變成了第二種:日本人直綫進入海峽后(之前與美軍魚雷艇遭遇,損失驅逐艦二艘,戰鬥不能一艘)被壓倒性數量的對手用T字陣型吊打,如下圖。而且雖然當時是黑夜,但增援的美國戰列艦裝備有(原始的)炮射雷達,所以西村艦隊成了活靶子,旗艦山城很快受到多次雷擊遭到重創,失去航行能力,因此西村打出了GG著名的:

我レ魚雷ヲ受ク、各艦ハ前進シテ敵艦隊ヲ攻撃スベシ
(我艦中雷,各艦(不要管我)繼續前進,攻擊敵艦隊)

隨即山城受到美艦的集火攻擊並迅速沉沒(雖然發佈了全員退艦命令,然而官兵衹有9人由於落水后被美軍俘虜而生還),指揮權隨即轉移到戰列艦扶桑上,不久,由於進入了美戰列艦火力圈,扶桑和最上相繼被擊中多發大口徑炮彈,扶桑爆炸並斷成兩截,最上則艦橋被彈,指揮官全滅,並燃起大火,改由炮術長指揮開始後撤。相反,美艦隊的受到的最大損害大概是由於烏龍造成的A.W.格蘭特號(DD-649)被自軍巡洋艦炮火覆蓋,殉爆造成142人傷亡,退出戰鬥。由與戰場一時混亂,美軍下令停止炮擊十分鐘,趁這個機會本來就在后衛綫上的時雨和被彈起火的最上得以轉進成功。總體而言,這大概很難算上是海戰,基本上是單方面的被虐而已。

Surigao_straight


蘇里高海戰雙方航行圖,來自wikipedia

而更加有趣的是,在西村艦隊潰敗之後,在後面的不遠的志摩艦隊在沒有聯係西村的情況下(一説是無法聯係上),根本沒有搞清楚情況就也緊隨著鑽入了美國人的口袋……在目睹了在海面上熊熊燃燒的,斷成了兩節的扶桑之後,志摩君命令全艦向敵軍齊射魚雷以開始轉進,然而發射魚雷后回轉過程中他的旗艦那智(妙高級)撞上了被美軍擊中起火的最上(最上:我去年買了個表…),最終最上失去動力而被美機追上后擊沉。所以最終西村艦隊祗剩下一艘(號稱掃把星的)時雨. 志摩艦隊的划水表現更成爲美軍戰史中的笑柄。然而,需要説明的是,志摩艦隊之前基本都在執行一些諸如二綫運輸,打撈飛行員之類的日常雜事,其訓練水平自然不及一綫艦隊。而且志摩本人與西村同樣是海軍中將,志摩自然也不可能接受西村的指揮(反過來也一樣),再加兩人平日交惡,出現這樣混亂的情況似乎也在所難免。

其實美國人在接二連三的犯錯誤(一是哈爾西被誘餌引走,否則日本人會在第一時間被19艘航母上的近1000架艦載機教做人;二是將過多兵力防守沒什麽威脅的西村艦隊)。不過,如果美國人在所有主力航母和一半戰列艦被引走之後,沒有重兵把守蘇里高海峽,而是把6艘戰列艦和8艘巡洋艦擺在登陸場,栗田大概衹會轉進的更快……而成功突入萊特灣的西村和志摩拿美國人的主力(的一半)同樣沒有什麽辦法,似乎根本不會對戰爭進程有任何影響。

小澤中將在之後的回憶中指出,“西村艦隊大概是萊特灣海戰中唯一真正想要戰鬥的艦隊”。即使對手不斷犯錯誤,在這種混亂的指揮與協調下,日本人贏的可能性也是微乎其微。那些鼓吹帝國海軍的悲憤粉絲們大概會失望了。

不知爲什麽,大概是受某友人的不良影響,突發奇想的要寫一首詩,“……苟利國家……(被拖走)
咳,因爲想要把所有西村艦隊(七艘)的序列塞進去,所以本來估計要用七律,然而似乎七絕也可以塞得下:

時雨山雲滿潮升,朝雲蔽日黯山城,
帆揚碧海扶桑夢,命落濁濤最上層。

大概可以形容被隊友坑慘的西村君,雖然字面意思還能勉强過去,卻變得平仄不調(第一個就不對,按平調仄起的話)。

但這衹能怪日本人在捷號作戰劃定特遣艦隊的時候沒有想到按平仄分割(攤手),還好有最上這個仄仄在……把若月啦五月雨之類的換來就好凑多了(也許也不會輸那麽慘?),要若月好了,有兩艘雲字輩(?)的意思重複了。由於本人不像某人一樣那麽熱衷於格律所以就那樣吧(?

付:西村艦隊序列:
戰列艦:山城(旗艦),扶桑
重巡洋艦:最上
驅逐艦:山雲,滿潮,朝雲,時雨

利用motion命令实现监控摄像及运动检测

六月 24, 2017

此为在linux(实际上是raspberry Pi了)下利用motion命令和摄像头实现监控摄像的简单方法,在此记录备用。至于为什么要实现监控摄像……也许你想要用来放在家里防盗,想要用来看孩子,或者想要拍摄你家阳台上的鸟窝,或者你仅仅是单纯的手里有个年久失修的摄像头没地方可用,这都没关系。因为——

We do what we must because we can.
GLaDOS

废话少说,当然要实现监控,首先要确保你的摄像头能在linux下面用,按照Y某的经验,只要你的摄像头有够年头(?)基本驱动多半会被kernel收录,都可以用。如果你是花了钱买的Raspberry Pi专用的那个摄像头,或者你在用你笔记本自带的摄像头的话自然更没问题。Y某手里的是一个很老的(连型号铭文都被磨掉了的)罗技USB型号,即插即用很方便,利用

lsusb

命令来看下的话,似乎是7年前的一个入门级型号。
Screenshot from 2017-06-23 15-32-05
想确认摄像头工作是不是正常的话最简单的办法就是试一下实时视频……如果你在用Debian(Raspberry Pi的默认系统)的话可以打开Cheese看看能不能看到图像。
如果摄像头本身驱动没有问题,那么离成功已经近了一半,因为安装motion(在debian下)也很简单……估计其他发行版也是一样的。在debianoid(Ubuntu/Linuxmint)下面只需要

apt-get install motion

就可以。至于怎样用? man motion (逃

安装完成后,默认motion命令的设置文件会在/etc/motion/motion.conf而默认的pid文件(大概)会放在/var/run/motion/,由于这两个地方都是系统路径,所以你需要用

sudo motion

才可以获得权限正常执行。默认打开motion之后,如果视野内的图像相对之前的图像有一定比例的变动,那么motion命令就会认为摄像头拍摄到了运动物体而开始录像,直到运动物体从视野中消失为止。


然而Y某人自己并不是很喜欢用root权限执行程序,个人一般会直接把设置文件和缓存目录都设置到home下面……

首先在家目录下面建立一个隐藏文件夹用来存放设置文件,之后把默认的设置文件拷贝进去:

mkdir ~/.motion/
cp /etc/motionmotion.conf ~/.motion/

之后只要编辑下这个motion.conf就可以改变初始设置了,设置文件大概应该是这个样子的:
Screenshot from 2017-06-23 15-52-20
典型的关键字段+值的普通设置文件,因为每个关键字段都有注释解释,所以其实没有太多必要说明,需要注意的仅仅是几个小地方:
# Start in daemon (background) mode and release terminal (default: off)
daemon on

是否以后台模式运行(如果要做“监控”的话自然应该以后台运行

# File to store the process ID, also called pid file. (default: not defined)
process_id_file /share/pi/homes/yuki-chan/.motion/motion.pid

设置PID的存储目录-就放在刚刚建立的设置目录好了

# Use a file to save logs messages, if not defined stderr and syslog is used. (default: not defined)
logfile /share/pi/homes/yuki-chan/.motion/motion.log

日志文件,同样放在刚刚建立的设置目录

# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0

默认的使用的视频设备,注意一般而言对于笔记本电脑video0会是内置摄像头

# Codec to used by ffmpeg for the video compression.
ffmpeg_video_codec mpeg4

默认视频编码……选择flv的话会存成flash(惊

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480

默认视频长宽……请选择你摄像头支持的格式

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 2

帧率,一般现代的摄像头都可以设到24帧以上,当然为了省硬盘可以设的很小

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /share/pi/homes/yuki-chan/Pictures/motion-detect
输出视频与抓拍图像的目录,请确保你对那个目录有写权限……

设置完成之后,你就可以在终端下运行motion命令……然后自己跑到摄像头前去晃晃看看效果,如果你的设置都没问题的话,你的输出目录下面就应该已经输出了包含你丑恶嘴脸的一些抓拍图片和视频文件,祝玩得愉快(?

需要注意的是,默认的运动检测会把任何画面变动都当作开始录像(光线变化之类的),有必要的话,可以微调下报警的参数,比如
threshold 1500
发生变化的像素数,如果有超过这个像素数的图像发生了变化,系统就会开始录像,自然这个值要根据你的摄像头的分辨率而定,自然这个值越小越灵敏,个人建议设置到1%以上,否则容易有很多虚警。。
lightswitch 20
忽略光线变化范围的比率,motion会忽略在这个面积范围以内的光线变化(比如太阳光在某个角度突然射进屋里)
minimum_motion_frames 2
忽略运动的帧数,让motion只有在连续几帧以上发现运动的时候才会开始录像
更多面向高级用户的设置可以看这里


说到运动检测的效果……下面拍下的每天凌晨到办公室来打扫卫生的大叔(因为从来没见过,我一直以为会是个大婶),为避免肖像权问题所以只放了背影(?

alonzo

You are being watched

额外的小提示……如果你在Raspberry Pi上使用摄像头的话请注意电源问题,因为一般的USB摄像头貌似都很费电,所以记得用一个供电电流足够大的AC输入电源(或者电池,如果你也想要把你的设备伪装成某种看起来人畜无害的东西的话)。

[世界樹]ミスティック

六月 18, 2017
ミスティック

多年之后的新投稿!之所以会画这个是之前终于把拖了多年的世界树4通关了……

画的角色实际上是NPC的ミスティック职业的ウファーン无法君,由于是可用NPC内唯一的女生所以自然(?)变成了人气角色,角色的特征是大概是长耳朵和黑眼圈?

主要的吐槽点是……在起初的剧情遇到玩家之前似乎是冷静系的姐御类角色、然而加入我方之后就变成了萝莉类角色(性格倒是没有变)……所以大概是官方人设认为只有一个女性角色要满足所有死宅的要求很难所以设计成可大可小(误)。
画的时候自然还是参考了原作的人设,如下图(姐御形态?)

Related image

然而由于搞不懂原画中的衣服拓扑结构(想象一下巫女服+连衣裙+皮手套皮靴的混搭组合),因此自己做了一点修改,因为想要练习透视构图的感觉,所以顺便画成了上目遣い的表情,当然实际的游戏中是没有这类表情的……此番也尝试了画白发,但实际的效果似乎更像浅黄色……

ミスティック

the class name in English version is Arcanist…

此外这次尝试了下在(同样是很多年的)Nexus 7平板上画了下,经人推荐用了medibang paint,单看名字的话十分山寨的一个软件。但实际上手还很顺手,图层、笔刷、调色用起来都很简单,而且支持多平台同步,感觉不错。虽然很久没有动笔有点生疏了,但在有显示的屏幕上画还是比鼠标画要容易(……),特别是上色感觉要简单很多,当然另一方面描线就变成了地狱般的体验,所以手写板还是必要的……

[Linux]修复从Windows拷贝的文件权限

十一月 4, 2016

最近有友人M询问我如何修复Linux下从M$ Windows系统拷贝来的文件权限,我们知道从windows拷贝来的文件很多时候可能会出现权限错误(自动变成777),这主要是因为windows的权限系统 (ACL, access control list)与linux本身的权限系统不兼容。这自然会让强迫症的朋友们感觉很不爽(自然也不安全)。

对于文件而言我们一般会希望默认设置为644(rw-r–r–),而对于文件夹而言我们会希望其变成755(rwxr-xr-x),然而,如果仅仅利用chmod来进行操作的话,需要递归的访问所有的目录,如果对于大量文件/文件夹而言的话,自然不是很方便,所以其实可以利用find的功能,把找到的文件管道给chmod。

拍脑袋的想法大概会是:

find * -type f | xargs chmod 644

这个对于比较规范的文件自然没有问题,但是如果windows下的文件名里面有些newline字符的话(最常见的是空格),上述的命令就可能没用了,因为find命令的输出默认分隔符是newline, 所以如果文件名里面混有这类字符的话,就会被认为是被newline分割的多个文件名,从而找不到相应的文件。

因此,可以试着利用 -print0(这个是数字零)参数,把find命令的默认输出分隔符变成null字符,相应的xargs 命令也需要加入 -0 参数来解释管道送过来的文件名:

find * -type f -print0 | xargs -0 chmod 644

一般就没问题了,同理,对于文件夹也可以采用:

find * -type d -print0 | xargs -0 chmod 755

来解决。

[bash] 利用ps命令查看集群CPU使用

七月 8, 2016

最近需要关注某个集群的运行状况,如果对于每个节点都要登录查看的话未免有些麻烦,而集群又没有装mpstat的包(要怪管理员咯), 所以尝试利用ps命令将每个进程的CPU占用率加起来当成总体使用情况。

具体命令如下:

ps -A -o pcpu | tail -n+2 | paste -sd+ | bc

具体语句的意义可以参看explainshell.com,这个网站很方便

需要注意的是,上述运行结果在多核心机器上可能超过100%,因为ps的计算使用单核的占用率,所以如果发现有2400%这样的结果的话大概就可以猜到目前有24个线程在满负荷运转。

如何使用awk分割vCard通讯录文件(.vcf)

六月 11, 2013

写这个的缘由是某人最近要从某旧山寨手机给某(更旧的)NOKIA手机同步通讯录,由于某山寨android手机输出的vCard文件是单文件里面包含多个记录数据的格式,而NOKIA的古老同步软件只支持单记录vcf,所以就要将单个vCard文件分割成多个vcf,然而Y某本来是懒的动脑,在网上找了半天也没找到现成的办法,所以只有自己来分割了,所谓求人不若求己…方法在这里记录备用。

首先要简单了解下vCard文件的结构,旧vCard(2.1开始)是明码,很容易读取,其格式大致如下:

BEGIN:VCARD
VERSION:2.1
N:Ryouko, Asakura
FN:Asakura Ryouko
ORG: Jouhou Tougou Shinentai (JTS)
TEL;WORK:1-604-436-5505
EMAIL:r.asakura@live.com
END:VCARD

BEGIN:VCARD
VERSION:2.1
N:Yuki, Nagato

可以看出这只是由一系列简单的数据域组成的”field:data”结构,每个单独的联系人的数据都保存在”BEGIN:VCARD”和“END:VCARD”中间的部分,所以仅仅需要把这中间的部分单独输出一个文件就好了,很简单吧?这种事情自然要祭出文本处理专用脚本awk了:

awk ‘/BEGIN:VCARD/{name=”split”++i;}{print > name”.vcf”;}’ to_be_split.vcf

即在发现新的BEGIN:VCARD之后,迭代的生成一个“字符+数字”的新文件名,并将BEGIN:VCARD之后的部分输出到该文件名中。
不过,新的vcard似乎采用了xml格式(xcard),因此以上的脚本似乎就不太管用了,我个人是不太喜欢将xml格式运用到数据中的,因为读起来不直观,而且浪费了不少格式上的存储空间(我这种old type就是这样了)。尽管如此,有兴趣的读者仍然可以通过匹配<vcard>,</vcard>之类的关键字来达到类似的分割文件的效果,这里就不再赘述了。

%d 博主赞过: