0%

一言以蔽之,是一本有意思的小说。

寻狗事务所一本推理小说,作者是米泽穗信。说起米泽穗信,大概率想起的作品是《冰菓》。《冰菓》由于京都动画出色的改编,导致这本冷门小众的日常推理题材得以被大家得知。我看过几本他的书,如《冰菓》《寻狗事务所》《再见妖精》以及《羔羊的盛宴》,题材各有不同,但是有一个相同的特点,就是灰暗。《冰菓》在京都的改编下,添加了些许温暖的情节,如在第七集《初见真身》的最后,加上了一段姐姐背着妹妹的情节,故事变得温暖多了。

本书的类型是本格推理,从书名得知,事务所就是侦探所,是侦探接收委托的地方。

主角是一个常见的日式作品主角,不是很温柔,不是很暴力,个性中规中矩。他在大城市工作,不久患了异位性皮肤炎,在城里治不好,不得已回到乡下。
病治好后做在附近开了一个事务所,本意寻找丢失的狗,奈何推荐来的人没有一个是寻狗的。或者说本书除了那次在大街上保护小学生被狗咬之外,就跟狗没什么关系了。

事务所除主角外还有一人,名叫半田半平,人设是没头脑,是主角的以前的同学。由于一直想成为侦探,就来前应聘。

主角一开始接了一个找失踪孙女佐久良桐子的委托,然后又接了一个搞明白古文里的信息,这个任务由半平完成。两个人分别执行两个任务,一小节换一个第一视角(这算是日本小说的常态了吧,第一视角随便换,个人不太喜欢这种作品。第三人称可以随便换,但第一人称换的话,看着会有点别扭)。

以下有剧透

主角从各种方面去找该失踪女性。在本市里发现了很多有关于她的踪迹。又发现了桐子做了个网站,并喜欢在该网站发布自己的日记。并在在朋友的帮助下,找到了相关的网站内容。,但是被一个网名为螳螂的人缠上了,不断地在网上骚扰她。桐子不堪其扰,关闭了网站,但一个月后又重新开启,螳螂又开始在留言里骚扰她。三个月后,桐子又关闭了网站,并且已经迁移了户藉。

在另一条线里,半平从一个地方查找另一个地方,发现要解开古文的内容,需要一本书。而那本书比较少,半平要借的时候发现已经没了,只得预约。发现还有一个人也是要借该书,并答应给书到了借给他看。

在另一边,主角发现了桐子失踪的原因。螳螂通过一些蛛丝马迹找到了其本人姓名住处,简单来说就是人肉,而且与她直接接触过了。并分析出她现在最有可能在地方是在共爷爷奶奶家。果不其然在其家中的隐秘位置发现了生活过的踪迹,还发现了一本日记,讲述了她的心理历程,以及现在躲在一个“谷中城”的地方,但并没有人知道这个“谷中城”在哪。

回到事务所后,半平带了一个曾被桐子委托过的保镖。了解到了一部分情况,那个人叫间壁良太郎,曾两次去桐子家。第一次做了什么在书中并没有透露。

我仔细地想了想“第二次”这三个字所代表的意思。

“第一次是在她找上你们‘阿部调查事务所’之前发生的,对吧?”

“是的。”

“当时间壁对佐久良小姐做了什么?”

“……这我不能说。”

田中的脸上写着“敬请见谅”四个大字。
“没有报警吗?”

“因为这是自诉罪。一想到提出告诉可能会对她造成很大的伤害,我们怎么样也没办法大力鼓吹。”

我大概可以猜得出来到底发生什么事了。

这里是书中暧昧的对话,到底是什么事才会导致桐子雇保镖,报警又会对自身造成比较大的伤害。我查了下百科,里面讲日本没有自诉,也许百度百科是错的吧。不过到现在我也没有猜出到底发生事。

第二次在去桐子的家中被桐子刺伤过,不过他并没有追究什么事。并表明出院后会去找桐子。

第二天,主角看半平写的有关古文的报告里,得知了谷中城的位置,而该位置是由那本书提供,也就说,只要找到了那本书,即可找到桐子的位置。这时候,主角得知了另一个着急用此书的人,推断此人即为螳螂。

之后,主角在赶往谷中城的过程中突然意识到,一切没有那么简单。桐子回到本市后做的事太明显了太暴露了,尤其是那本笔记,仿佛是在刻意告诉她的位置。此时,终于发现桐子与螳螂的关系转变,“他是猎物,我才是猎人”。引诱其来到一处几乎没人知道的谷中城,再了结此事,一切都是桐子的计划。

