dell md3060e查看service tag

供应商需要md3060e的service tag,跑一趟机房太麻烦,就尝试看看命令能不能找出来。
进入/opt/dell/ServerHardwareManager/ServerHardwareManagerCLI/bin/目录,使用root账号运行:
./shmcli lpe
这样就能看到对应的service tag。

Window环境下qgis standalone程序开发环境设定

本文假定:
1. 采用qgis官方发布的安装程序(如QGIS-OSGeo4W-2.18.13-1-Setup-x86.exe安装包)
2. 使用默认的安装位置,即C:\Program Files\QGIS 2.18,如指定到其他目录,请修改对应的设定。
3. 假定示例数据目录为D:\QGIS\数据\

第一:设定环境变量
SET OSGEO4W_ROOT=C:\Program Files\QGIS 2.18
SET QGIS_PREFIX=%OSGEO4W_ROOT%\apps\qgis
SET PATH=%QGIS_PREFIX%\bin;%OSGEO4W_ROOT%\bin
SET PYTHONPATH=%QGIS_PREFIX%\python;%OSGEO4W_ROOT%\apps\Python27
SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27
SET GDAL_DATA=%OSGEO4W_ROOT%\share\gdal

即在cmd下执行上述命令,若路径不一致,请自行修改。

第二:运行一个样例
# -*- coding: utf-8 -*-
import os,os.path,sys

from qgis.gui import *
from qgis.core import *
from PyQt4 import QtGui

app = QtGui.QApplication([])
QgsApplication.setPrefixPath(os.environ['QGIS_PREFIX'],True)
QgsApplication.initQgis()

main_win = QtGui.QMainWindow()
frame = QtGui.QFrame(main_win)
main_win.setCentralWidget(frame)
grid_layout = QtGui.QGridLayout(frame)

map_canvas=QgsMapCanvas()
grid_layout.addWidget(map_canvas)
map_canvas.setCanvasColor(QtGui.QColor(255,255,255))
layer=QgsVectorLayer(ur'D:\qgis\数据\bou2_4p.shp','border','ogr')

QgsMapLayerRegistry.instance().addMapLayer(layer)
canvas_layer=QgsMapCanvasLayer(layer)
map_canvas.setLayerSet([canvas_layer])
map_canvas.zoomToFullExtent()

main_win.show()
# Need the following statement if running as a script
app.exec_()

可在前述cmd环境下运行python,将此代码粘贴进来运行。

第三,说明:
layer=QgsVectorLayer(ur'D:\qgis\数据\bou2_4p.shp','border','ogr')
这个语句,如目录名称中不含中文,则路径前的u可以移除。当然,也可以这样写:
layer=QgsVectorLayer(u'D:\\qgis\\数据\\bou2_4p.shp','border','ogr')
同时,建议在python下逐行执行来理解代码。

safari遭遇ssp.fwrd.com弹窗病毒

最近,突然发现safari会随机遭遇弹窗病毒,即会自动跳转几个网站,包括ssp.fwrd.com、ab4hr.com等网站,搜索发现有建议安装malwarebytes软件,尝试了之后,并不能解决问题。还有说reset safari可以解决问题的,也不能解决问题。
最终参考这个网站解决了问题:https://medium.com/@preitsma/how-to-remove-vsearch-adware-and-trovi-search-from-your-mac-osx-4b96555e68ff

具体步骤:
1. 进入~/Library/LaunchDaemons目录,发现是否有异常文件。在我的机器上发现了一个奇怪的文件:

com.apple.nalen.plist

cat这个文件,发现其中指向/Library/nalen文件。
于是将这两个文件都删除:
rm com.apple.nalen.plist
rm /Library/nalen

2. 删除已经运行的nalen文件:

ps aux | grep nalen

找到具体的pid,然后kill掉即可。

ubuntu 14.04升级到16.04遇到”无法计算升级”问题

一台服务器上计划操作系统升级,从ubuntu 14.04升级到16.04。但在do-release-upgrade过程中遇到了”无法计算升级”问题,导致升级程序退出。

网上搜索一圈后,最后在这儿找到答案:https://askubuntu.com/questions/202730/how-to-fix-the-unable-to-calculate-upgrade-issue-when-upgrading-from-12-04-to?answertab=votes

问题的关键,是要去看这个log文件:/var/log/dist-upgrade/main.log
不要被apt.log里一堆Broken误导。

BTW:最终检查问题也是postgresql-9.3-postgis-2.1的问题。

ubuntu临时禁止ipv6

