0%

Install miniconda

与Anaconda相比,Miniconda要轻量化得多。Miniconda仅包含conda,Python以及少量的依赖包。miniconda的安装方法见官网说明文档。只需要下载对应操作系统的installer,然后按提示一步步进行即可。

Install jupyter notebook

1
pip install notebook

Create conda environment

1
conda create -n dl_env

Add conda environment to jupyter notebook

添加前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# list现有的kernel
(base) root@kaka:~/tmp/envs# jupyter kernelspec list
Available kernels:
python3 /root/miniconda3/share/jupyter/kernels/python3

# 查看具体的kernel信息
(base) root@kaka:~/tmp/envs# cat /root/miniconda3/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "base_py3",
"language": "python"
}

阅读全文 »

今天早上打开电脑,发现Ubuntu图形界面登录不了。在登录界面输入了密码后,画面闪一下又跳回登录界面。于是,切到换到命令行界面(同时按下Ctrl+Alt+F1),看看出了什么问题。

命令行界面能顺利登录,但是sudo/ls等命令都用不了,提示错误

The command could not be located because ‘/usr/bin:/bin’ is not included in the PATH environment variable.

显然,PATH出问题了。回想到昨天晚上安装了scala和spark,应该是配置PATH的时候出问题了。于是,尝试用vim来重新编辑/etc/profile,但是,vim命令也报错….

纠结,后来在网上找到解决方案,那就是用绝对路径:

1
/usr/bin/sudo /usr/bin/vim /etc/profile

修复了/etc/profile文件后,再重启

1
/usr/bin/sudo /sbin/reboot

重启后,又能重新登录图形界面了。

第33关 用户名kohsamui 密码thailand

Finally,the last one!

图片的名称是beer1.jpg,显然要尝试beer2.jpg,得到提示no, png,得到beer2.png

一张杂乱无章的图片,根据之前页面Page Source里的提示:

1
2
3
4
If you are blinded by the light,
remove its power, with its might.
Then from the ashes, fair and square,
another truth at you will glare.
阅读全文 »

第32关

这一关卡了好几天,现在还没解决好。为了能在过年前写完所有的关卡,打算先把解题思路弄下来,春节后再完善。

这一关是关于一个叫Nonogram的游戏。大概就是根据每一行每一列的数字来填格子,行列都符合的图案就是要求的答案。改变格子图案,再看看相应的行列的数字变换,大概就能知道这种游戏的玩法了。

阅读全文 »

第31关

先查出这个石头是什么地方。攻略上给出的是用户名kohsamui,密码thailand,跳到下一个页面。
http://www.pythonchallenge.com/pc/rock/grandpa.html

图片是曼德布罗特集合,具体可以看这里,解释得挺清楚的。

过关的主要步骤是按照Page Source里面的参数,画出一张曼德布罗特集合的图。比较自己画出的图和网页上的那张图的不同之处。将会看到,大体上是一样的,有少许像素点差值为16,-16.把这些点收集起来,会组成另一张图片,该图片详情参考Arecibo message 维基百科,上面有很详细的解释。

阅读全文 »

第30关

Page Source里提示找csv文件,很容易就得到yankeedoodle.csv文件。

csv文件即comma separated values,直接用文本编辑器即可看到里面的内容。

yankeedoodle.csv里面有7367个浮点数,我们把些值当成是图片像素值,把它们放到大小为53*139的图片中,会得到下面的公式。

n = str(x[i])[5] + str(x[i+1])[5] + str(x[i+2])[6]

接着,按照上面的公式,每三个浮点数一组,分别取第6/6/7位数字,组合得到一个新的数值,再就爱那个数值转为ASCII打印出来。
例如,三个浮点数分别为0.82207, 0.91181, 0.88563.则分别取一位,得到’0’, ‘8’, ‘3’,组合起来就是083,相应的ASCII码为’S’.

阅读全文 »

第29关

这一关要写的代码只有寥寥几行,但是很难想到。

Page Source里面好像什么特别的提示都没有。但仔细看下,会发现后面有一大段空白,原来玄机就在这些空白中。把每一行的空格个数转成ASCII码,会发现是以BZ开头的一串字符,照例用bz2解压即可得到通关信息。

阅读全文 »

第28关
RING-RING-RING,读着读着就变成了GREEN. green.html里提示yes, green.

仔细观察一下图片,发现里面有一条条的绿色竖纹。将图片的Green通道提取出来,相邻的两列像素作差,得到的差值的绝对值几乎都为42,只有少数例外。将绝对值不是42的提取出来,转成ASCII,得到通关信息——Python作者的姓名Guido van Rossum中的guido

阅读全文 »

第27关

点击图片,提示输入用户名和密码,看来这一关就是要找到用户名和密码。

根据Page Source的提示,很容易得到zigzag.gif

这张图片上每个像素值是调色板的索引,将每一个像素替换为调色板中相应的颜色。

1
2
3
4
5
6
im = Image.open('zigzag.gif')
imdata = im.tostring()
p = im.palette.getdata()[1][::3] #RGB相等,因此每三个取一个
frm = ''.join([chr(i) for i in range(256)])
table = string.maketrans(frm, p)
imdata_trans = imdata.translate(table)
阅读全文 »

第26关

Page Source里提示you’ve got his e-mail,回想一下,我们在第19关里得到了一个email地址leopold.moz@pythonchallenge.com,这一关的网页title提示**be a man-apologize!**,攻略上说发邮件到上面的email地址会得到通关信息(我试了一下,暂时还没收到信息)。

From: leopold.moz@pythonchallenge.com
Subject: Re: sorry
Date: 2007-05-17 15:37:07 BDT

Never mind that.

Have you found my broken zip?

md5: bbb8b499a0eef99b52c7f13f4e78c24b

Can you believe what one mistake can lead to?

阅读全文 »