blender_chemicals

blender_chemicals (https://nino.coding.net/p/blender_chemicals/d/blender_chemicals/git) 是一个基于blender-chemicals1的插件,可以用来将SMILE格式的分子转换成3D的结构。但是由于Blender最新版的python的api和以往相差较多,因此blender-chemicals已经无法使用,会产生很多的错误。因此,我将blender-chemicals进行修改,并转换成适应最新Blender的一个插件,其界面如下图所示。

Screenshot of addon

安装支持软件

这个Blender插件对于smile格式的转换是基于Openbabel的,因此需要安装openbabel,但是这个软件的安装,非常容易出错,因此,推荐严格按照如下的方法进行安装。

  • 安装Anaconda2
  • 使用conda命令安装openbabel
conda install -c openbabel openbabel

安装完成之后,在python环境中执行如下的命令,看看是否出错,出错代表没有安装成功

import pybel
import openbabel

安装blender_chemicals

  • 下载blender_chemicals,并压缩成一个zip文件。
  • 在Blender中将这个zip文件安装一个插件的方式进行安装[Edit]-[Preferences]-[Addon] as below.

Install Addon

  • N 键展示插件的设置和输入面板。

支持

可以使用 https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi 来创建或者转换SMILE格式

Git的Tag功能有助于使用一些特殊的标记将某些特定版本的提交标记出来,方便后边的使用。

Tags常见的操作

  • 列出本地标签
    git tag --list
    
  • 创建标签
    git tag -a v1.0.1 -m "创建v1.0.1"
    
  • 推送本地标记到远程
    git push origin v1.0.1
    
  • 删除本地标记
    git tag -d v1.0.1
    
  • 删除远程标记
    git push origin  :refs/tags/v1.0.1
    

创建发行版

此处以码云为例,如果创建了一个标签之后,则单击操作栏的创建发行版超链接,就可以创建一个发行版。

发行版示例图片

jekyll配合github的版本控制功能,使之成为非常流行的写作工具。通过Visual Studio Code结合Python可以使写作更加流畅。

  • 使用Python编写jekyll日志的生成工具,一个命令就可以创建一个Post文件,使我们可以专注写作的过程,可以参考如何使用python创建jekyll日志模板

  • 写作的过程难免会涉及到图片,由于github的服务器在国外,又多有限制,图片的传输比较慢。解决github上传图片慢的问题,可以使用国内比如腾讯云,阿里云的对象存储来存储图片。由于存储过程涉及复制、粘贴还有图片的压缩操作,那么结合这些对象存储供应商的sdk,编写python工具,并结合注册表,制作一个右键菜单,使得可以通过右键菜单,完成图片的压缩,上传,返回markdown代码的操作。

周末实在无聊,就去研究所加班去了,窗外的景色非常的美好!

  • 这个照片是周日研究所外边的景色

窗外的景色

  • 这个照片是周六窗台的阳光

窗台的花

参考语法

配置文件列表

server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com;
    index index.php index.html index.htm;

    server_name example.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}
server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com;
    index index.php index.html index.htm;

    server_name example.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        root           C:/wnmp/nginx-1.5.8/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
server {
    listen       80;
    server_name  example.com;

    charset utf8;

    location / {
        proxy_pass       http://127.0.0.1:4000;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   }
}
server {
    listen 80;
    resolver 8.8.8.8 ipv6=off;
    server_name ~^(.+)\.acs\.xingtingyang\.cn$;
    location /{
        if ($limit_bots = 1) {
            return 403;
        }
        proxy_set_header Accept-Encoding "";
        proxy_set_header Host $1.acs.org;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Referer $1.acs.org;

        proxy_pass http://$1.acs.org;
        proxy_redirect ~^(.+?).acs.org(.+) $1.acs.xingtingyang.cn$2;

        sub_filter acs.org acs.xingtingyang.cn;
        sub_filter_types *;
        sub_filter_once off;
        proxy_cookie_domain .pubs.acs.org .pubs.acs.xingtingyang.cn;                
    }
    access_log logs/acs_access.log;
    error_log logs/acs_error.log;
}