最后,主角来了谷中城,大喊之后桐子现身。此时主角必需装作什么事都不知道的样子,否则主角也会出事。与桐子谈了自己出现在这里的原因是她爷爷的委托,并简单说了几句之后就回去。

结尾处,主角在口袋里装着一把小刀。


本书有着本格推理的很多要素,如侦探、助手、案子、寻找线索、推理以及反转等。
叙事方式是双线叙事,就个人感受而言,助手线略无趣些,无论是事件的内容,还是具体寻找的内容,就如流水账一般,主角线稍好看些。
本书的剧情方面中规中矩,没有什么太亮眼的地方,讨论了一些网络里的人肉搜索吧。本书的年代是 2004 年,那时的日本都已经有了人肉搜索了吗。或者说这说的是跟踪狂吧,从网络一直追到现实里去。诡计也还行,猎物变为猎人,猜出来的难度也比较低(虽然我没猜出来),大部分人看到在桐子家日记的时候,就感觉到非常不对劲了吧。

桐子的后续结局会怎么样呢?我觉得大概率会被查到。首先螳螂被杀后导致失踪了很久,自然会有人报案。并且会检查螳螂相对应的行踪、电脑、以及盘问身边的人。并且他之前受了伤,虽然填的是自己导致受伤的,但是很可能会按这里往下查,或许会查到桐子吧。不过找不找得到证剧又是另一回事了。

本书的结局算一个亮点吧,侦探发现了事情的真相,加害人成了受害者。但是侦探并没有解决事情,并且凶手也依然逍遥法外,还在侦探的身边。侦探在整件事情过后,每天都过着瑟瑟发抖的生活。不过最多也是一个有趣的点吧。

本书值不值得看呢,说值也值,说不值也行,一本中规中矩的推理小说吧。

就第一集来看,是一部非常优秀的动画。

画面

本片的风格是 2D 水墨画视频,第一感觉是惊艳,国产动画终于不是那种日式动画风了。粗线条的人物、水墨风的背景,这就是国产原汁原味的动画啊。
风景
Image
屋子
Image
女主有点可爱啊
Image
颜艺
Image

还有就是《雾山》的打斗十分精彩,开头的特效打斗固然好看,但精彩程度不如后面三个蒙面和那两位大叔的刀剑枪之间的战斗。动作流畅,作画张数多
Image
还有后面的耍长枪的打斗,这么多年了,我终于看到耍枪的打斗了。
Image

剧情

当前剧情还没展开,主要介绍了下背景以及一些人物。

开场火娃放出了麒麟(这背后应该有故事),然后被吊打。接着其它五行都出来,逼退了麒麟,但是麒麟他爹出来,捉了两个人质,要他们把麒麟捉回来换。

在后面还介绍了五行的作用(大概是这个词吧),是镇压雾山下的妖怪来着。酒鬼老头谈火娃的过错应该就是放出麒麟,之后火娃接受了某种约束,不能使用自己的能力之类,并且放一个鸭子身旁监视。
Image

主要挖了几个坑,麒麟去哪了,自那件事后过了多了多久,为什么火娃不去找麒麟,那两个人质在结界里待久了会不会出事?

那三个小妖可以来到雾山,说明雾山很可能出现了问题。这个问题会不会与那个大哥有关?那些药师的大哥经常需要吃一个叫“聚仙丸”的药,感觉很有可能就是一个妖怪,就算不是妖怪,也应该和妖怪有一定的关系。

当然,上面只是虾扯蛋,具体会发生什么,等剧情发展吧。

小结

光是这画面以及这打斗就值得一看了,剧情方面还没看出什么来,就是配音方面有点不自然,换句话说就是尴尬。

Image

前言

window 桌面最基本的一个需求——干净整洁。

实现这一目标的最简单的方法,就是把桌面上所有的东西都删掉,效果显而易见,干净又整洁。

清了桌面图标之后,启动应用有以下几种方式:

1. 搜索

这个是比较常见的一种方式,先按 win 键,然后再键入需要搜索的软件名称。如果是使用拼音输入法,那么只需打上拼音,搜索栏就会显示要找的程序软件。
比如说找 TIM,直接键入 tim,再按回车即可。
Image

2. 开始屏幕

不管常不常用,把图标固定在开始屏幕并分类好,使用的时候按 win 键,再点击所要打开的软件图标即可。
Image

3. 快捷键

一些经常要用的软件,如 QQ、微信等,使用快捷键启动会更加方便快捷。

设置方法:找到软件的快捷方式,右键再选择“打开文件位置”,
Image
打开所在的位置后,再右键该快捷方式,选择“属性”,
Image
设置快捷键后,点击确定即可:
Image

4. win+r 启动

