Skip to content

Commit 3000e9f

Browse files
committed
Merge pull request Show-Me-the-Code#20 from JiYouMCC/master
Code of 21 22 23 24
2 parents 5572040 + 0355f43 commit 3000e9f

36 files changed

+580
-0
lines changed

JiYouMCC/0021/0021.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# -*- coding: utf-8 -*-
2+
# 第 0021 题: 通常,登陆某个网站或者 APP,需要使用用户名和密码。密码是如何加密后存储起来的呢?请使用 Python 对密码加密。
3+
import os
4+
from hashlib import sha256
5+
from hmac import HMAC
6+
7+
SALT_LENGTH = 8
8+
9+
10+
def encrypt_password(password, salt=None):
11+
if salt is None:
12+
salt = os.urandom(SALT_LENGTH)
13+
if isinstance(password, unicode):
14+
password = password.encode('UTF-8')
15+
result = password
16+
for i in xrange(8):
17+
result = HMAC(result, salt, sha256).digest()
18+
return salt + result
19+
20+
21+
def validate_password(hashed, input_password):
22+
return hashed == encrypt_password(input_password, salt=hashed[:SALT_LENGTH])
23+
24+
25+
password = 'secret'
26+
encrypt = encrypt_password(password)
27+
print validate_password(encrypt, password)

JiYouMCC/0022/0022.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# -*- coding: utf-8 -*-
2+
# 第 0022 题: iPhone 6、iPhone 6 Plus 早已上市开卖。请查看你写得 第 0005 题的代码是否可以复用。
3+
# using PIL in http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow
4+
# 我承认我是先看到22才看到5的
5+
from PIL import Image
6+
7+
8+
def change_image_size(image_path='0005.jpg', size=(1136, 640)):
9+
im = Image.open(image_path)
10+
size = (size[1], size[0]) if im.size[1] > im.size[0] else size
11+
im.thumbnail(size, Image.ANTIALIAS)
12+
im.save('result-' + image_path)
13+
14+
change_image_size('0005-r.jpg')
15+
change_image_size('0005.jpg')
16+
17+
# ip6
18+
change_image_size(image_path='0005.jpg', size=(1334, 750))
19+
20+
# ip6plus
21+
change_image_size(image_path='0005.jpg', size=(1920, 1080))

JiYouMCC/0023/0023.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
第 0023 题: 使用 Python 的 Web 框架,做一个 Web 版本 留言簿 应用。
2+
---------------------------------------
3+
4+
以前在sea上弄过一个差不多的:http://jillyou.sinaapp.com/guest/
5+
不过sea弄django syncdb比较痛苦,所有sql拼接出的
6+
直接django真够傻瓜的……
7+
8+
代码版本用的sqlite3,本地调试的时候用的mysql
9+
10+
'default': {
11+
'ENGINE': 'django.db.backends.mysql',
12+
'NAME': 'guestbook',
13+
'USER': '',
14+
'PASSWORD': '',
15+
'HOST': '',
16+
'PORT': '',
17+
}

JiYouMCC/0023/guestbook/db.sqlite3

39 KB
Binary file not shown.

JiYouMCC/0023/guestbook/guestbook/__init__.py

Whitespace-only changes.

JiYouMCC/0023/guestbook/guestbook/commits/__init__.py

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from django.contrib import admin
2+
from models import Message
3+
4+
admin.site.register(Message)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
from django.db import models, migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = []
8+
operations = [
9+
migrations.CreateModel(
10+
name='Message',
11+
fields=[
12+
('id', models.AutoField(
13+
verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
14+
('name', models.CharField(max_length=30)),
15+
('message', models.TextField(max_length=65535)),
16+
('date', models.DateTimeField()),
17+
],
18+
options={
19+
},
20+
bases=(models.Model,),
21+
),
22+
]

JiYouMCC/0023/guestbook/guestbook/commits/migrations/__init__.py

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.db import models
2+
3+
4+
class Message(models.Model):
5+
name = models.CharField(max_length=30)
6+
message = models.TextField(max_length=65535)
7+
date = models.DateTimeField()
8+
9+
def __unicode__(self):
10+
return self.name + ':' + self.message[:25]

0 commit comments

Comments
 (0)