January 21, 2020

定位代码中的中文

目的 在系统做多语言支持时,需要定位源代码中的中文,以便集中翻译处理。 方法 第一步,找出所有同一行中,包含指定特征串的行: 第二步,将这些行中的中文部份提取出来,即生成的文件中,全是汉字。 第三步,去重:去掉重复的中文,以提供翻译效率。 在当前目录下,递归地在特定后缀名文件中,找出包含指定特征串的行 viathink@SSR-EN:/work/ssr3-en/web/ssr3-web/WEB-INF PATTERN=pnotify FILE_TYPE=ftl OUTPUT=p1.result find . -name *.$FILE_TYPE -type f -exec grep --color='auto' -P -n "$PATTERN" {} + > $OUTPUT 如找MessageContext后面含中文的行,就将PATTERN的值设置为MessageContext FILE_TYPE可能为ftl, js, java等 注意,由于命令在MacOS上运行,与Linux上运行效果不一致,所以以上命令,需要在Linux服务器上运行。 如果有多种文件后缀名,则分别处理后,再合并: PATTERN=pnotify FILE_TYPE=js OUTPUT=p2.result find . -name *.$FILE_TYPE -type f -exec grep --color='auto' -P -n "$PATTERN" {} + > $OUTPUT 将上面2个文件合并 cat p1.result p2.result > ./merged.result 第二步: 找出所有中文的行(用于程序上应用翻译修改): grep --color='auto' -P -n "[^\x00-\x7F]" merged. Read more

December 20, 2019

制作SSL证书

问题 要提供一个系统让国外访问,此系统对资源要求高(32G内存),所以,如果使用青云这样的服务器,费用很贵(一个月1000元左右)。 使用机房的服务器,对外使用明文HTTP传输目前端口受限(只有8445端口)。使用HTTPs协议时,证书是自制的,不能被验证,会在用户 访问时发出安全警告,这体验非常不好。 解决方案 获取可验证的证书。 https://www.zhihu.com/question/19578422 SSL 证书服务,大家用哪家的? 根据知乎的帖子,以及阿里、青云的使用,发现获取免费证书的路子应该走不通:免费证书一般都不允许下载:只能在其云服务上使用。 而且,阿里的证书服务,无论是否收费,都需要实名认证才能进行下一步。 青云的证书需要单位的资料验证。 目前决定使用Comodo证书,从https://www.name.com/上购买(70.22元/年)。 配置使用 配置邮箱 这步邮箱配置和下步生成CSR都是为了生成SSL证书配置做准备的。这两步做不好,后面的没办法进行。 在QQ企业邮箱中,使用管理员登录,然后配置域名为pids.online。之后,将两个MX记录,配置于pids.online域名的解析处(www.name.com)。 之后,约2小时内,这个会被企业邮箱验证通过。 然后,可以增加维护邮箱,设置admin@pids.online,然后可绑定多个用户到这个邮箱。 使用绑定的用户,如hyx@pids.online登录企业邮箱(https://exmail.qq.com/),密码使用手机恢复。 待接收SSL证书邮件。 admin@pids.online的配置 腾讯企业邮-> 管理工具 -> 管理邮箱帐号 -> 业务邮箱 https://exmail.qq.com/ 生成Certificate Signing Request (CSR) 参考这个网站生成CSR:https://www.thesslstore.com/knowledgebase/ssl-generate/csr-generation-guide-for-nginx-openssl/ sudo openssl req -new -newkey rsa:2048 -nodes -keyout pids-online.key -out pids-online.csr viathink@Nginx:/etc/nginx/sites-available$ sudo openssl req -new -newkey rsa:2048 -nodes -keyout pids-online.key -out pids-online.csr Generating a 2048 bit RSA private key ..............................................+++ ......................................+++ writing new private key to 'pids-online. Read more

December 18, 2019

Joplin

问题 有没有这样一个笔记系统,有如下特性: 语法为Markdown - 保证纯文本记录格式,避免样式、特殊字符污染源码等 各设备同步(自动) 支持所有格式资料 全局检索 自动存储 - 不需要按Ctrl + S 有自动版本记录功能 不绑定单一服务 - 不能说一个服务端停了,笔记就不能同步了。 可自架设服务 支持网海拾贝功能 解决方案 Joplin Github: https://github.com/laurent22/joplin 目前所有Feature: Desktop, mobile and terminal applications. Web Clipper for Firefox and Chrome. End To End Encryption (E2EE) Note history (revisions) Synchronisation with various services, including NextCloud, Dropbox, WebDAV and OneDrive. Import Enex files (Evernote export format) and Markdown files. Export JEX files (Joplin Export format) and raw files. Read more

