1.visual c++ å32ä½ç³»ç»å64ä½ç³»ç»ä¹ï¼
2.什么是K8S?
3.steam++叫什么
4.热血屠龙源码如何下载
5.Angular 练级之旅(6)-CDK的使用
6.eval(function(p,a,c,k,e,r) 解密
visual c++ å32ä½ç³»ç»å64ä½ç³»ç»ä¹ï¼
Microsoft Visual C++ï¼ï¼ç®ç§°Visual C++ãMSVCãVC++æVCï¼æ¯Microsoftå ¬å¸æ¨åºçå¼åWinç¯å¢ç¨åºï¼é¢å对象çå¯è§åéæç¼ç¨ç³»ç»ãå®ä¸ä½å ·æç¨åºæ¡æ¶èªå¨çæãçµæ´»æ¹ä¾¿ç类管çã代ç ç¼ååçé¢è®¾è®¡éæ交äºæä½ãå¯å¼åå¤ç§ç¨åºçä¼ç¹ï¼èä¸éè¿ç®åç设置就å¯ä½¿å ¶çæçç¨åºæ¡æ¶æ¯ææ°æ®åºæ¥å£ãOLE2ï¼WinSockç½ç»ã3Dæ§å¶çé¢ã
Microsoft Visual C++ 1.0
éæäºMFC2.0ï¼æ¯Visual C++第ä¸ä»£çæ¬ï¼å¹´æ¨åºï¼å¯åæ¶æ¯æ´ä½å¤çå¨ä¸ä½å¤çå¨çï¼æ¯Microsoft C/C++ 7.0çæ´æ°çæ¬ã
Microsoft Visual C++ 1.5
éæäºMFC2.5ï¼å¢å äºâç®æ æ件é¾æ¥åµå ¥ (OLE)2.0 åæ¯æMFCçå¼æ¾å¼æ°æ®åºé¾æ¥ï¼ODBCï¼ãè¿ä¸ªçæ¬åªæä½çï¼ä¹æ¯ç¬¬ä¸ä¸ªä»¥CD-ROM为软件载ä½ççæ¬ãè¿ä¸ªçæ¬ä¹æ²¡ææè°âæ åçâãå®æ¯æåä¸ä¸ªæ¯æä½è½¯ä»¶ç¼ç¨ç软件ï¼ä¹æ¯ç¬¬ä¸ä¸ªæ¯æåºäºxæºå¨çä½ç¼ç¨è½¯ä»¶ã
Microsoft Visual C++ 2.0
éæäºMFC 3.0ï¼ç¬¬ä¸ä¸ªåªåè¡ä½ççæ¬ãè¿ä¸ªçæ¬æååè¡äºï¼å ä¹æäºä¸ä¸ªâ丢失ççæ¬âãè¿æ¯å 为é£ä¸ªæ¶åWindows ï¼å¼å代ç 为"Chicago"ï¼è¿æ²¡æåè¡ï¼èWindows NTååªå æå¾å°çå¸åºä»½é¢ã该çæ¬ç¨æ·å¯ä»¥éè¿å¾®è½¯å ¬å¸ç订é æå¡ï¼Microsoft Subscription Serviceï¼å级è³2.1å2.2çæ¬ãå¾®è½¯å ¬å¸å¨è¿ä¸ªçæ¬ä¸éæ并å级äºVisual C++1.5ï¼ä½ä¸º2.0çæ¬ï¼Visual C++ 1.5å级åçæ¬å·ï¼1.ï¼ä»¥å2.1çæ¬ï¼Visual C++1.5å级åçæ¬å·ï¼1.ï¼çä¸é¨åãVisual C++ 2.xé带äºä½åä½çæ¬çCDKï¼åæ¶æ¯æWinsçå¼åãVisual C++ 2.2åå ¶åç»çæ¬ä¸åå级Visual C++ 1.5ï¼å°½ç®¡å®ä¸ç´è¢«éæè³Visual C++ 4.xï¼ã尽管åºççæ¯Windows æ©ï¼è¿ä¸ªçæ¬çåè¡æ¥æè¿æ¯é常æ¥è¿Windows ï¼å¯æ¯å½Windows åè¡æ¶ï¼ Visual C++ 4.0ä¹å·²ç»åè¡äºãå æ¤å¾å¤ç¨åºå¼åè ç´æ¥ä»1.xè¿æ¸¡å°4.0ï¼æ2.xè·³è¿å»äºã
Microsoft Visual C++ 4.0
éæäºMFC4.0ï¼è¿ä¸ªçæ¬æ¯ä¸é¨ä¸ºWindows 以åWindows NT设计çãç¨æ·å¯ä»¥éè¿å¾®è½¯å ¬å¸ç订é æå¡ï¼MicrosoftSubscription Serviceï¼å级è³4.1å4.2çæ¬ï¼æ¤çæ¬ä¸åæ¯æWinså¼åï¼ã
Microsoft Visual C++ 5.0
éæäºMFC 4.ï¼æ¯4.2ç以æ¥æ¯è¾å¤§çä¸æ¬¡å级ã
Microsoft Visual C++ 6.0
éæäºMFC6.0ï¼äºåè¡ãåè¡è³ä»ä¸ç´è¢«å¹¿æ³å°ç¨äºå¤§å¤§å°å°ç项ç®å¼åãä½æ¯ï¼è¿ä¸ªçæ¬å¨WindowsXPä¸è¿è¡ä¼åºç°é®é¢ï¼å°¤å ¶æ¯å¨è°è¯æ¨¡å¼çæ åµä¸ï¼ä¾å¦ï¼éæåéçå¼å¹¶ä¸ä¼æ¾ç¤ºï¼ã è¿ä¸ªè°è¯é®é¢å¯ä»¥éè¿æä¸ä¸ªå«âVisual C++ 6.0Processor Packâçè¡¥ä¸æ¥è§£å³ãå¥æªçæ¯ï¼è¿ä¸ªç½é¡µå¼ºè°ç¨æ·ä¹å¿ é¡»è¿è¡Windows ãWindows NT4.0ãæWindows ãè¿ä¸ªC++çæ¬å¯¹win7çå ¼å®¹æ§é常差ï¼æ大大å°å°çå ¼å®¹æ§é®é¢ã微软ä¸æ¨èå®è£ å¨windows7ä¸ã
MicrosoftVisual C++ .NET
ä¹å³Visual C++ 7.0ï¼äºå¹´åè¡ï¼éæäºMFC7.0ï¼æ¯æé¾æ¥æ¶ä»£ç çæåè°è¯æ§è¡æ¶æ£æ¥ãè¿ä¸ªçæ¬è¿éæäºManaged Extension for C++ï¼ä»¥åä¸ä¸ªå ¨æ°çç¨æ·çé¢ï¼ä¸Visual BasicåVisual C#å ±ç¨ï¼ãä»è¿ä¸ªçæ¬å¼å§ï¼ææçAPIå½¢å¼ä¸é½è¢«å®ä¹æä½æ°æ å ³çï¼å¹¶ä¸å¼å§æ¯æåçä½è½¯ä»¶çå¼åã
MicrosoftVisual C++ .NET
ä¹å³ Visual C++ 7.1ï¼éæäºMFC 7.1ï¼äºå¹´åè¡ï¼æ¯å¯¹Visual C++ .NET çä¸æ¬¡é大å级ã
MicrosofteMbedded Visual C++
ç¨äºWindows CEæä½ç³»ç»ãVisual C++ä½ä¸ºä¸ä¸ªç¬ç«çå¼åç¯å¢è¢«Microsoft Visual Studio ææ¿ä»£ã
MicrosoftVisual C++
ä¹å³Visual C++ 8.0ï¼éæäºMFC 8.0ï¼äºå¹´æåå¸ãè¿ä¸ªçæ¬å¼è¿äºå¯¹C++/CLIè¯è¨åOpenMPçæ¯æã
MicrosoftVisual C++
ä¹å³Visual C++ 9.0ï¼äºå¹´æåå¸ãè¿ä¸ªçæ¬æ¯æ.NET 3.5ãä»è¿ä¸ªçæ¬å¼å§ï¼å¾®è½¯æ¾å¼äºå¯¹ç¼åWin9xæ¶æç³»ç»ä¸ç软件çæ¯æãæ¤çæ¬æ´å 稳å®ãVC++æ¯ç®åæ稳å®çæ¬ã
MicrosoftVisual C++
Visual C++ .0ï¼å¹´åå¸ï¼æ°æ·»å äºå¯¹C++æ åå¼å ¥çå 个æ°ç¹æ§çæ¯æã
MicrosoftVisual C++
Visual C++ .0ï¼ å¹´5ææ¥åå¸ï¼æ¯æ.net4.5 betaï¼å¹¶å®ç°go liveãåªè½å®è£ äºwin7æè æ´é«çwindowsæä½ç³»ç»ï¼å¦ææ°åå¸çwindows8çï¼ãå¯ä»¥å¼åwindows8ä¸ç¨çModern UIé£æ ¼çåºç¨ç¨åºãç¸æ¯åæ·»å äºå°é对C++æ åå¼å ¥çæ°ç¹æ§çæ¯æã
MicrosoftVisual C++
Visual C++ .0ï¼ å¹´8æåå¸ï¼å¯ä»¥çä½æ¯Visual C++ .0çå级çãè¿ä¸ªçæ¬ç¸å¯¹äºæ·»å äºå¤§é对C++æ åçæ¯æãå¯ä»¥å¼åwindows8.1ä¸ç¨çModern UIé£æ ¼çåºç¨ç¨åºï¼ä½å´ä¸æ¯æwindows8ï¼æ¯æwindows8.1ï¼ãå¼åç¯å¢äº¦å ç½®äºæºä»£ç æè²çåè½ã
ææ°ç¨³å®çæ¬ï¼äº¦éç¨äºï¼
Visual C++ 被æ´åå¨Visual Studioä¹ä¸ï¼ä½ä»å¯åç¬å®è£ 使ç¨ã
åèèµæï¼ç¾åº¦ç¾ç§
什么是K8S?
k8s是什么?Kubernetes 是一个可移植的,可扩展的开源容器编排平台,用于管理容器化的工作负载和服务,方便了声明式配置和自动化。它拥有一个庞大且快速增长的生态系统。Kubernetes 的源码全局查找服务,支持和工具广泛可用。
为什么现在流行使用容器?
早期: 在物理服务器上面部署应用程序存在资源分配问题,因为其不能在物理服务器中的应用程序定义资源边界,导致应用程序资源利用不足而无法扩展.
后来: 为了解决该问题,引入了虚拟化技术, 虚拟化技术是指允许你在单个物理服务器的 CPU 上运行多个虚拟机,可以让多个应用程序在虚拟机之间进行隔离,具有一定的安全性, 每一个虚拟机就是一台完整的计算机, 在虚拟化硬件之上运行所有组件.
现在: 多数在物理服务器上面部署应用程序都是采kubectl用容器的方式,容器类似于虚拟机,它们都具有自己的文件系统、CPU、内存、进程空间等, 且由于它们与基础架构分离,因此可以跨云和 OS 发行版本进行移植。基于此特点被企业大范围使用.
为什么需要使用k8s容器?
若出现这样一个环境: 在生产环境中如果一个容器发生故障,则我们需要手动去启动另外一个容器,这样的操作是对我们的管理员来说是不太方便的, 若一个容器出现故障,另一个容器可以自动启动容器接管故障的容器,这样是最好的.
k8s就可以实现该效果,Kubernetes 提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。
k8s功能: 服务发现和负载均衡, 存储编排, 自动部署和回滚, 自动完成装箱计算, 自我修复, 密钥与配置管理
名词解释
secret
Secret有三种类型:
Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的目录中;/run/secrets/kubernetes.io/serviceaccountOpaque:base编码格式的Secret,用来存储密码、密钥等;kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。k8s的组成
k8s是由组件,API,对象等组成.
包含所有相互关联组件的 Kubernetes 集群图如下:
组件
控制平面组件kube-apiserver: 为k8s的api服务器,公开了所有Kubernetes API, 其他所有组件都必须通过它提供的API来操作资源数据.保证集群状态访问的安全隔离集群状态访问的方式和后端存储实现的方式:API Server是状态访问的方式,不会因为后端存储技术etcd的改变而改变。etcd: 为k8s的键值数据库,保存了k8s所有集群数据的后台数据库。kube-scheduler: 收集和分析当前Kubernetes集群中所有Node节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。 kube-controller-manager: 在主节点上运行 控制器 的组件。cloud-controller-manager: 云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件Node 组件kubelet: 一个在集群中每个节点(node)上运行的代理。 它保证容器(containers)都 运行在 Pod 中。kube-proxy: kube-proxy是集群中每个节点上运行的网络代理,维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。容器运行时: 负责运行容器的软件。插件(Addons)DNS: 集群 DNS 是一个 DNS 服务器,和环境中的pcduino 源码其他 DNS 服务器一起工作,它为 Kubernetes 服务提供 DNS 记录。Web 界面(仪表盘): Dashboard 是Kubernetes 集群的通用的、基于 Web 的用户界面。容器资源监控: 容器资源监控 将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面。集群层面日志: 集群层面日志 机制负责将容器的日志数据 保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。 APIKubernetes 控制面 的核心是 API 服务器。 API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。
对象
Kubernetes对象是Kubernetes系统中的持久实体。Kubernetes使用这些实体来表示集群的状态.
具体来说,他们可以描述:
容器化应用正在运行(以及在哪些节点上)这些应用可用的资源关于这些应用如何运行的策略,如重新策略,升级和容错Kubernetes 架构
Kubernetes 架构由节点,控制面到节点通信, 控制器, 云控制器管理器组成.
master 流程图
Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。Kubernetes Client将请求发送给API server。API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。REST Storage API对的请求作相应的处理。将处理的结果存入高可用键值存储系统Etcd中。在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。 节点节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pods 所需的服务, 这些 Pods 由 控制面 负责管理.
节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。
节点状态
可以使用 kubectl 来查看节点状态和其他细节信息:
kubectl describe node <�节点名称>
一个节点包含以下信息:
地址HostName:由节点的giza 源码内核设置。可以通过 kubelet 的 —hostname-override 参数覆盖。ExternalIP:通常是节点的可外部路由(从集群外可访问)的 IP 地址。InternalIP:通常是节点的仅可在集群内部路由的 IP 地址。状况(conditions 字段描述了所有 Running 节点的状态)Ready 如节点是健康的并已经准备好接收 Pod 则为 True;False 表示节点不健康而且不能接收 Pod;Unknown 表示节点控制器在最近 node-monitor-grace-period 期间(默认 秒)没有收到节点的消息DiskPressure为True则表示节点的空闲空间不足以用于添加新 Pod, 否则为 FalseMemoryPressure为True则表示节点存在内存压力,即节点内存可用量低,否则为 FalsePIDPressure为True则表示节点存在进程压力,即节点上进程过多;否则为 FalseNetworkUnavailable为True则表示节点网络配置不正确;否则为 False容量与可分配描述节点上的可用资源:CPU、内存和可以调度到节点上的 Pod 的个数上限。信息关于节点的一般性信息,例如内核版本、Kubernetes 版本(kubelet 和 kube-proxy 版本)、 Docker 版本(如果使用了)和操作系统名称。这些信息由 kubelet 从节点上搜集而来。控制面到节点通信
节点到控制面apiserver在安全的 HTTPS 端口()上监听远程连接请求以客户端证书的形式将客户端凭据提供给 kubelet控制面到节点API 服务器到 kubelet连接用于获取 Pod 日志挂接(通过 kubectl)到运行中的 Pod提供 kubelet 的端口转发功能。(注: 在连接状态下, 默认apiserver 不检查 kubelet 的服务证书。容易受到中间人攻击,不安全.)apiserver 到节点、Pod 和服务SSH 隧道(目前已经废弃)产生原因: 若无服务证书, 又要求避免在非受信网络或公共网络上进行连接,则可以在apiserver 和 kubelet 之间使用ssh隧道.Kubernetes 支持使用 SSH 隧道来保护从控制面到节点的通信路径。Konnectivity 服务为ssh隧道的替代品, Konnectivity 服务提供 TCP 层的代理,以便支持从控制面到集群的通信。控制器
在 Kubernetes 中,控制器通过监控集群 的公共状态,并致力于将当前状态转变为期望的状态。
举个例子: 当前室内温度为度, 我们通过调节遥控器,使其温度上升至度, 这度到度的变化即为让其从当前状态接近期望状态。
控制器模式分为直接控制和通过API服务器来控制.
云控制器管理器
云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件。 云控制器管理器允许您链接聚合到云提供商的应用编程接口中, 并分离出相互作用的组件与您的集群交互的组件。
云控制器管理器中的控制器包括:
节点控制器节点控制器负责在云基础设施中创建了新服务器时为之 创建 节点(Node)对象。 节点控制器从云提供商获取当前租户中主机的信息。执行功能:针对控制器通过云平台驱动的 API 所发现的每个服务器初始化一个 Node 对象利用特定云平台的信息为 Node 对象添加注解和标签获取节点的网络地址和主机名检查节点的健康状况。路由控制器Route 控制器负责适当地配置云平台中的路由,以便 Kubernetes 集群中不同节点上的 容器之间可以相互通信。服务控制器服务(Service)与受控的负载均衡器、 IP 地址、littleproxy 源码网络包过滤、目标健康检查等云基础设施组件集成。 服务控制器与云驱动的 API 交互,以配置负载均衡器和其他基础设施组件。Kubernetes 安全性
云原生安全
云原生安全4个C: 云(Cloud)、集群(Cluster)、容器(Container)和代码(Code)
云原生安全模型的每一层都是基于下一个最外层,代码层受益于强大的基础安全层(云、集群、容器)。我们无法通过在代码层解决安全问题来为基础层中糟糕的安全标准提供保护。
基础设施安全
Kubetnetes 基础架构关注领域
建议
通过网络访问 API 服务(控制平面)
所有对 Kubernetes 控制平面的访问不允许在 Internet 上公开,同时应由网络访问控制列表控制,该列表包含管理集群所需的 IP 地址集。
通过网络访问 Node(节点)
节点应配置为 仅能 从控制平面上通过指定端口来接受(通过网络访问控制列表)连接,以及接受 NodePort 和 LoadBalancer 类型的 Kubernetes 服务连接。如果可能的话,这些节点不应完全暴露在公共互联网上。
Kubernetes 云访问提供商的 API
每个云提供商都需要向 Kubernetes 控制平面和节点授予不同的权限集。为集群提供云提供商访问权限时,最好遵循对需要管理的资源的最小特权原则。Kops 文档提供有关 IAM 策略和角色的信息。
访问 etcd
对 etcd(Kubernetes 的数据存储)的访问应仅限于控制平面。根据配置情况,你应该尝试通过 TLS 来使用 etcd。更多信息可以在 etcd 文档中找到。
etcd 加密
在所有可能的情况下,最好对所有驱动器进行静态数据加密,但是由于 etcd 拥有整个集群的状态(包括机密信息),因此其磁盘更应该进行静态数据加密。
集群组件安全
运行的应用程序的安全性关注领域访问控制授权(访问 Kubernetes API)认证方式应用程序 Secret 管理 (并在 etcd 中对其进行静态数据加密)Pod 安全策略服务质量(和集群资源管理)网络策略Kubernetes Ingress 的 TLS 支持容器安全
容器安全性关注领域容器搭建配置(配置不当,危险挂载, 特权用户)容器服务自身缺陷Linux内核漏洞镜像签名和执行代码安全
代码安全关注领域仅通过 TLS 访问(流量加密)限制通信端口范围第三方依赖性安全静态代码分析动态探测攻击(黑盒)Kubernetes架构常见问题
Kubernetes ATTACK 矩阵
信息泄露
云账号AK泄露
API凭证(即阿里云AccessKey)是用户访问内部资源最重要的身份凭证。用户调用API时的通信加密和身份认证会使用API凭证.
API凭证是云上用户调用云服务API、访问云上资源的唯一身份凭证。
API凭证相当于登录密码,everything源码用于程序方式调用云服务API.
k8s configfile泄露
kubeconfig文件所在的位置:
$HOME/.kube/config
Kubeconfig文件包含有关Kubernetes集群的详细信息,包括它们的位置和凭据。
云厂商会给用户提供该文件,以便于用户可以通过kubectl对集群进行管理. 如果攻击者能够访问到此文件(如办公网员工机器入侵、泄露到Github的代码等),就可以直接通过API Server接管K8s集群,带来风险隐患。
Master节点SSH登录泄露
常见的容器集群管理方式是通过登录Master节点或运维跳板机,然后再通过kubectl命令工具来控制k8s。
云服务器提供了通过ssh登陆的形式进行登陆master节点.
若Master节点SSH连接地址泄露,攻击者可对ssh登陆进行爆破,从而登陆上ssh,控制集群.
容器组件未鉴权服务
Kubernetes架构下常见的开放服务指纹如下:
kube-apiserver: , kubectl proxy: , kubelet: , , dashboard: docker api: etcd: , kube-controller-manager: kube-proxy: , kube-scheduler: weave: , , kubeflow-dashboard:注:前六个重点关注: 一旦被控制可以直接获取相应容器、相应节点、集群权限的服务
了解各个组件被攻击时所造成的影响
组件分工图:
假如用户想在集群里面新建一个容器集合单元, 流程如下:
用户与 kubectl进行交互,提出需求(例: kubectl create -f pod.yaml)kubectl 会读取 ~/.kube/config 配置,并与 apiserver 进行交互,协议:/service-accountnjxz8On2TpsdQCgfCQD7cCfEXQiXuJxKjIS7ZPRT9+zkmP6YEBWLjEqZ4asu3toXAO/B3Gc1k9eFq+2wc9aHduzr9ps8QJivXLx0PsljOtWugOZZlwqC+ZwA0AyTwHQs6x0eKOCxKzkCqRDDMDkXXmssV2pNyTbU6HwqoBeE0usGhgGh9FBnWhRLySC+UD5xKy+dKiIDtgCeNsXdEE0/S8AGClx0OlmAlmC6FTVRwOIpEgHBC2gtqyFNlH4iR8P5MQF6PTycERpsa+2uFmhFW6mAPJIrER0HzZZoTbqWmKwWuwLyaCkPOpNhCa5IOWxzYangXUAiraeoc2VPqL6AbPLMZIEe5ae6Vm4kwCFiJ4GlQ/8dT4Qds2VYmdUL8Gn5IogQLiJJ4ZjYAVyWIGUQhmhQBdLnhAXaz/mscohoSoZcoSDcgeU+TS1BF/POBjYBeNxx/vOsqL1aBEdtu5afIQhq5nw7qov4RlDtKKNuD2pHMzPFjgxzm1hxyikTMKvOZtABAoVbN7b4tfryN7g7QqmbCH6+EuDOCbTBfqevEnGqOrERFN8xoy3ppaQkJ9SKMzWd1CqDltzSqcjKvdVywRHCn4KUmM8IRwUf5RGzBqmlZWKS2UKXavygY5M8HOpy7Q2faQ1sasVA4iGfYsEXMkSYtggu7OZnpAwcub5C+qfPEPOu/eDaOC6T9ensvfwmOQTu8qVgy5+1qPLIdFjj+kKkZOdS9yeE6+HzMdrfCb/ec7B4EYGvQWsT5OxBJYWdSo7OMctlMRolp3DqLa/P0iABQeucxErROtnnkv7qtaqNZwKzad+z2aHAvEDJ8Z+d2z0GPG6icSce3Dwb1Icf4UC7foXYFwA5Qw+OeIkuSYHtZoMqSduAQAwPkS5ePp5+zzyxtk7L9XF5hRbJaNymoP7wMQOzFvvNTR7daesG7EuhzbKNWW0GFECKk++IJ9uwxwMQHfYpMcYzsszWrTLw9UScTBfqViHhxiUrmarsrt5h/BD5RWHsTu9fdr0FW7GrPGxqyh2x1TF7/t3zbFGmp3+FMOa0pH7Or2LQVOuqErKRGWLeP8tn4YPWCq0VRP2D+MpVXIoChKil3pHvXAjxTWLCeXdVvWs7tcvjip6YXWebRIlu9WfNCoPaRv4ULuy+eLe+7kelk0ijzo7G3R0M/BNnaVo0lbOjy5MzdMp0T9gbtVCkgUMaLC+ye6PZLQo7RKiTf8KrceEQQ6EKYIO3XcULPJNyj/qr9jvsTBtFtZfNqYY+i+hdwITBWSr/lXV1pLcC8rgjp0LCsBJ0z6tSuyiTRiQcbDAs3YH5TjQdNO6ZVJIT7YMhVS/lwY9m0dPRdY4h2ZncDk6UPE8qsKrUEql9YFdSv2trbsXRfuyfdMtexDBdZpTAL4G0kdNacW7YJRcn+B0X9/onqzvGqgAAAABJRU5ErkJggg==" />
分子结构文件格式转换工具集锦
在化学文件格式转换领域,拥有众多强大工具帮助科学家、研究人员和开发者处理不同格式的分子结构数据。以下介绍的工具涵盖了广泛的功能,从开源免费到商业应用,满足不同需求。
OpenBabel,一个开源免费的化学专家系统,支持Windows、Unix和Mac OS,广泛用于转换化学文件格式。
Corina,由Molecular Networks发行,生成小型和中型类药分子的3D结构。
Indigo,通用有机化学工具箱,包含终端用户工具和文档化API,开源免费,提供商业应用。
Indigo-depict,基于Indigo的命令行应用,用于渲染分子和化学反应。
Indigo-cano,基于Indigo的命令行应用,生成canonical SMILES。
Indigo-deco,基于Indigo的命令行应用,用于R-Groupdeconvolution。
OMEGA,使用距离边界方法将1D或2D结构转换为3D结构,由OpenEye开发,旨在重现化合物的生物活性构象。
TorsionAnalyzer,生成和分析小分子的3D构象工具,基于专家对SMARTS类型和形成规则的经验,导入到TorsionAnalyzer的分子可旋转键用交通信号灯颜色标记规则、边界以及不寻常的键角。
LigPrep,2D结构转换为3D结构工具,包括互变异构、立体化学以及离子化变体,以及能量最小化和柔性过滤,生成配体库,用于进一步计算分析。
CACTVS,化学信息处理的通用脚本工具包,应用于PubChem,学术免费。
ChemDiff,基于indigo的工具,用于查找包含多个结构的两个文件中的重复记录和可视化比较,支持多种文件格式。
OSRA,能够识别和转换化学结构图形,支持多种格式,开源、免费。
MayaChemTools,收集Perl脚本、模块和类,支持日常的计算化学需求,开源、免费。
VLife Engine,VLifeMDS的引擎模块,包括构建、视图、编辑、修改、优化小分子和大分子的分子建模能力。
SMART,自动识别和标记可旋转键并分配AMBER原子类型,用于准备MOL2格式的配体结构。
ProCESS,用于FITTED准备蛋白质文件,分配残基名称、原子类型和蛋白质电荷。
SPORES,自动准备蛋白质和配体的结构识别工具,生成连接、杂交、原子和键类型。
PREPARE,蛋白质准备和优化的工具。
DG-AMMOS,生成小分子三维构象用于计算机辅助筛选,免费。
Key3D,将2D化合物结构转换成3D结构的分子建模工具,附加上原子电荷等信息。
JOElib,化学信息学库,用于文件格式转换,Java编写,适用于多种操作系统。
CDK (ChemistryDevelopment Kit),生物以及化学信息学和计算化学使用的开源库,Java编写。
MolEngine,基于Microsoft .NET的化学信息学工具包,兼容多种平台。
RDKit,收集化学信息学和机器学习软件,用C++ 和 Python编写。
Mol2Mol,分子文件操作及转换程序。
Fconv,分子文件操作及转换程序。
smid,用于将一个或多个SMILES转换为3D的程序。
Scaffold Hunter,基于java的软件工具,用于生成和导航不同数据注释的树层次结构来探索化学空间。
ScaffoldTreeGenerator,基于java的软件工具,独立生成树形分层数据库。
Strip-it,从有机类药分子中提取骨架的程序。
Fragmentizer,分解PDBs中小分子化合物的组成片段的自由和开放源码python脚本。
Epik,列举生理条件下的配体质子化状态和互变异构体的工具。
iBabel,Open Babel的图形界面。
PerlMol,用perl展示分子、原子和键类型的模块。
The SDF Toolkitin Perl 5,提供读取、解析、过滤和添加/删除属性的函数的SDF工具包。
暴力拒绝白嫖,著名开源项目作者删库跑路,数千个应用程序无限输出乱码
「我删我自己的开源项目代码,需要经过别人允许吗?」
开源库「faker.js」和「colors.js」的作者 Marak Squires 的突然举动,让使用这两个项目的数千位开发者陷入了混乱。在几天前,开发者们惊讶地发现自己的应用程序输出乱码数据,而造成这一状况的正是「faker.js」和「colors.js」的开发者本人。
Marak Squires 主动删除了这两个开源项目的代码仓库,这使得正在使用它们的开发者们直接面临崩溃。这两个项目在 npm 上每周下载量分别接近 万和 万,使用它们的工具包括 AWS CDK 等,影响范围极大。
「faker.js」是一个用于生成伪数据的 Node.js 库,支持多语种信息和丰富的 API,可以帮助开发者在构建和测试应用时生成真实数据量不足的伪数据。这个项目在服务器端和浏览器端的 JavaScript 中都有应用。如今,Squires 将所有 commit 信息修改为「endgame」,在 README 中留下疑问「What really happened with Aaron Swartz?」,指向围绕 Swartz 死亡疑云的事件。
在 Squires 的恶意操作下,「colors.js」被添加了新的模块,并发布到 GitHub 和 npm,随后又发布了「faker.js」的 6.6.6 版本。这两个动作导致应用程序无限输出奇怪的字母和符号,从「LIBERTY」开始,后面跟着一系列非 ASCII 字符。目前,「colors.js」已更新为可用版本,但「faker.js」项目尚未恢复,开发者们只能降级到之前的版本来解决问题。
Squires 在 GitHub 上发布了更新来解决「zalgo 问题」,并提到正在努力解决「colors」版本中的 zalgo 错误。在将更新推送到「faker.js」两天后,他发布推文表示自己的 GitHub 账户被封,随后在 1 月 7 日发布了「colors.js」的「liberty」版本,但账户似乎被解封过。目前不清楚账户是否再次被封。
Squires 的行动引起了对开源开发者道德和财务困境的关注。开发者们对这一事件反应不一,有人认为是绑架行为,建议分散托管免费软件源代码;有人将所有项目转移到 GitLab 私有实例上,强调不要信任互联网服务提供商。也有人认为 faker.js 团队的反应有些夸张,认为生成伪数据的包不会为企业赚大钱。还有人认为 Squires 的做法冲动且不够理性,与之前「卖掉房子购买 NFT」的传闻有关,强调需要控制情绪。有人同情开源软件开发者,希望有基金会为他们提供资金支持,也有人认为 Marak 的行为不可取,不是正面例子。
面对这一事件,开发者们普遍感到困惑和担忧,对开源软件的未来和开发者们的权益产生了思考。开源社区需要进一步探讨如何保护开发者权益,防止类似事件再次发生。