0%

在macOS 15.0中,我们已经不能像之前那样使用如下命令开启信任任何来源的应用程序。

1
sudo spctl --master-disable

需要自己编辑一个描述文件来进行开启,描述文件为如下内容:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.systempolicy.control</string>
<key>PayloadUUID</key>
<string>uuid-1</string>
<key>PayloadIdentifier</key>
<string>com.yourcompany.profile.systempolicy</string>
<key>PayloadDisplayName</key>
<string>System Policy Control</string>
<key>PayloadDescription</key>
<string>Configures System Policy Control settings</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>EnableAssessment</key>
<false />
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Disable Gatekeeper</string>
<key>PayloadIdentifier</key>
<string>com.yourcompany.profile</string>
<key>PayloadRemovalDisallowed</key>
<false />
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>uuid-2</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>

其中uui’d-1和uuid-2需要自行使用uuidgen命令生成,不一样即可。之后将如上文件保存为disable.mobileconfig文件,在Finder中双击运行安装该描述文件即可。

完成以上步骤后就可以在设置-隐私与安全性最下面的安全性中看到已经开启了“任何来源”的应用。

之后安装一些破解软件时还是会遇到已损坏无法打开的报错,可以使用如下命令添加签名。

1
sudo xattr -d com.apple.quarantine /Applications/xxxx.app

duckdb的代码实现非常值得DB领域的从业人员学习,最近在实现parquet v2的编码解析功能,看到duckdb的代码中已经支持了parquet v2中的各种新增的编码格式,因此就想先debug看下duckdb的实现代码,方便自己后续的开发。本文就将如何使用clion debug duckdb代码进行一个简单的记录。

在github clone duckdb最新的代码后,使用clion打开,由于duckdb默认就会加载parquet extension,因此我们不需要额外配置cmake参数就可以load parquet的相关代码。之后我们可以在右上角Run Configuration中找到名称为duckdb的Target,将其Executable选择为shell。在Environment Variables中填入:

1
LD_PRELOAD=/usr/lib64/libasan.so.6

这种运行方式无法进行交互式输入,因此我们需要直接加入需要执行的query,例如:

1
2
-c
"select * from parquet_scan('test.parquet')

这样在代码中打断点后执行就可以进行debug了,可以学习duckdb优秀的代码。

最近喜欢用Dracula主题,主题官网:https://draculatheme.com/

在mac上设置了Dracula全家桶,设置vim主题的时候,效果一直不是很好,找了很多资料,最后找到了一个比较满意的配置,记录一下

1
2
3
4
5
6
7
8
9
packadd! dracula
syntax enable
colorscheme dracula
set hlsearch
set nu
set termguicolors
highlight Normal ctermbg=None
let &t_ZH="\e[3m"
let &t_ZR="\e[23m"

主要是最下面四行配置,highlight Normal ctermbg=None能让vim的背景和iterm2的背景相同,最后两行能让一些奇怪的高亮恢复正常,还能显示斜体

presto对接OpenLDAP只支持ldaps,需要OpenLDAP开启SSL,本文将首先介绍OpenLDAP如何开启SSL。

OpenLDAP开启SSL

OpenLDAP开启SSL需要生成LDAP证书,有两种证书生成方式:

  1. 自签名证书。该方式较为简单,LDAP客户端需要进行设置不进行证书校验;
  2. CA签名证书,可以使用内部CA或外部CA签名证书。需要将给ldap server证书签名的CA证书放在客户端的/etc/openldap/cacerts/目录中,以便LDAP客户端可以验证证书。同时,客户端需要在/etc/openldap/ldap.conf中配置TLS_CACERT /etc/openldap/cacerts/ca.cert.pem

两种方式任选一种即可。

自签名证书

/etc/openldap/certs/目录中创建LDAP server自签名证书:

1
openssl req -new -x509 -nodes -out /etc/openldap/certs/ldap.crt -keyout /etc/openldap/certs/ldap.key -days 1460

