? 内容为王,但谁还不是一个颜控?
有一说一,向来我自己的站点风格都尽力保持简约大方,没有多余的功能模块,也没有花里胡哨的css和js,就是简简单单的,希望给人一种大家闺秀的感觉。但这样,难免会缺少邻家小妹的秀气,宛如房间里缺少绿植,少了些许灵动。于是,我决定走出去观赏哈大佬们的博客,只有这样才可以让愚笨的我找到些许灵感,进而让我的寒舍蓬荜生辉。
对不起,我看上你家的老板娘了
怀着初心,四处寻觅,在TX交友网站「Github」停留良久,尤其是基于Hexo的主题更是让人眼花缭乱。
乱花渐欲迷人眼,浅草才能没马蹄。 —— 钱塘湖春行(白居易)
为了维持现有的博客风格,自然是不能大修大改。正在踌躇时,一篇博文引起了我的注意,当然现在我已经想不起来具体文章内容,只记得左下角有一个可可爱爱的女孩像花一样冲着我笑,还很调皮。我坦白,当时我就……瞬间有了灵感。
是不是很二次元!点击完整体验 当时我猜想,这个姑娘应该是该网站的老板娘,如果把她带走放置到我的网站,岂不是会增加些许灵气?
一见钟情,我带走了别人的看板娘
说干就干,查了相关资料,原来这个叫做Live2D
是一种应用于电子游戏的绘图渲染技术,技术由日本Cybernoids公司开发。通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像,对于以动画风格为主的冒险游戏来说非常有用。
集成到网页中后,学术名叫看板娘,hexo官方已经存在插件hexo-helper-live2d,但是5年前就已经停止更新,没有新的模型,不推荐大家使用。
看着看着我就打开了控制台……

分析了一下网络请求,原来看板娘分两块内容:
所以,首先我们得先把框架集成到项目中,然后再将模型文件引入进来。
我又在TX交友网站「Github」根据关键词检索了一番,发现一个不错的框架stevenjoezhang/live2d-widget,支持的模型也很可爱,目前这个框架已经开源,我已经fork。感谢该作者,说明文档也写的很全面,此处不再赘述如何使用,主要有两种集成方式:
| 方式 | 优点 | 缺点 |
|---|---|---|
| 直接引用JS | 一键引入、方便快捷、节省生命 | 不支持自定义 |
| 魔改框架✅ | 将源码下载后,魔改该框架,这样更契合你的网站 | 花点时间理解框架 |
我当然选择了魔改框架,因为我要为我的网站高级定制看板娘。
当你看懂这个框架之后,会发现,虽然这个框架不提供模型,但是,很明显cdnPath就是访问模型的路径。模型的静态资源已经放入到cdn上面了,速度却还是很慢。所以,接下来,我有一个想法:把静态资源爬下来,放到国内的cdn上。

通过分析网络请求,发现前三个请求都是json格式的配置文件:
model_list.json是展示该模型库所有的模型列表waifu-tips.json 是控制看板娘框架不同交互的提示语,在框架中控制,不属于模型库index.json指的是当前展示的模型需要哪些配置index.json里面的配置内容所以,我们可以得出结论,如果想要爬取这个模型库,那我们按以下步骤:

人生苦短,我用python写了一个脚本爬取,主要用到的库是requests、os,在写的过程中发现一个趣事:
# mkdirs竟然可以支持创建带有上级路径的文件夹
path = '/pic/../video'
os.path.mkdirs(path) # 会创建video的文件夹
# abspath可以计算绝对路径,比如输入`/pic/../video/xx.mp4`
path = '/pic/../video/xx.mp4'
print(os.path.abspath(path)) # 输出`/video/xx.mp4`
代码我已经上传到github上面,大家可以参考。这个仓库会更新一些平时写的脚本,老哥们感兴趣的话,可以star⭐️。
经过爬取,我整理了一下模型库,总共有27个模型,并将各个模型的名字也标注出来:

模型库我已经上传到Githublive2d_models,推荐大家可以将这些模型都上传自己的cdn服务(大小70M+,不适合放入项目中),然后在model_list.json配置自己喜欢的模型,cdn服务我一直用的是七牛云,一个月不到1块钱(可能是没什么访问量?)

速度很快,服务稳定,价格便宜,方便管理(比如防盗链等设置),现在可以点击我的推广链接进行试用。
比如,当前网站就配置了6个模型

好啦,大家如果感兴趣可以带一个看板娘回家,如果在配置过程中遇到什么问题,可以关注微信公众号,进群交流。
本文可转载,但需声明原文出处。 程序员小明,一个很少加班的程序员。欢迎关注微信公众号“程序员小明”,获取更多优质文章。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir