使用LocalDate来计算年龄
使用 java.time.LocalDate 计算从生日起到现在年龄的方法。
1 | public int getAge(int year, int month, int day) { |
使用 java.time.LocalDate 计算从生日起到现在年龄的方法。
1 | public int getAge(int year, int month, int day) { |
提问:在 solr 中进行非查询的 query 是写作 -field:value
,或查询的 query 是写作 field:value1 OR field:value2
,那么,对同一字段进行多次非或的查询应该如何写呢?
……
从直觉上来说应该是写作 -field:value1 OR -field:value2
,这么是没问题并且也是可以检索出数据的,但是如果加上其他的条件比如 (-field:value1 OR -field:value2) AND other_or_some_field:value3
这样的话,这样是检索不出来数据的,why??
原因请看 Negative Query Problems 这个 solr 官方的 wiki,上面说这是『Solr Magic』哦,而不是个 bug 哦,好吧。。。
解决方法:多查询条件下,在非查询的前面添加全量查询即可,即 ((*:* AND -field:value1) OR (*:* AND -field:value2)) AND other_field:value3
。而 (-field:value1 OR -field:value2)
这个条件跟 -(field:value1 AND field:value2)
其实是等效的逻辑,所以进一步可改写成 (*:* AND -(field:value1 AND field:value2)) AND other_field:value3
。也就是说,多条件的情况下,非或条件要写成 (*:* AND -field:value)
这样的形式,并且如果可以的话尽量把非或条件写到最后以避免出现这个 magic。
如果情况允许的话,可以把查询条件用 fq
来进行查询。
……
然后就是,如果用到了 spring-data-solr
来进行 solr 查询的话,(*:* AND -field:value)
的写法如下
1 | Criteria criteria = Criteria.where(field).is(value); |
也就是说,先用 notOperator()
方法给 criteria 用 -()
给包起来,然后跟 *:*
与结合之后,用 connect()
方法把该次查询加上括号。最后加上括号是为了跟其他条件进行拼接,这对括号的本身并不影响查询。
然后就是多个条件的非或查询比如 (*:* AND -(field:value1 AND field:value2))
的写法如下
1 | Criteria criteria = Criteria.where(field).is(value1); |
This’s “Solr Magic” with negative queries。
Rails 中通过 form_tag 与 form_for 来生成 form 的时候,会自动追加 这么一个 input 的元素,submit 的话会添加 utf8=✓ 那么一个参数(parameter)。调查了一下这么做的历史跟删除方法。
从 Raspbian官方地址 下载镜像,基本上 lite 版的就足够了反正也是用 SSH 来链接到机器上用不到桌面,然后弄到 sd 卡上。
sudo dpkg-reconfigure tzdata
修改机器的 timezone。sudo vi /etc/hostname
,直接修改sudo vi /etc/hosts
,修改最后一行sudo reboot
,重启sudo vi /etc/apt/sources.list
jessie
记得替换成当时 Raspbian 的版本。 1 | # 中国科学技术大学源 |
sudo vi /etc/apt/sources.list.d/raspi.list
,把第一行中的 ui
给删除掉让它变成如下内容 1 | deb http://archive.raspberrypi.org/debian/ jessie main |
raspberrypi-kernel
之类的内容(国内源压根就没把这些给同步回来)。sudo apt-get update
之前用 Octopress 来部署本站点来着,但是依赖的 ruby 版本实在是太古老,heroku 也发过几次邮件说将不支持 ruby 1.9.2 需要升级,但是一直都没管它(原因还是懒癌发作),结果在某一天网站彻底就打不开了。。。
虽然是免费给部署不过好歹咱也是写过技术文档的人,本着折腾的原则这次打算换其他的框架来弄,所以就这次就用了(凭借着记忆)在推上看到的了基于 nodejs 来开发的 Hexo。
按照文档来搭建基本环境很是方便,而且也不存在依赖的 package 不支持 windows 环境的说法,很快的就把之前的环境给在本地配置起来了,而且之前写的 markdown 文档也能直接的就拿过来用(不过话说 categories 跟 tags 不是一个意思的啊。。。)。重要的是这货感觉速度很快的说,本地打开网站也就分分钟的事情,而且部署也方便只要在站点的 _config.yml 文件中配置好了的话一个命令就部署到 heroku 上了。
需要多说一句的是,因为之前的 heroku 项目中已经存在了 ruby 的项目,所以需要先把之前的项目删除掉之后才能把新的给部署上去。(或许也可以直接用 git push -f
命令强推过去不过已经无法实验了)
ほかの言語も勉強しようかな
1)一句话启动http server
1 | ruby -rwebrick -e "WEBrick::HTTPServer.new(:DocumentRoot => './', :Port => 8080).start" |
2)解决maven下,运行mvn test
时出现乱码的问题
1 | <plugin> |
3)禁止#to_json方法对中文的escape
1 | something.to_json.gsub(/\\u([0-9a-z]{4})/){|s| [$1.to_i(16)].pack("U")} |
4)在windows下使用vundle
1 | if has("win16") || has("win32") || has("win64") |
4)一个比较好看的bash的显示方式
bash中路径太长的话看起来实在是很不舒服,把下面这段代码添加到.bashrc
里面试试
1 | export PS1='%{$fg[magenta]%}%(?..%?%1v )%n%{$reset_color%}@%{$fg[green]%}%m%{$reset_color%} %{$fg[cyan]%}%c%{$reset_color%} ${vcs_info_msg_0_}%# |
5)一个小知识
###Befor work
1)在Gemfile中添加如下代码
1 | group :test do |
2)在Rakefile中添加如下代码
1 | require 'rspec/core/rake_task' |
3)在/ROOT/spec文件夹下的spec_helper.rb文件中添加如下代码
1 | require 'rspec' |
做完以上步骤后就可以进行测试代码了
###Test
1)测试功能
在/ROOT/spec文件夹中添加lib_helper.rb
文件,里面中添加如下代码
1 | require File.dirname(__FILE__) + '/spec_helper' |
2)测试页面动作
在/ROOT/spec文件夹中添加root_helper.rb
文件,里面中添加如下代码
1 | require File.dirname(__FILE__) + '/spec_helper' |
3)在命令行中运行rake spec
####Read more
在偶然的一次资料查询中找到了几个好看的字体,「M+とIPAフォントの合成フォント」,拿来显示代码效果非常不错,推荐给各位使用。
Tips:在Linux中安装字体
在Windows跟Mac OS X下安装字体是在是太方便了,直接把字体文件弄到“Font”文件夹下就行了,下面则是介绍在Linux中安装字体的方法
安装字体支持
1 | sudo apt-get install fontforge -y |
创建字体文件夹
1 | mkdir ~/.fonts |
把字体文件移动到~/.fonts
文件夹中,刷新系统字体缓存
1 | fc-cache -vf |
Done.
最近发现,如果是一个轻量级的项目的话使用MongoDB
数据库会比用sqlite3
来的更方便,下面就来介绍一下如何在rails中使用MongoDB
。