设置太多快捷键会产生冲突,那么这时再启动另一方式—— win+r 启动程序。
按 win+r 后,会显示一个运行框,输入“notepad”,然后回车,即会启动记事本软件。
Image

当然这只是一些系统软件才可以启动,要让第三方软件通过这种方式启动,只需做一些微小工作。

  • 新建文件夹:
    先新建一个名为“WinR”的文件夹,放在一个容易找到的目录即可,并复制好“WinR”的所在目录。

  • 设置环境变量:
    在我的电脑里,右键此电脑打开“属性”选项,
    Image
    点击高级系统设置,再点击环境变量,
    Image
    再点击系统变量里的 Path,点击编辑,
    Image
    再点击新建,再把 WinR 目录填进去,再一路确定到退出即可。
    Image
    注:若显示是下面这样的,在文本末尾分号后面填入目录,再在末尾加上分号(英文输入法的分号),再点击确定即可。若是文本末没有分号,要自已添加一个分号,再粘贴上目录。
    Image

  • 放入快捷方式:
    在 WinR 放入快捷方式,再改成一个比较简单好记的名字,比如微信改为 wx,记事本改为 np,虾米改为 xm 等。
    Image

这样就设置好了,再使用 win+r,再键入 wx 回车即可打开微信。

5. 任务栏

默认的是黑色的,有点丑,
Image
使用 TranslucentTB 可使之透明化。
该软件的github 地址

已上架微软商店,可以去该处下载安装。

一些常用的软件也可固定在任务,比如浏览器,而文件管理器可以用快捷键
win+e 打开,就不需要固定了。

在任务栏右键可选择显示一些按钮与否,
Image
我感觉这些都有点多余,于是全部隐藏。

6. END

到这里,基本上一个整洁的桌面就完成了,没有什么特殊的效果,也不需要安装什么桌面软件,但干净就够了。

最后晒一下我的桌面:
Image

Image

JavaScript-笔记(9):HTML5

HTML5 简介

HTML5 是 HTML 当前及未来的新标准。

web 设计有三个层:结构层、样式层、行为层,这三个层分别使用 HTML、CSS 和 JavaScript 三个技术。HTML5 将上面三个层装入一个小集合,也仅仅只是一个集合。
HTML5 添加了很多新的标记元素,详情 http://www.w3.org/TR/html5
将文档“升级”到 HTML5,只需把文档类型声明改成<!DOCTYPE html>即可。

HTML5 的兼容非常强,缺斤短两的 HTML5 文档都可以完美地通过验证。

忠告

一个工具:Modernizr(https://modernizr.com/),这是一个开源 js 库,利用其富特性检测功能,对 HTML5 文档进行更好的控制。

在文档中嵌入 Modernizr 后,它会随着页面加载而变一些小戏法。

首先,它会修改 <html> 的 class 属性,要使用它编写文档,通常要给<html>属性添加一个 no-js 类:

1
<html class="no-js"></html>

利用这个类,可以浏览器不支持 JavaScript 的情况下应用 CSS 样式。

1
2
3
;.nojs selector {
style properties;
}

然后,它还会检测浏览器可以支持的各种特性,并添加相应的类名。
实际情况是浏览器会支持部分特性,不支持另一些特性,这时,类名中就会间或出现 features 和 no-feature。

它还可以帮一些老旧浏览器处理 <section><article> 等新 HTML5 元素。

使用它非常简单,从 http://www.modernizr.com/ 下载它,然后在文档的<head>中添加该脚本:

1
<script src="modernizr-1.5.min.js"></script>

一定要把这个脚本放在元素中,因为放在文档开头,可以在加载其它标记之前先加载它,以便能更好地创建 HTML5 元素。

示例

一些有关 Canvas、视频/音频以及表单的例子,需要以下浏览器:

  • 苹果 Safari 5+
  • Chrome 6+
  • Firefox 3.6+
  • IE 9+
  • opera 10.6+
1. Canvas

浏览器一般只能显示静态图片,使用 GIF 或许可以实现一些动画,或者使用 CSS 加 JavaScript 也能变化一些样式。
但 HTML5 的<Canvas> 元素可以动态创建和操作图形图像。
支起一张“画布”:

1
2
3
<canvas id="draw-in-me" width="120" height="40">
<p>Powered by HTML5 canvas!</p>
</canvas>

在上面作画需要了解详细的绘画方法,参考<canvas>元素规范(http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html)

<Canvas> 画一个圆角小黑盒子,带有 2 像素宽的白色描边效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function draw() {
var canvas = document.getElementById("draw-in-me");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(120.0, 32.0);
ctx.bezierCurveTo(120.0, 36.4, 116.4, 40.0, 112.0, 40.0);
ctx.lineTo(8.0, 40.0);
ctx.bezierCurveTo(3.6, 40.0, 0.0, 36.4, 0.0, 32.0);
ctx.lineTo(0.0, 8.0);
ctx.bezierCurveTo(0.0, 3.6, 3.6, 0.0, 8.0, 0.0);
ctx.lineTo(112.0, 0.0);
ctx.bezierCurveTo(116.4, 0.0, 120.0, 3.6, 120.0, 8.0);
ctx.lineTo(120.0, 32.0);
ctx.closePath();
ctx.fill();
ctx.lineWidth = 2.0;
ctx.strokeStyle = "rgb(255, 255, 255)";
ctx.stroke();
}
}

window.onload = draw;

结果:
Image

2. 音频和视频
  • HTML 的 <video>元素在文档中嵌入影片以及影片交互定义了一种标准方式,同时也把嵌入操作简化成了一个标签:
1
2
3
4
<video src="movie.mp4">
<!-- 不支持 <video> 的替代内容 -->
<a href="movie.mp4">Download movie.mp4</a>
</video>

同样,音频也是:

1
2
3
<audio src="audio.mp3">
<a href="audio.mp3">Download audio.mp3</a>
</audio>
  • 自定义控件
    浏览器显示 <video>元素时,会为其添加一些与浏览器样式统一的标准播放控件,要想自定义这些控件的外观,或者添加新的控件,可以通过 DOM 属性来实现。主要有:

    • currentTime,返回当前播放的位置,以秒表示;
    • duration,返回媒体的总时长,以秒表示,对流媒体返回无穷大;
    • paused,表示是否处于暂停;
    • play,在媒体播放开始时发生;
    • pause,在媒体暂停时发生;
    • loadedata,在媒体可以从当前播放位置开始播放时发生;
    • ended,在媒体已播放完成而停止时发生。

    记住,无论创建什么控件,都别忘了在<video>元素中添加 control 控件。

    1
    <video src="movie.mp4" controls></video>

    这样才会显示控制条:
    Image

3. 表单

传统的表单可用的输入控件类型很少,文本框、单选按钮、复选框对简单的表单是够了,但需要更多交互功能的时候,仍需要 DOM 上阵。
HTML5 提供了新的输入型表单:

  • email,输入邮箱
  • url,输入 url
  • date,输入日期和时间
  • number,输入数值
  • range,用于生成滑动条
  • search,用于搜索框
  • tel,用于输入电话号码
  • color,用于选择颜色

新的属性:

  • autocomplete,用于为文本(text)输入框添加一组建议的输入项;
  • autofocus,用于让表单元素自动获得焦点;
  • form,用于对<form>标签外部的表单元素分组;
  • min、max 和 step,用在范围和数值输入框中;
  • pattern,用于定义一个正则表达式,以便验证输入的值;
  • placeholder,用于在文本输入框中显示临时性的提示信息;
  • required,表示必填

使用的时候要检测浏览器是否支持对应的控件,可以使用 inputtypes.type 属性,如:

1
2
3
if (!Modernizr.inputtypes.date) {
// 生成日期选择器的脚本
}

检查属性,可以使用 input.attribute 属性,如:

1
2
3
if (!Modernizr.input.placeholder) {
// 生成占位符提示信息的脚本
}

如果没有使用 Modernizr,可以使用 inputSupportType 函数来检查浏览器是否支持某种输入控件。

1
2
3
4
5
6
7
8
9
10
11
function inpurtSupportsType(type){
if(!document.createElement) return false;
var input = document.createElement('input');
input.setAttribute('type', type);
if(input.type == 'text && type != 'text'){
return false;
}
else{
return true;
}
}

使用方式和 modernizr 一样:

1
2
if (!inputSupportType(date)) {
// 生成日期选择器的脚本

检查特定的属性,可以使用这个 elementSupportsAttribute 函数:

1
2
3
4
5
function elementSupportsAttribute(elementName, attribute) {
if (!document.createElement) return false;
var temp = document.crateElement(elementName);
return attribute in test;
}

使用方式和 modernizr 一样:

1
2
if (!elementSupportType('input', 'placeholder')) {
// 生成提示占位符的脚本
4. HTML5 的其它特性
  • localStorage 和 sessionStorage 在客户存储大型和复杂数据集的更有效方案
  • 使用 WebSocket 与服务器端脚本进行开放的双向通信
  • 使用 Web Worker 在后台执行 JavaScript
  • 标准化的拖放实现
  • 在浏览器中实现地理位置服务
    …………

小结

了解了 HTML5 以及使用 Modernizr 等工具检测特性的重要性。