December 17, 2019

遗传距离计算

背景 phylogeny 英 [faɪ’lɒdʒənɪ] 美 [faɪ’lɒdʒənɪ] n.语系发生,发展史; phylogeny distance 遗传距离? 在类群划分时,要计算样品间遗传距离。这在Genemarker也有计算。目前,我们需要在系统中,提供这个遗传距离的计算功能。 我们找到的资料,是两个数学公式: 这公式如何解读呢? 我们以SSR的数据为例,假设有40个位点,则m=40。j从1循环到40,即遍历40个位点。我们假设有两个样品,来计算它们之间的遗传距离。 为便于理解,我们先考虑简单场景:设这两个样品在每个位点上的分型都相同,即S1的P01为A/A,P02也是A/A,直到P40,还是A/A;而 S2的P02为B/B,P02也是B/B,直到P40,都是B/B。那我们考虑第1个位点,P01,它的分型总数只有A和B,即aj(j=1)为2。 实际上,从1到40,每个aj都是2。 则在根号内,对于每个位点,循环都是两次。现在的问题,就是pij和qij是什么。 我们还是只考虑第一个位点,即j=1的情况;p是位点对于第一个物种(样品)的基因频率,pij (i=1, j=1)是第1个分型在第一个位点, 对于第一种样品的频率。 我们设A是第1种分型,B是第二种分型;则对于样品1,即计算p时,p11 = pA1 = 1,即分型A在样品一中,出现的可能是100%的。 不过,p21=pB1 = 0 ,即B型在样品一中, 出现的可能性是0。 同样道理,q11 = pA1 = 0, q21=qB1 = 1。 那么,我们按第一个公式,能得到 2^0.5,即遗传距离约是1.414;按第二个公式,距离就是1。 实际测试数据如下所示: Sample P01 P02 P03 P04 P05 P06 P07 P08 P09 P10 P11 P12 P13 P14 P15 P16 P17 P18 P19 P20 P21 P22 P23 P24 P25 P26 P27 P28 P29 P30 P31 P32 P33 P34 P35 P36 P37 P38 P39 P40 WF00 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 WF01 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 344/344 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 354/354 上述数据中,P01, P02, …表示各位点;S1指的是WF00样品;S2指的是WF01。A/A表示的是354/354,即A表示354分型;B表示344分型。 Read more

December 10, 2019

Gitlab webhook的应用

目标 目前 能接收并提取gitlab 在发生注释变更时发来的信息。 将来 当在gitlab中的指定tag issue关闭时,在mic工程中,生成一个md记录文档。将issue的说明做为记录文档的内容。 如tag为 MIC_HARDWARE_UPDATE,则在mic的硬件变更信息对应的目录下,生成一个md文档。 如tag为 MIC_SSR_UPDATE或 MIC_MIPMS_UPDATE等时,就在相应的软件信息对应目录下,生成一个md文档。 技术路线 在gitlab 上设置标签MIC_HARDWARE_UPDATE等;然后在发任务时,如果希望自动生成记录,则打上这类标签。 在gitlab上设置web hook。 使用web services技术,在指定服务器上处理web hook发起的请求,处理相应的信息,生成相应的记录。 web hook https://gitlab.com/acdna/maize/-/settings/integrations web hoook会监听一个项目的issue事件,然后向一个URL发出请求。目前issue事件中无comment信息,改为监听Comments事件。 示例的URL如:http://maizedna.cn:9432/hookhandler (在青云上目前未能成功安装flask) flask 安装: viathink@gd-1:~$ pip3 install –user –default-timeout=120 flask (pip3 install –user flask) 注意:这种安装方法,文件被安装到了当前用户下,而不是全局。所以,无法全局执行flask,示例如下: $ ~/.local/bin/flask --version * Tip: There are .env or .flaskenv files present. Do "pip install python-dotenv" to use them. Python 2.7.6 Flask 1.1.1 Werkzeug 0.16.0 使用python的flask来简单地实现web services。其实可选择的有node.js。 comment webhook激发时的信息 示例大致如下: Read more

© Holibut 2019

Home

Powered by Hugo & Kiss.