填写信息中比较重要的是Common Name,需要填写安装OpenLDAP的主机的hostname,其他信息可以不填写:

1
2
3
4
5
6
7
Country Name (2 letter code) [XX]: CN
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []: localhost
Email Address []:
阅读全文 »

yum安装软件

首先通过yum安装kerberos所需要的软件

1
yum install -y krb5-server krb5-workstation pam_krb5

修改服务端配置

1
cd /var/kerberos/krb5kdc

我们需要修改该目录下的两个配置文件:

folly是Facebook提出的一个基于C++14的C++组件库,包含有非常多具有实用性和效率性的数据结构。其github地址为: https://github.com/facebook/folly 。在其README当中提供了在ubuntu和MacOS中的安装教程,没有CentOS中的安装教程,并且在CentOS当中安装会遇到很多问题,本文对在CentOS 7系统中安装folly库进行了过程记录。

最新的folly需要gcc的版本高于5.1,但是CentOS 7中的gcc版本为4.8,直接升级安装gcc非常麻烦,并且可能会对其他项目使用的gcc造成影响,以采用我另一篇博客中提及的方法切换到高版本的gcc:

http://liujiayi771.github.io/2018/04/16/linux/CentOS%E5%AE%89%E8%A3%85%E9%AB%98%E7%89%88%E6%9C%ACgcc/

从官网提供的ubuntu安装教程中可以看出,其依赖于boost-devel、glog-devel、gflags-devel、double-conversion等库,有些库可以通过yum来进行安装,有些则需要通过源码编译安装。首先是可以使用yum安装的库:

1
2
3
4
5
6
7
8
9
10
11
sudo yum install boost-devel \
double-conversion-devel \
libevent-devel \
openssl-devel \
lz4-devel \
xz-devel \
snappy-devel \
zlib-devel \
jemalloc-devel \
libtool \
scons

编译安装gflags、glog

1
2
3
4
5
6
7
8
9
10
11
12
13
git clone https://github.com/schuhschuh/gflags.git
mkdir gflags/build
cd gflags/build
cmake -DGFLAGS_NAMESPACE=google -DBUILD_SHARED_LIBS=on ..
make -j 8
sudo make install

git clone https://github.com/google/glog.git
cd glog
autoreconf -ivf
./configure --with-gflags=/usr/local/lib
make -j 8
sudo make install

编译安装folly

1
2
3
4
5
6
git clone https://github.com/facebook/folly.git
cd folly
mkdir _build && cd _build
cmake ..
make -j 8
sudo make install

最近拿到了一台2012年中的MacBook Air,其系统版本非常老,还是10.7,需要对其系统进行升级。一开时以为直接用系统更新就能升级上去,但是第一次更新就遇到了“不能存储更新”的问题,无法升级,试了好几次都在最后快下完的时候报这个错误。查资料说是因为系统版本太老了,要手动下载组合更新包才能升级。

https://support.apple.com/zh_CN/downloads/macos 上可以找到所有MacOS的组合更新包,一直往下拉找到10.7.5的组合更新包,下下来以后直接安装非常容易就安装上去了。接下来继续检查更新,更新了一些软件内容,之后就提示所有内容已经是最新的了,但是这时候系统版本还是10.7.5,已经无法再往上升级了,于是去下了10.8版本最早的组合更新包10.8.2,点击安装确提示只能支持10.8的系统。

查了资料才知道,当时10.8发布的时候从10.7.5升上去是要19美元的,人民币好像120多,之后苹果系统都是免费的了。App Store里面10.8的升级早就下架了,已经无法以正常的更新途径来更新系统了,只能自己制作U盘启动盘来更新这个系统。首先查了一下各个版本的MacOS对老机型的兼容性。