单位的ipv6网络坏掉一段时间了,导致使用ipv6访问网站会链接不上,需要临时禁止掉ipv6网络。
在ubuntu下,加入要禁止eth0的ipv6网络,可以:
sudo su
echo 1 >> /proc/sys/net/ipv6/conf/eth0/disable_ipv6

gitlab升级:从7.8.4到9.4.5

升级gitlab,从7.8.4版本到9.4版本,中间跨越了几个大版本,需要一路升级上来,升级完成后,还需要修改对应的配置文件:
/etc/gitlab/gitlab.rb
将以下内容添加:
external_url 'http://git.westgis.ac.cn'
nginx['listen_port'] = 8000
postgresql['port'] = 5444
unicorn['port'] = 8001

然后重启服务:
sudo gitlab-ctl reconfigure
若发现nginx没有启动,则还需要观测nginx的配置文件是否正确:/var/opt/gitlab/nginx/etc/gitlab-http.conf

之前的升级,参见:gitlab升级

ipad起死回生记

一个老的ipad(ipad 3),很久不用,锁屏密码也忘记了,关键是home键也不灵(事后才发现这个问题)。经过多次密码尝试后,发现ipad已经显示为:ipad已被停用!
尝试通过DFU模式(power键+home键)进行恢复,但是怎么也进不去dfu模式,itunes一直提示要在ipad上响应,但ipad被锁死,无法响应。
于是尝试了一下另一个软件:爱思助手,发现其可以解决这个问题,他可以通过软件进入dfu模式。
最终通过这个方式将ipad重新安装,利用apple id重新激活,再重新还原,可以作为一个新的ipad使用了。

使用grep提取行内数据

要从类似文本中提取其中的经纬度数据:

u’city’: u”, u’lat’: u’53.54022′, u’lng’: u’28.04696′, u’id’: u’8037500000000000000′}”,,,[],0,0,57,80375,8037500000000000000,Детский сад №99,0,23.8435327,303,0,校园生活,,”http://maps.google.cn/maps/api/staticmap?center=53.6470467,23.8435327&zoom=15&size=120×120&maptype=roadmap&markers=53.6470467,23.8435327&sensor=true”,http://ww3.sinaimg.cn/large/4e704b16jw1exkskwur0bj205k05kt8v.jpg,,0,0,,,53.6470467,0,B2094457D66AA5FA4199,http://u1.sinaimg.cn/upload/lbs/poi/icon/88/57.png,887,0,57,80375,,0,8037500000000000000,白俄罗

一开始是尝试使用csvquote,后来发现部分类型数据存在问题,于是尝试使用sed提取文本,但试验后发现grep提取更为简单:

grep -Eo ‘markers=([0-9.,-]+)’

最终组合为:

cat hotpoi-tmp.csv | grep -Eo 'markers=([0-9.,-]+)' | awk -F= '{print $2}' | awk -F, '{printf "%.2f,%.2f\n",$2,$1}' | sort -t, -k2,2n -k1,1n | uniq

在ubuntu 16.04上安装vpn:l2tp/ipsec

有一台海外主机,之前都是用ssh -D来翻墙,结果最近不太好用了。于是就尝试在服务器上安装一个vpn。
第一次搜索尝试了pptpd,安装是非常简单。但在客户端测试的时候傻眼了,mac osx 10.12现在不支持pptp了,需要用l2tp/ipcsec。
在网上找到了一个安装脚本:
https://github.com/hwdsl2/setup-ipsec-vpn
安装非常简单:
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh
但要注意,加入服务器默认的外部网卡接口不是eth0,可能需要进一步修改。在我的这台机器上,对外网络接口是在eth1,因此需要将/etc/iptables.rules文件中的eth0都替换为eth1,然后重启服务器。

客户端也可以考虑一个分流方案,即国内网站不走vpn,国外网站都走vpn,参考:
https://github.com/ranmocy/chnroutes
安装比较简单:

  1. 在终端中执行python chnroutes.py -p mac -t ipsec,这将生成phase1-up.sh和phase1-down.sh两个文件;
  2. Mac OS X 系统支持 Cisco IPSec 的后台使用的是 racoon,但是不会像 PPTP 一样自动调用启动脚本,如果需要自动调用脚本,需要自己修改配置文件,并自己从命令行启动;
  3. 推荐手动执行phase1-up.sh设置路由表;而只有在网络环境变化的时候,需要运行phase1-down.sh再运行phase1-up.sh来重新设置路由表。