下载 SDSS 上的天文数据

学习天文相关的同学们应该都会怎么去下载天文数据,但对于门外汉来说,刚一接触的确有点懵,好在网络上也有一些只言片语,巡天网站的文档也写得足够详细,但简单的中文经验的分享似乎不多。故本文就介绍了如何下载斯隆数字巡天的天文数据。

摘一段维基百科的介绍:斯隆数字化巡天(英语:Sloan Digital Sky Survey,缩写为SDSS)是使用位于新墨西哥州阿帕契点天文台的 2.5 米口径望远镜进行的红移巡天项目。该项目开始于 2000 年,以阿尔弗雷德·斯隆的名字命名,计划观测 25% 的天空,获取超过一百万个天体的多色测光资料和光谱数据。斯隆数字化巡天的星系样本以红移0.1 为中值,对于红星系的红移值达到 0.4,对于类星体红移值则达到 5,并且希望探测到红移值大于6的类星体。

根据其官网,SDSS 最近发布了截至 2016 年 7 月所收集的数据,Data Release 14 (DR14),用户可以在 Skyserver 上查看文档和使用有关工具。

Read More

Telegram 接收并回复微信消息

本文环境:安装了 Raspbian 的树莓派, EFB 2.0 。

EFB (EH Forwarder Bot) 是由 Eana Hufwe 编写的框架,可以让用户在不同的聊天平台上互相通信。本文介绍如何使用 EFB,在树莓派上建立一个 telegram 机器人,实现 telegram 上查看和回复微信消息的功能。也可以在 VPS 上实现这一功能。

准备

获取一个 Telegram Bot

首先在 Botfather 那里注册一个 bot,获得 token 。

知道自己的 Telegram ID

get_id_bot 处得到自己的 ID 。

树莓派配置

由于 raspbian 的 stable 库中提供的 python 版本为 3.5,而 EFB 最低要求 3.6 。所以我选择将 raspbian 升级到 testing 版本。

vi /etc/apt/sources.list

将其中的 stretch 改为 testing,然后升级。

sudo apt update
sudo apt dist-upgrade -y
sudo apt autoremove -y

升级的过程有点漫长,结束后发现报错,提示 udev 的 systemd 服务没有启动成功,导致 udev 没有配置完成,于是几个其他依赖 udev 的包都没有配置。这与网络上 failed to start udev kernel device manager 的这个问题情况相同,清除掉 raspi-copies-and-fills 这个包可以暂时解决:

sudo apt purge raspi-copies-and-fills -y

由于网络原因,安装 proxychains:

sudo apt install proxychains -y

设置 proxychains :

sudo vi /etc/proxychains.conf

socks5 127.0.0.1 1081

这里使用了树莓派上运行在 1081 端口上的 SSR 代理。

解决 proxychains 找不到库的问题:

sudo vi /usr/bin/proxychains

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libproxychains.so.3

Read More

Classify Wine Data with Libsvm in Matlab

This a simple example of the classification with Libsvm in Matlab.

You can download the wine data from here.

Data Preprocessing

Load the wine data , and save it to winedata

uiimport('wine.data');

wine_label = wine(:, 1);
wine_data = wine(:, 2:end);
categories = {'Alcohol'; 'Malic acid'; 'Ash'; 'Alcalinity of ash'; 'Magnesium'; 'Total phenols'; 'Flavanoids'; 'Nonflavanoid phenols'; 'Proanthocyanins'; 'Color intensitys'; 'Hue'; 'OD280/OD315 of diluted wines'; 'Proline'};
classnumber = 3;
save winedata.mat;

load winedata;

Show the box figure of test data

figure;
boxplot(wine_data, 'orientation', 'horizontal', 'labels', categories);
title('Wine Data Box Figure', 'FontSize',12);
xlabel('Attribute Value', 'FontSize', 12);
grid on;

Read More

Basic Uses of Libsvm in Matlab

System: Ubuntu with gcc installed

Libsvm Installation

cd libsvm-3.2/matlab
mex -setup
make

Just for Test

Load data

cd ../
load heart_scale

Result:

Error using load
Number of columns on line 3 of ASCII file heart_scale must be the same as previous lines.

Load data again and train model

[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
cd matlab;
model = svmtrain(heart_scale_label, heart_scale_inst)

Result:

*
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132

model = 

struct with fields:

    Parameters: [5×1 double]
    nr_class: 2
    totalSV: 132
        rho: 0.4245
        Label: [2×1 double]
    sv_indices: [132×1 double]
        ProbA: []
        ProbB: []
        nSV: [2×1 double]
    sv_coef: [132×1 double]
        SVs: [132×13 double]

Predict the data and show accuracy

[predict_label, accuracy, decision_values] = svmpredict(heart_scale_label, heart_scale_inst, model);

Result:

Accuracy = 86.6667% (234/270) (classification)

Read More

利用 hashcat 回忆(破解)遗忘的 Keepass 密码

本文环境:所有命令在 Kali Linux 下执行。

昨天的确是一个 tough day 。由于记性不好,四天前设置的 Keepass 主密码终于“如愿以偿”地被我遗忘了,而其中,保存了对于我来说极其重要的东西。16 位的密码中,我依稀地记得前 7 位和后 5 位“应该”、“似乎”是什么样子的,第十一位也记得,不过有些不确定。第八位我“幻想”出了一个答案。也就是说,我至少要再想出 2 位密码,至多则是 4 位,其中可能包含了大小写字母、数字,和特殊符号。

本着由易到难的想法,我先假定我模糊的记忆和幻想都是真实的。步骤是:先猜测 2 位,无果后,猜测 3 位,无果后,猜测 4 位。

出于减小范围的考虑,我先根据记忆筛掉完全不可能的字符,如没有穷举成功,方则使用全集。

本次操作有几个不确定因素:

  1. 我无法保证,已经记得的密码是绝对正确的。可能无功而返。

  2. 在减小范围时,我可能根据记忆错误地减掉了一些字符。

Read More