看了一下,这些系统都是支持这台MacBook Air的,最新的10.14应该是这台电脑最高能升的系统了,以后再有新系统的更新估计就上不去了。我决定直接升级到10.11,于是找了一个10.11.6的系统镜像dmg文件,下了半天才下好,打开的时候却说什么“校验和”有问题,后来查了一下直接打开的时候点跳过就可以了,里面有一个Install OS X El Capitan.app,把它随便拖到一个文件夹里面。

之后准备一个8G以上的U盘插入电脑,打开磁盘工具,点击左上角的显示,选择显示所有设备。找到自己的U盘,点最外层的设备,选择抹掉,分区类型选GUID,格式选Mac OS扩展(日志式),取一个名字叫OSX。格式化完毕之后,输入以下命令来进行启动盘制作。

1
sudo /Users/joey/Downloads/xxx.app/Contents/Resources/createinstallmedia --volume /Volumes/OSX --applicationpath /Users/joey/Downloads/xxx.app --nointeraction

我是把app文件拖到了Downloads目录下的,这里xxx就代表了这个app文件的名字,其他版本的MacOS制作U盘启动盘的命令都是一样的,这个过程持续的时间比较长。做好之后重启电脑,按住option键,选择U盘启动,之后的过程很简单,一步一步点就行了。但是到最后还是安装失败了,报了一个错“应用程序副本不能验证 它在下载过程中可能已遭破坏或篡改”。这个问题很多人都说在安装的时候在终端里通过date修改时间就可以解决,我试了一下没办法解决这个问题。但是我看了一下,遇到这个问题的大多数都是安装10.11以及之前版本的MacOS的,那时候系统还不叫MacOS,叫OSX。估计OSX有个时间上的验证机制,于是放弃安装10.11,毕竟这台电脑还可以装10.12,10.13和10.14,估计就不会有这个问题了。重新制作启动盘,流程和上面一样,然后就顺利安装上去了。

接下来就是用boot camp安装win10双系统,又遇到了奇葩问题,用boot camp做了启动盘之后一直会出现无法引导的问题,可以用efi引导进去安装,但是会遇到分区表类型无法兼容efi的问题,删除分区和格式化都没法解决,找到一个比较挫的方法是先在Mac系统里把BOOTCAMP的分区格式化成Mac OS扩展(日志式),然后安装windows的时候删除那个分区即可安装上去,但是这样那个分区在Mac系统中就不受boot camp控制了,删除windows系统还原分区的时候比较麻烦。查了很久,一个帖子恰好也是这一款MacBook Air,也出现了一样的问题,被我查到了https://www.cnblogs.com/pinganzi/p/10354296.html ,他的第一个问题我没遇到,第二个问题和我一样,于是我换了一个USB2.0的U盘,马上就解决问题了,但是安装win10的时候会说需要先格式化成NTFS,直接点格式化就可以安装了。

最近在写论文时,需要将word文档导出为pdf文档。将word导出为pdf之前一直使用的是另存为的方法,也可以使用打印选择Adobe PDF来生成pdf文件,但是这两种方法都有一定的局限性。打印的方法生成pdf不能选择添加书签,但是能控制输出文件的清晰度,调到比较高时,能生成非常清晰的pdf文件。word2016中已经可以使用另存为来导出pdf,并且在选项当中也可以设置是否导出书签,但是输出的pdf文件的清晰度调整选项不够多,输出的pdf中图片会被压缩,变得模糊。
实际上,安装了Adobe Acrobat的word当中有一个Acrobat的加载项菜单,里面的首选项菜单可以很详细地配置导出的pdf文件的一些参数,可以选择高质量打印,并且将其中的图片的压缩和采样全都关掉,并且可以设置输出的清晰度以及书签等等。但是这个加载项在生成pdf结束后,会导致word崩溃,出来一个提示问我是否要禁用该加载项,一时手滑点到了是,结果这个加载项就被禁用了。禁用之后也好办,可以在word的选项-加载项-转到里面勾选Adobe PDFMaker加载项进行加载。但是这个加载项原本是随word启动自动加载的,现在变成了每次都要去选项里面设置加载,非常麻烦,并且选项里面并没有菜单可以选择让这个加载项自动加载。这里便需要修改注册表来实现随word启动自动加载,注册表的位置为:

1
HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\PDFMaker.OfficeAddin

进去之后发现有一个LoadBehavior的键的值现在是0,我观察到Addins里面还有有道词典的加载项,这个加载项是会随word自动启动的,其LoadBehavior的值为3,于是将PDFMaker.OfficeAddin中LoadBehavior的值也改为3便能自动随word启动了,大功告成。

登录MATLAB的MathWorks,选择右上角的我的账户,点击许可证右侧的许可证管理,进入后选择安装和激活,之后选择“激活并获取许可证文件”,选择激活计算机,填入相关信息。其中主机ID即为电脑用于上外网的网卡的MAC地址,可以使用ipconfig进行查看,计算机登录名就是当前登录用户的用户名,不知道的话可以使用whoami指令进行查看。填写完成后会生成一个序列号,和一个lisence.lic文件,将文件上传至安装MATLAB的服务器上并记录激活序列号。

下载包含所有产品的完整MATLAB安装包,官网下载的只是一个100MB多的一个网络安装器,安装过程中才会下载需要的产品,这对于命令行安装是不适用的,命令行安装必须使用完整的离线安装包。之后需要填写silent安装模式下的安装配置文件,具体模板如下:

阅读全文 »

最近需要运行一个基于OpenCL开发的软件,服务器上的NVIDIA 1080Ti和Intel CPU都支持OpenCL,安装OpenCL之前可以安装一个clinfo的软件可以看到服务器上目前支持的OpenCL设备。

1
sudo apt install clinfo

一般安装NVIDIA的驱动的时候就会有选项选择是否安装OpenCL的驱动,若没有选择那个选项,clinfo是看不到有NVIDIA的cl设备的,接下来安装的几个软件一般也会将没有选择OpenCL的NVIDIA缺失的库作为依赖安装上,使得基于NVIDIA的cl设备能够正常使用。

1
2
sudo apt install ocl-icd-libopencl1
sudo apt install opencl-headers

若需要在服务器上编译或者调试OpenCL程序,还需要安装

1
sudo apt install ocl-icd-opencl-dev

要使得CPU也支持运行OpenCL程序,需要去intel官网下载opencl-sdk,地址是:

http://software.intel.com/en-us/vcsource/tools/opencl-sdk

选择runtime版本进行下载,目前最新的适合ubuntu的地址是:

http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/12526/opencl_runtime_16.1.2_x64_rh_6.4.0.37.tgz

适合CentOS的地址是:

http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/13454/opencl_runtime_16.1.2_x64_rh_6.4.0.37.tgz

安装前需要先安装lsb-core,sdk依赖于这个库,版本必须大于4.0

1
sudo apt install lsb-core

CentOS系统为

1
sudo yum install redhat-lsb-core

之后sudo ./install,检查操作系统版本时会提出ubuntu not support,这里可以忽略,这里说的只是不提供支持,而不是不能够使用,intel官方回复说对centos系统提供较好的支持,但ubuntu也是能使用的。

  1. The OpenCL™ implemenations themselves provided at the link are supported. Intel® CPU Runtime for OpenCL™ Applications on Ubuntu* OS is supported. This support is distinct from the 2017 SDK support.
  1. The 2017 SDK is supported on CentOS*. It is expected compatible with Ubuntu* OS.

The semantic difference is that for supported there is an immediate paid path to get priority support and an intent to create service level agreements for CentOS* only. ‘supported’ is an overloaded word in the software industry… Hopefully the installer messaging will be more clear in the upcoming 2019 SDK.

具体可以看 https://software.intel.com/en-us/forums/opencl/topic/785262