HackToday Walk Blog


  • Home

  • Tags

  • Archives

  • Search

3个开源会议将在中国首次举办 (LinuxCon, ContainerCon, and CloudOpen)

Posted on 2017-01-19

Linux 基金会宣布将在中国首次举办旗下的 flagship LinuxCon, ContainerCon and CloudOpen 三大会议,
目前会议地点是北京国家会议中心 时间是 2017年6月19-20日

这也是继 MesosCon Asia and Cloud Foundry Summit Asia 在中国举办后的又一推动,
这些活动的举办也寓意中国在开源领域正在发挥更大的作用和话语权,因为这些潜在的影响力才能获取更多著名会议的举办机会。

来源:

http://events.linuxfoundation.org/events/linuxcon-containercon-cloudopen-china

桌面环境安装 Failed to give slave programs access to the display 问题

Posted on 2017-01-11

在测试环境安装桌面环境发现 gdm 有错误如下:

1
Failed to give slave programs access to the display

尝试安装 gnome 3 桌面环境 gdm 启动不再出现类似的错误。

1
yum group install "GNOME Desktop"

但是 gnome desktop 和 gdm 不是一个东西,gdm 只是一个 diplay manager

gnome desktop 使用也不完全依赖 gdm

解决 TypeError('{!r} is not a Python function'.format 问题

Posted on 2017-01-11

今天因为在一个测试环境安装更新 gnome桌面发现一个问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    import requests
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 52, in
from .packages.urllib3.contrib import pyopenssl
File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 49, in
from cryptography.hazmat.backends.openssl import backend as openssl_backend
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/__init__.py", line 7, in
from cryptography.hazmat.backends.openssl.backend import backend
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 37, in
from cryptography.hazmat.backends.openssl.x509 import _Certificate
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/x509.py", line 24, in
class _Certificate(object):
File "/usr/lib64/python2.7/site-packages/cryptography/utils.py", line 23, in register_decorator
verify_interface(iface, klass)
File "/usr/lib64/python2.7/site-packages/cryptography/utils.py", line 43, in verify_interface
actual = inspect.getargspec(getattr(klass, method))
File "/usr/lib64/python2.7/inspect.py", line 815, in getargspec
raise TypeError('{!r} is not a Python function'.format(func))
TypeError: is not a Python function

这个一般从网上找有各种各样的解答,直接照搬是没有帮助的,初步当时怀疑是python 的一些安装包版本冲突导致了,
仔细看上面的是从 requests 引发的,那么我们先通过 pip 查看对应的 requests 版本,发现有两个版本,显然是前面升级中误操作了什么导致的。

解决方法,卸载全部的requests 包,然后重新使用 pip 安装

Clair - 容器安全监测工具的安装

Posted on 2016-12-29

Clair 是 Coreos 公司推出的一款安全的镜像静态分析扫描工具,类似的功能在 Docker 官方的商业 dockerhub 上也有不同的实现。

Clair 是一款开源的软件,具体可以参考 https://github.com/coreos/clair

我们简单的来介绍一下如何使用 docker 容器来快速的体验相应的功能,具体实践步骤如下:

  1. 安装 PostgreSQL 9.4+ 数据库, 这里我们使用 sameersbn/postgresql:9.5-3 镜像来安装

这里为了方便网络的配置,使用 host net 方案,

1
docker run  --net host --name postgresql -itd --restart always   --env 'PG_PASSWORD=yourpassword'   sameersbn/postgresql:9.5-3
  1. 创建 clair 的配置
1
curl -L https://raw.githubusercontent.com/coreos/clair/v1.2.6/config.example.yaml -o $HOME/clair_config/config.yaml

修改其中的 postgresql 配置, 类似如下:

1
source: postgresql://postgres:yourpassword@ip:5432?sslmode=disable
  1. 运行 clair
1
docker run  -d -p 6060-6061:6060-6061 -v /root/clair_config/:/config  -v /tmp:/tmp  clair:dev  -config=/config/config.yaml
  1. 这样clair 就运行了,clair 刚开始运行需要一段较长的时间来更新安全数据数据库,所以确保外网网络连接正常

  2. 运行 clair 扫描工具

1
./analyze-local-images  a1553cdf672f

这里的 analyze 通过如下安装

1
go get -u github.com/coreos/clair/contrib/analyze-local-images

运行结果类似如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CVE-2016-0494 (High)
Unspecified vulnerability in the Java SE and Java SE Embedded components in
Oracle Java SE 6u105, 7u91, and 8u66 and Java SE Embedded 8u65 allows remote
attackers to affect confidentiality, integrity, and availability via unknown
vectors related to 2D.


Package: icu @ 52.1-8+deb8u3
Fixed version: 52.1-8+deb8u4
Link: https://security-tracker.debian.org/tracker/CVE-2016-0494
Layer: 8760f48ef252d37743b66f97f5d55646656a84a9e967d3a8028e09b3b7544106


CVE-2016-7167 (High)
Multiple integer overflows in the (1) curl_escape, (2) curl_easy_escape, (3)
curl_unescape, and (4) curl_easy_unescape functions in libcurl before 7.50.3
allow attackers to have unspecified impact via a string of length 0xffffffff,
which triggers a heap-based buffer overflow.


Package: curl @ 7.38.0-4+deb8u5
Link: https://security-tracker.debian.org/tracker/CVE-2016-7167
Layer: 8760f48ef252d37743b66f97f5d55646656a84a9e967d3a8028e09b3b7544106

......

Linux下删除减号开头的文件

Posted on 2016-11-24

个人无意使用原因产生了一个临时文件,发现类似 “-2015testdoc”

这种文件不是使用常规或者\转移符类似的方式,需要使用类似下面的方式

1
rm -- "-2015testdoc"

关于创建类似

1
touch -- -2015testdoc 或 touch ./-2015testdoc 可以创建

参考资料:

  1. http://blog.csdn.net/starperfection/article/details/50310711

确定javascript新语法的兼容性

Posted on 2016-11-24

前段时间使用javascript比较新的语法,比如Destructuring assignment
发现浏览器兼容问题,这个主要是因为不同浏览的版本在语法支持上有不同的要求
类似 chrome 48 不支持,chrome 49 就支持了,所以在使用上大家还是尽量注意要支持的浏览器版本的要求。

参考资料

  1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
  2. https://www.chromestatus.com/feature/4588790303686656

refresh页面,如何保持当前的tab

Posted on 2016-11-24

经过调查和尝试, 发现有两类方法,一个是使用location.hash,另外一种是使用localStorage

  1. windows.location.hash 有一个问题,在于不切换tab的情况下,tab标号不变导致 submit 是不进行相应页面reload的

  2. localStorage 也有一个潜在的问题是 对应的tab的情况下,因为是相当于cache机制,所以会造成对应的共享问题,
    但是这个可以通过让每个对象公用一个 tab,减少不同对象之间的冲突

参考资料:

http://stackoverflow.com/questions/16808205/keep-the-current-tab-active-with-twitter-bootstrap-after-a-page-reload

marathon 1.3.0 功能介绍

Posted on 2016-10-24

marathon 1.3.0 相较1.1.0 增加一些新的功能,同时有些新功能的加入并不是向后兼容的,包括对外部的依赖
marathon 从 1.2.0 版本以后,就开始要求 mesos 的版本大于1.0.0

不兼容修改:

下面来详细介绍一下新的功能:

  1. 新的选举依赖库

marathon 的 leader 选举代码改进增加了稳定性,Leader 选举的代码是依赖于 Curator 第三方库的
因为新的leader 选举库是和 1.2.0 之前marathon 不兼容的,所以如果从老的 marathon 升级而来,
需要停掉老的marathon 再进行升级,否则会出现多个 leader 冲突

  1. Framework 的增加了验证命令行参数支持

Framework 的认证主要是为了配合 mesos 认证功能来使用的,mesos 的认证运行可信赖的 Framework 向 mesos 注册。
默认是关闭的,用户需要通过 –mesos_authentication 来使用 这项功能

  1. TASK_LOST GC 的超时默认值的更改

如果 task 确认为lost 状态,因为某个原因表明 task 还会恢复,marathon 等待其恢复直到超时
原来默认的是 24 小时,现在改为 75秒,可以通过以下的参数来控制

1
-task_lost_expunge_gc, --task_lost_expunge_initial_delay, --task_lost_expunge_interval.

新功能简介

Universal Containerizer
从 1.3.0开始,marathon 支持在没有docker daemon 的情况下部署docker image。
通过原生的操作系统的功能来支持 AppC 和 docker 镜像启动和配置,提供隔离性

TASK_LOST behavior
如果mesos agent 和 master 失联,所有agent 上的 task 都认为是 lost 状态。 marathon 过去是对这些 lost task直接杀掉的。
但是某些情况下,这些agent 可能会重新加入集群,所以 lost并不是终止态

在这个新版本,marathon 会等待 lost task 直到被确认为 dead,默认超时时间是 75 秒,超过75秒,lost task 就被杀掉了

Task Kill Grace Period
每个应用都可以定义个kill grace period,当对task 进行杀死操作的时候,agent 会尽量在这个grace period之后销毁task。
但是这个等待时间是弱限制的,agent 可能会给其分配一个短的间隔强制终止

MAX_PER constraint
之前版本的限制无法满足在某个agent 部署固定数目的容器,现在可以限制部署任意的数量

Virtual heartbeat monitor
之前版本的marathon 在网络改变的情况下,无法知道和master失联,虚拟心跳提供了这种支持

Authorization to system endpoints
之前版本的marathon包含了 对于 AppDefinition 和 Group 改变的授权钩子,新的版本增加了 /v2/leader, /v2/info, /v2/events , /v2/eventSubscriptions
授权钩子

Secrets API support
在AppDefinition 中可以使用secrets了,secrets 作为重要的实体在环境变量里使用
原生的mesos不支持,需要借助一个插件来支持

Support for Nvidia GPU
在AppDefintion 中可以使用gpus作为Nvidia GPU资源了,mesos 对gpus这种重要实体提供原生支持,marathon 中 通过命令行参数
--enable_features gpu_resources来开启使用,要想使用上面的功能,mesos 还需要编译了包含了对于 Nvidia GPU的支持

Support all attribute types with constraints
新版中对非文本类型的属性提供了constraint支持

zookeeper digest authentication support
zk 客户端现在可以支持 zk 认证 和 acl了

Support for virtual networking for docker containers
提供了Docker USER 网络的支持

CNI networking support
增了ipAddress.Name的可选字段,可以使用CNI 网络来启动task

Enforce the uniqueness of service ports
marathon 会保证所有新创建或者更新的app 的service端口是新的
这个可能导致marathon原来使用的 app defintion 失效

若干的性能改进和缺陷修正

注明:文中如有理解偏差之处,欢迎指正。

Vim问题 ValueError: Still no compile flags, no completions yet

Posted on 2016-10-19

这个是因为ycm_extra_conf没有提供给YouCompleteMe编译标志,具体参见这个issue

https://github.com/Valloric/YouCompleteMe/issues/700

解决方法:

Set below in vimrc works fine. (设置对应的.ycm_extra_conf.py的路径)

1
let g:ycm_global_ycm_extra_conf = '/root/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

Bootstrap-sortable 在零个row的情况下排序报错的问题

Posted on 2016-10-19

最近使用了 bootstrap-sortable,发现一个问题

1
    Uncaught TypeError: Cannot read property 'appendChild' of undefined

这个问题是在表格没有数据的情况下报的错,调查发现是 Tinysort 的问题,https://github.com/Sjeiti/TinySort/issues/102
注明:Tinysort 是一个对HTML元素进行排序的 javascript 脚本。

这个已经在 Tinysort 2.2.4中修订了,但是 bootstrap-sortable 因为长久没有及时的更新,导致同样的问题。

解决方法:在 bootstrap-sortable 项目没有更新 Tinysort 前,需要自己手动更新 Tinysort. 直接将对应版本的 Tinysort 代码更新,如
https://github.com/Sjeiti/TinySort/blob/v2.2.4/dist/tinysort.jgz

1…456…26

Kai Qiang Wu

This is a place for thinking and writing

253 posts
32 tags
GitHub
© 2020 Kai Qiang Wu
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4
Visitor Total Visit