用Chrome八九年了,插件一点的一点积累越来越多,之前写过一些提高效率的Chrome插件,这里做个完整总结备份,供自己记录和大家参考。
以下插件是我目前Chrome中的插件,之前被删了的当然就不会列出了,也有一些插件,虽然将来可能不会再用,但毕竟曾经陪伴过我一段时间,也没有删除而是在此列出来了。
chrome://extensions/
是很不方便的,因为Chrome有些插件会常开常关,此外Chrome比较臃肿,开扩展多了会占用较多内存。文章最后来一张大图,我的chrome://extensions
,要右键打开才能看得清
在Oracle数据库上建一个用户用于pd使用,然后配置windows odbc数据源。如果pd为64位则配置64位数据源,参考windows10 建立ODBC数据源
菜单栏 Repository –> Repository Definitions新增一个,使用刚建的odbc数据源。
菜单栏 Repository–> Connect,输入一个用于登录的账号密码,如果是第一次初始化协作配置,会让配置一个ADMIN用户密码
初始化完毕之后,可通过Repository –> Administration-> Users来管理用户,如下图建立一个zhangxiaodong的用户,可查看或重置密码,分配所属用户组以及设置权限等
之后,可使用新建的用户登陆了,如下图,新用户登录会提示修改密码。
菜单栏 Repository –> check in/check out,选择相应文档操作即可
]]>在SVN server新建一个仓库用于EA协作使用,此处为名称为ea
在要编辑的包上右键-> Package Control里面有协作编辑的功能,需要注意,编辑文件之前需要检出(check out),检出状态其他人不可再检出编辑,编辑完成及时检入(check in)。
]]>在UNIX/Linux文件系统中,文件类型分为普通文件、目录文件、设备文件和符号链接等几类。每个文件的存储包含三部分,分别是文件名(filename)、文件说明(inode)、数据块(data block)。打开文件时,通过文件名找到inode id,然后找到inode,根据inode信息找到数据块。
关于inode,参考阮一峰的【理解inode】,其中阐述比较详细,也介绍了软硬链接。
系统允许不同文件名,对应到同一inode,这就是所谓的硬链接(hard links),可使用ln
命令创建。此外,inode中会记录指向自己文件名的个数,方便删除操作,即个数为0才会回收数据块。
而软链接(symlink)又称符号链接是一种特殊类型的文件,它指向源文件,甚至指向其他文件系统(远端)的文件,当然所指向的文件也可能被删了,此时类似于空指针,可使用ln -s
命令创建。需要注意,软链接可用相对地址或绝对地址,如果相对地址的软链接,移动之后可能会失效。删除目录软链接时,切记rm smlink
而不是rm smlink/
后者会
目录不允许创建硬链接,试想,如果不同目录下的子目录指向同一个目录(inode),可能会存在子目录中包含父目录的情况,造成目录死循环,如cp
等命令会失效。这是因为硬链接太逼真了,无法区分这个是源文件还是硬链接,都是平等的,目前文件系统的设计,无法处理这种情况;但是,可以对目录建立软链接,它只是一种特殊类型的文件,里面存储了源文件的路径,在遍历目录时只把它当成一种文件来看待。需要注意的是,在复制目录时,是可以对目录下的文件均复制为硬链接的,cp -al
,但这和对目录创建硬链接是有本质区别的。此处可参考如:
Why are hard links to directories not allowed in UNIX/Linux?
Why are hard links not allowed for directories?
硬链接的使用较少,有一句话如下
You generally should not use hard links anyway
也就是不建议使用硬链接,确实应用场景不多,但存在即合理,有时用其拷贝文件防止误删。
我们通常使用的都是软链接,它是操作系统级别的,大部分情况会应用程序被当成实实在在真实文件/目录一样,以下应用场景皆为这个原理。Linux系统中就存在大量软链接,常见的有
比如某包安装目录下的可执行文件,会被软链接到$PATH
中,如/usr/bin
中
重命名。一些库文件.so
等,会通过软链接去掉后面的版本,方便动态编译使用,经常遇到一些开源包编译不通过,缺少相关动态链接库,需要这样加个软链接解决一下,如常见的libz
1 | libz.so -> libz.so.1.2.7 |
将某些无用文件指向 /dev/null
,如某日志ln -s /dev/null /data/temp.log
使用mklink
在Windows中建立软硬链接,默认给文件建立软链接,如果给目录建立软链接,需要加/D
参数,硬链接需要/H
参数。此外NTFS格式的磁盘还特有一种Junction,和软链接类似,且只能用于文件夹。
弄清了软硬链接的原理,对复制和粘贴的结果会有一个预期,Linux下复制和剪切均符合预期,windows下复制软链接时会复制源目标,变为普通文件或目录,对文件夹Junction的剪切,会使其变为普通文件夹,并且把子文件全剪切过来。
最后说说快捷方式,它是更高层一点的应用,不同于软硬链接是文件管理和操作系统层面的东西。Windows环境下,它是一种后缀名为.lnk
的普通文件,被系统的桌面环境,资源管理器(explorer.exe)解析。它类似于软链接,但是功能更丰富些,可以增加启动参数,快捷键等。
Linux的桌面系统也有类似Windows快捷方式的东西。如Unity、KDE、GNOME,它们使用Desktop Entry 文件标准来描述程序启动配置信息,后缀为.desktop
的文本文件,文本格式如下
1 | $ cat goagent-gtk.desktop |
统一放在/usr/share/applications下被桌面系统索引。
]]>Symbolic link
理解 Linux 的硬链接与软链接
Windows的四种链接方式
阮一峰的【理解inode】
深入理解操作系统原理之文件系统
正则很强大,但有时候就是不知道如何用它,或想不起来用它,之前写过简单的RegExp 常用语法,这次把语法再简单复习一遍,并努力的描述了正则的应用场景,再加上几个练习以加深印象,希望是自己最后一次总结正则。
字符 | 含义 |
---|---|
? | 0或1次 |
+ | 1次或多次 |
* | 0次或多次 |
{n,m} | n-m次 |
{n,} | n次或更多 |
{n} | n次 |
字符 | 等价类 |
---|---|
. | [^\n] |
\d | [0-9] |
\s | [ \f\n\r\t\v] |
\S | [^ \f\n\r\t\v] |
\w | [a-zA-Z_0-9] |
\W | [^a-zA-Z_0-9] |
并没有实际匹配任何字符,只是单纯匹配边界
字符 | 含义 |
---|---|
^ | 开始 |
$ | 结尾 |
\b | 单词开始或结束 |
\B | 非单词开始或结束 |
正则表达式默认贪婪模式,在量词后面加?
可启用非贪婪模式。
\b(\w+)\b\s+\1\b
,可匹配he he
这样的字符串,\1
指的是分组1匹配的内容
相比于后向引用的\1
,在替换时,$1
指的是分组1匹配的内容
字符 | 含义 |
---|---|
g | globle |
i | ignore case |
m | multiline |
本质上均为匹配
\B(?=(\d{3})+$)
替换为","
,\B
待替换的内容——边界。加后置断言,当且紧跟3的倍数个数字——(\d{3})+
。(^\s*)|(\s*$)
替换为""
<!--(.*?)-->
((?<!:)\/\/.*)|(\/*(.\s)*?\*\/)
(?<!:)
排除前面包含:的情况,防止http://
的情况1 | function isPrime(num) { |
^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W\_]).{8,16}$
- https://www.debuggex.com/ 最好用,但经常访问不到或服务出错
- https://regex101.com/
- https://regexper.com/ 只是解析表达式,不能测试匹配,可本地化
- https://regexr.com/ 只是JS解析器
]]>
在公司食堂吃饭,由于每张饭卡每月需要缴纳150管理费,所以大家为了省钱几个或十几人共用一张饭卡,以此省钱。多人公用饭卡,这就涉及到一个记账的问题。充值需要记录,每人花费多少也要记录。
一种方案是,设计信息系统,大家吃完后自行记录,B/S或APP或文件,但多少有些不方便,容易忘记,造成坏账众多。后来找到简便易行之法——利用微信群,大家吃完后发送数字即可,除了记账,大家还可以互相监督,减少坏账。期间也想过微信公众号,类似桌游助手那种思路,或者小程序肯定也可以。但开发工作量较大,所有就一直用微信群做了。
但微信群统计有一个缺点,月末统计每人的花费比较麻烦。目前只能是,聊天记录按人筛选,然后手工输入到excel统计。这显然太麻烦了,一定要想个办法。
只要能导出聊天记录,就可以很简单的实现统计分析。但是偏偏微信的聊天记录好像不能导出文本或其他什么形式用于程序处理,所以此法不通。
另一种思路是读取微信PC端或移动端的本地数据库,直接统计。PC端不包含所有聊天记录,但微信移动端是会接受所以消息的,所以要拿到移动端的本地数据库,然后做一些统计即可。
借助谷歌,已经有人逆向微信APP,拿到本地数据库。
详情参照知乎的回答
这里简述一下,需要root的手机,拿到/data/data/com.tencent.mm/MicroMsg/一个长串/EnMicroMsg.db
,文件为加密的,密钥为md5(IMEI+UIN)
的前7位,手机序列号IMEI通常可在设置->关于中获得,或拨号键盘*#06#。我这里为IMEI1,UIN为用户信息号,可在/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml
中获得,文件中default_uid的value即是。
微信使用了sqlcipher做得加密,看来sqlcipher常用于安卓端sqlite数据库加密。
最初原本想在PC端引入sqlcipher的包连接db文件,后来发现sqlcipher主要是用于安卓应用,没找到普通java项目可用的库,于是作罢。
又了解到sqlcipher用了AES256做得加密,刚要手写AES解密,发现JDK自带AES为128位的,如若想用,还得下载额外的包,期间还去看过sqlcipher的加密部分的源码,后来想到AES还分不同类型,这样成功的几率不高呀,于是也作罢。
解铃还须系铃人,还是用sqlchipher来解密吧,安装和命令参照了这篇和这篇,多谢分享。
1 | apt-get install sqlcipher |
或者
1 | unzip -q sqlcipher-master.zip |
使用上一步得到的密钥,如key = ‘1234567’。
1 | ./sqlcipher EnMicroMsg.db |
或者一句话直接执行
1 | sqlcipher EnMicroMsg.db 'PRAGMA key = "1234567"; PRAGMA cipher_use_hmac = off; PRAGMA kdf_iter = 4000; ATTACH DATABASE "wechat.db" AS wechat KEY "";SELECT sqlcipher_export("wechat");DETACH DATABASE wechat;' |
即可得到普通未加密的wechat.db。
其中PRAGMA cipher_use_hmac = off; PRAGMA kdf_iter = 4000;
可用PRAGMA cipher_migrate;
代替。使用后者,会改变原文件,如sqlcipher EnMicroMsg.db 'PRAGMA key = "1234567"; PRAGMA cipher_migrate; '
,执行完后可使用DB Browser for SQLite
输入密钥打开,然后菜单栏->文件->设置加密,密码为空即可清除密码。
使用Browser打开数据库文件,大致浏览了一下表结构和数据,这里主要使用三个表:
message中每条记录即为一条聊天消息,包含着聊天对象talker
,如果为群聊,message.talker=chatroom.chatroomname,message.content中存储形式为:”群成员wxid:\n内容”。
编码过程比较容易,统计聊天记录会按照正则表达式匹配,这里要求群成员,饭费消息为单独一个数值。
具体代码见
由于程序较小,为实现方便舍弃了一些编码规则,比如函数的可重入性等,这里仅供参考。
]]>之前介绍过SSH入门使用,现总结一些高级用法,主要包括以下三部分:反向代理、正向代理、代理上网。
以上三个使用功能分别使用SSH的-R -L -D
功能
1 | -C 压缩所有数据 |
如果登录出现异常,可使用-vvv
显示调试信息。
编辑/etc/ssh/sshd_config
GatewayPorts yes
可以在反向代理时服务端监听所有IP0.0.0.0
而不是只有本机127.0.0.1
。ClientAliveInterval 60
每60秒给客户端发送心跳,ClientAliveCountMax 3
超过三次不响应则关闭连接。GSSAPIAuthentication no
GSS认证方式关闭和UseDNS no
DNS反向查询关闭,此设置可提高SSH登录的响应速度,确保PasswordAuthentication yes
密码认证打开(通常默认公钥认证也为打开)。ssh client能访问到的所有服务(包括局域网和本机),通过ssh连接映射到ssh server的端口上去。示例
ssh -CqTfnN -R 80:localhost:80 user@ssh_server
将本机的80端口映射到服务端80端口ssh -CqTfnN -R 8080:192.168.1.190:80 user@ssh_server
将本局域网192.168.1.190的80端口映射到服务端8080端口如果ssh server在公网,可内网的服务映射到公网上去。
如将本机的远程桌面端口3389反向代理到公网,将内网HPC的SSH端口22代理到公网。
将ssh server能访问到的服务(包括局域网和本机),映射到ssh client的端口。
示例 ssh -CqTfnN -L 5901:vnc_server:5901 user@ssh_server
将局域网vnc_server的5901端口映射为本机的5901端口,由于vnc服务通常未加密,使用ssh也可加强通讯安全。需要注意此时去netstat
中查看,会发现本机存在127.0.0.1:5901
的监听,并不是0.0.0.0:5901
,这意味着只能本机访问。如果其他机器也需访问本地转发要使用GatewayPorts
关键字,增加-g
参数即可。
常见的SSH代理上网,使用方法:ssh -CqTfnN -D 1080 user@ssh_server
,本机开放1080端口,可以在Internet选项中设置代理服务器地址为127.0.0.1:1080
即可,或使用Chrome的SwitchyOmega
插件配置根据网址决定是否使用代理。
只要ssh server端或client端能访问的服务均可通过ssh端口代理被双方网络中的终端访问,而且所有连接均为加密。要注意的是,需长期保持连接来维持转发功能,一旦网络不稳定则掉线,所以必要时可配置守护进程,如果用于代理上网,这也是相比于shadowsocks的劣势。
]]>部署环境:windows server 2016
Redmine是一个项目管理工具,可下载带敏捷插件的版本Redmine+Agile,可以下载Installer
或Virtual Machines
,也可以在浏览器中查看DEMO。
安装都很简单,期间会设置一个管理员账号和密码,此密码也为mysql中root的密码。windows版本的配置文件在\apps\redmineplusagile\htdocs\config
基本不用过多的配置,这里只是配置了邮箱,打开configuration.yml
,邮箱配置如下:
1 | email_delivery: |
Windows环境下的邮箱服务器,软件非常小,需要.net framework 3.5
的支持。由于面的步骤安装了mysql,这里也顺便使用mysql做数据库。添加账号也很简单,然后在foxmail中配置客户端设置stmp/imap地址即可收发地址。如图配置了zhangxiaodong@puhua.com
需要注意,其他邮箱如qq,发送此邮箱名称是不能收到的,因为没有配置puhua.com
的MX记录,qq邮箱服务器找不到@puhua.com的邮箱服务器
官网只提供源码,但是官网给出了网址可以下载二进制文件
修改配置文件httpd.conf
打开如下模块
1 | LoadModule access_compat_module modules/mod_access_compat.so |
修改端口及黑名单白名单
1 | Listen 8089 |
此时可启动httpd.exe
,完毕,可使用自带Internet代理或SwitchOmega测试。
在免费资源部落中搜索SSL或者证书字样,会得到好多文章。
https://www.freehao123.com/gogetssl-comodo-ssl-rapidssl/
https://www.freehao123.com/free-ssl-paihang/
阿里云也已经提供了免费的证书服务。不过我没有申请下来,本以为几分钟搞定,但是过了一天还没有,可能是哪里没弄好吧。腾讯云也有类似的服务,几分钟就申请下来了,为期一年的。
后来找到Let’s Encrypt,是免费中最有名的了。它官网中提供了脚本工具Certbot来适配各种系统的各种web server。一些有名的应用,如WordPress面板中也集成了自动申请及续期服务(证书默认3个月期限,需要续期),国产又拍云也支持自动申请及续期。我没有用VPS,这次只是为了测试证书,想便捷的拿到证书文件,所以直接在本地配置Tomcat。
使用了SSL For Free拿到Let’s Encrypt颁发的证书,https://gethttpsforfree.com/ 也是类似的服务。
步骤很简单,只需要验证一下域名的所有权即可。我在域名解析中加了TXT记录,得到证书文件,包括三个文件: private.key certificate.crt ca_bundle.crt
。此证书有效域名为xiaodong.site
和www.xiaodong.site
。
首先添加域名,编辑配置文件server.xml
1 | <Host name="www.xiaodong.site" appBase="webapps" |
顺便把8080改为80,把www.xiaodong.site
添加A记录到本机。如果是家庭局域网,可把A记录指向自己公网IP,然后可在路由配置虚拟服务器端口转发到本机。如果没权限配也没关系,这里只是测试一下。
现在,本地访问www.xiaodong.site
可以打开网站了。如下图:
这里顺便介绍下,如果不是CA颁发的证书,怎样给Tomcat开启SSL。
首先本地生成一个证书,用到了JDK的keytool。
1 | # 生成.keystore文件 |
然后编辑配置文件server.xml
,把SSL打开,证书指向刚才生成的文件,密码为上一步配置的密码。顺便把8443全改为https默认的443,
1 | <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" |
此时重启Tomcat,访问页面如图:
接下来使用刚刚申请的CA证书,来制作配置Tomcat,需要使用到openssl工具。
1 | openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt |
把配置文件改了,刚才的test.keystore替换为keystore.jks。重启Tomcat,访问页面如图:
首先确保Linux服务器上具备桌面环境,可以是Xfce、KDE或者Gnome等都可以。此外还需要服务器上装有VNC server。可使用rpm -qa | grep vnc
或dpkg -l | grep vnc
检验。如果没有可以yum -y install tigervnc-server
安装。本次使用环境为Redhat 5.5 & Gnome。 需要注意的是,VNC协议的数据是明文传输的,存在密码泄露的风险,不过可以使用SSH -L
进行端口转发。参照SSH高级用法
1 | # 当前用户第一次创建服务,会在HOME目录下创建`.vnc`目录存放配置,会提示输入访问密码。 |
编辑配置文件如下。
1 | # vim /etc/sysconfig/vncservers |
/etc/init.d/vncserver start启动,会一次启动root用户下的配置1和weblogic用户下的配置2
使用VNC Viewer,远程连接目标主机。地址可以为IP:1
或IP:5901
两种形式,示例如下: ![](/images/VNC Viewer.jpg)
这里总结记录我对于Oracle数据库的一些新知的东西。
startup
: 启动数据库,shutdown immediate
:停止数据库。sqlplus / as sysdba
[start|stop|status|reload]
exp user/password file=$HOME/backup.dmp
imp user/password file=$HOME/backup.dmp full=y
.bashrc
文件中添加别名命令,alias sqlplus="rlwrap sqlplus"
和alias rman="rlwrap rman"
。持续更新……
]]>需Oracle 11g已安装在服务器,前些天写过CentOS 7.2 远程安装 Oracle 11g。
plsqldev1200x64.msi
chinese.exe
。将instantclient_11_2
,解压至一目录下。然后配置Oralce连接。打开PLSQL,配置首选项->Oracle->连接,Oracle主目录和OCI库分别设置,举例如下:
1 | D:\PLSQL Developer 12\instantclient_11_2 |
配置数据库连接有两种方式,一种是直接在登录页面指定,如192.168.1.100:1521/abc
。
另一种方式是使用tnsnames.ora
,创建instantclient_11_2\network\admin\tnsnames.ora
文件。tnsnames.ora
内容如下:
1 | 本地实例名1 = |
其中MY_LAB为本地实例名,lab为远程数据库实例名。
首选项->用户界面->字体,可设置浏览器,表格,编辑器的字体。我个人把前两设置为雅黑,编辑器为Consolas,均放大了一些字号。
通常情况下,客户端PLSQL需要和服务端数据库的编码方式一致,否则可能会导致中文显示或编辑异常。
连接成功后,执行select userenv('language') from dual;
可查看服务端字符集,比如为AMERICAN_AMERICA.AL32UTF8
。在本地设置环境变量NLS_LANG
也为AMERICAN_AMERICA.AL32UTF8
即可。
近期从零安装Oracle,网上查看了许多教程,包括网友总结的和官方文档,这里总结了一些必备的配置和常见错误处理,以便日后查看。
groupadd oinstall
)groupadd dba
)groupadd oper
)useradd -g oinstall -G dba oracle
passwd oracle
这一步可以省略,因为安装过程中Oracle会检测到这些配置不符合要求,会生成一个脚本,用root执行即可配置完毕。
内核参数修改/etc/sysctl.conf
。增加如下参数,并立即生效sysctl -p
1 | fs.aio-max-nr = 1048576 |
资源限制修改/etc/security/limits.conf
。增加如下参数,提高oracle用户的资源限制。分别是进程数、打开的文件数、堆栈、驻留内存上限。soft为软规则,超过限制警告,hard为硬规则,不允许超过。
1 | oracle soft nproc 2047 |
后续数据库安装时,会检测依赖包,此处可先行安装。
1 | yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 libXp |
可修改~/.bash_profile
或~/.bashrc
(zsh为~/.zshrc
)。前者在用户第一次登录时执行一次,后者在该用户每次终端启用时均执行。使用source 文件名
可立即生效。添加如下内容:
1 | umask 022# 创建文件默认去除022权限,对应755 |
/etc/ssh/sshd_config
的配置X11Forwarding yes
,并service sshd restart
。yum install xorg-x11-server-util xorg-x11-apps xorg-x11-xauth xterm
,可能还需要xhost +
添加图形界面访问权限,运行xclock
观察是否出现图形时钟进行测试。DISPLAY
环境变量。若使用ssh命令连接,可手动添加如下环境变量。1 | # xServer |
runInstaller
安装时可能需要手动打开Xmanager进行监听。/opt/oracle/
。运行runInstaller
可弹出图形窗口进行安装,根据需要选择安装选项。$ORACLE_BASE/11g
,后续可添加如下环境变量将一系列oracle命令加到PATH中去。1 | export ORACLE_HOME=$ORACLE_BASE/11g |
semmni
期望设置为128,但在/etc/sysctl.conf
中添加kernel.semmni = 128
中后,sysctl -p
提示找不到semmni文件,所以目前也忽略了此错误,未加semmni
。后续滚动条阶段时,遇到了两个编译错误,查看日志得到详细信息。
首先查看/usr/lib64/libc.a文件是否存在,如不存在可yum install glibc-static
下载。然后修改出错的makefile文件($ORACLE_HOME/ctx/lib/ins_ctx.mk
),在$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
前面添加-static /usr/lib64/libc.a
,即采用静态链接,可解决此错误,点击retry通过。
修改出错的makefile文件,在$(MK_EMAGENT_NMECTL)
之后加上-lnnz11
链接libnnz11.so库,点击retry即可通过。
---See You Again
It’s been a long day without you my friend.
And I’ll tell you all about it when I see you again.
We’ve come a long way from where we began.
Oh I’ll tell you all about it when I see you again.
When I see you again.
自己从小学一直读到硕士研究生,每个阶段都会有几个重要的好友。
小学6年,初中3年,高中3年,大学4年,研究生3年。
一共上了19年学,真如老爸所说,再上学就老了,而我也早已按讷不住自己。
每个阶段的自己都有不一样,但不变的是一直在成长。
成长是需要经历的,一些事情会催促着快快成长。
印象深刻的有高三,大四,研三那些努力奋斗的日子。
成长的同时,也越来越懂得珍惜,珍惜每个阶段的好朋友。
好朋友,是能使对方愉悦的人,即喜欢与之相处,喜欢与之交谈。
可天下没有不散之筵席,但情分不会因距离远和联系少而疏远。
借用普希金的诗:
一切都是瞬息
一切都将会过去
而过去了的
就会成为亲切的怀恋
我渴望和怀念在一起的日子。而“一起”,是一个神圣的词汇。
如果去现场看过比赛或演唱会,经历过不同人因共同愿景而聚集的一起,就会明白其中的伟大。
而确实存在那么3年或4年的求学生涯,我们一起生活。
一起学习。探讨,互帮互助。一起升学,一起毕业,一起学术攻坚。
一起娱乐。逛街,看电影。还记得这件衣服和谁一起买的,这个电影和谁一起看的。
一起旅行。火车、飞机和景区。一起旅行很能快速增进情感——陌生变为熟悉。
每每结束一阶段生活,都会封存一些美好时光。
更幸运的是,这些时光有你相伴。
我已经开始下一阶段的征程。
而你,我的老朋友,许久未见,十分想念。
与你重逢之时,我会敞开心扉倾尽所有。
我想你了,就会给你发信和打电话。
我还想你,就会去找你。
我希望我对你来说是独占的,在你想我的时候。
理解javascript程序的异步运行是一个难点,由于这个特点会出现一些不同于其他语言的实现方式。
1 | ; |
对于一个5669K的文件,调用了89次data事件。
持续更新……
]]>BioViz - HomeHuman - ChromoZoom, the interactive genome browserDave's Wiki | HomePageNational Human Genome Research Institute (NHGRI) - HomepageA workflow for multi-omic data analysis - OMICtools生物信息学 - 专辑 - 优酷视频Gerstein LabGeneDockExplain SAM FlagsJBrowse | A fast, embeddable genome browser built with HTML5 and JavaScript世演生信 - 专注于生物信息分析平台]]>
]]>
- 序列比对那点事儿 (转载)
笔者的电脑型号为联想小新V4000,带光驱。准备入手一块固态硬盘,把原硬盘放到光驱的位置,固态硬盘放到原硬盘的位置。
首先上网查了一下此型号笔记本光驱口是否支持硬盘接入,有无成功案例。在联想官方论坛中查到有产品经理说此机型光驱电流较小,不推荐接硬盘。但是也在网上查到了一些成功案例。于是乎就在网上买了固态硬盘和硬盘托架。
为了避免重装系统,把原C盘用Ghost做了一个镜像,放到非C盘的位置。然后开始拆机,有些机器比较难拆或怕拆坏的,可上网查一下特定型号的拆机教程。拿下原HDD,把SSD放到那个位置。然后拿下光驱,把HDD固定在光驱硬盘托架上。此时不必把后盖装好,应先检验下HDD是否被识别,防止没装好一会还得全拆开。
启动时,选择启动项,如果可以从原机械硬盘就说明没问题了。一开始此机型并未能正确识别,只是听到开机时机械硬盘在转。后来咨询了下卖家客服,才得知硬盘托架有一个开关,用于支持不通过类型的接入。于是调了一下,果然能识别了。
接着就是恢复系统,进入机械硬盘系统,或者U盘PE,用Ghost恢复到SSD即可。恢复完毕后可能需要修复下启动项。后来想把HDD分区改成GPT的,顺便把原C盘格了合并到D盘去。可改完之后,重启后发现不能识别了。无奈又腾一遍,把机械硬盘,放入原来位置调了下分区表为MBR,又换回去才得以识别(调整托架接口开关也不行,目测托架只识别MBR分区方式)。
使用DiskGenus删除机械硬盘中的C盘,并变为和D盘一样的逻辑分区。然后D盘可直接扩展大小纳入C盘。这里还推荐一个常用的分区工具——分区助手,这个甚至可以实现无损数据合并磁盘(时间长,后台应该是一点点挪文件)。总之配合DG可基本完成所有硬盘操作。
值此,算是弄完了。但是,觉得C盘东西太多了,占了五十多G。最终还是以此为契机,把SSD重格为GPT磁盘,重装了Win10。
后来发现机械硬盘经常识别不稳定(偶尔识别不出),上网查阅后发现是自带希捷硬盘要求电流较高所致,附链接。所以,安装双硬盘还是要事先查好自己型号的案例,再定方案不迟。本机还是这样凑合使用,把常用软件放到固态硬盘上去,机械硬盘当数据盘使用,但偶尔会有卡顿现象。
]]>