作者文章归档:alpface

AWS EC2 搭建SS


之前一直使用的openvpn,但是经常连接超时,无法使用,貌似只要出墙我的vpn绝对无法使用,前几天查阅了一些有关openvpn混淆的资料。经过了一夜的奋战,终于把openvpn obfs patch打到了openvpn的源码中,并成功安装到ubuntu 16.04中,期间遇到了各种的坑,无奈呀,只能管自己对linux不太熟悉,经过了各种配置后,我觉得我终于要胜利了。但是当我在客户端连接我的vpn时,总是报tls错误,总之又是各种查询...

今天我决定尝试使用Shadowsocks,查阅了一些资料,发觉安装很简单,这里我贴出在服务器端安装ss的过程:

安装Shadowsocks

服务器环...

Read more

Mac OS 使用virtualenv部署python tensorflow


Tensorflow部署

Tensorflow这么强大,直到今天我才开始尝试使用,记录在mac上部署Tensorflow。 Mac平台:Mac os 10.12.6 Python版本: Python 3.6.3 Python虚拟环境: virtualenv

安装virtualenv http://www.alpface.com/article/2018/1/23/14.html 安装pip: sudo easy_install pip

创建基于python3的虚拟环境,

mkvirtualenv -p /usr/local/bin/python3 tensorflow

如果提示:The ...

Read more

亚马逊云EC2免费服务 搭建自己的VPN


搭建工作我在 2017-12月就已经完成了,当时也写了博客记录,但是期间由于我的迁移了服务器,没有做备份导致blog数据没了,还好我在简书上记录了,今天就这样拿过来吧。

简书入口

依赖:

1 亚马逊EC2服务 2 OpenVPN, OpenVPN Mac 和 iOS上 都有客户端

亚马逊云EC2免费套餐介绍

注册亚马逊

进入亚马逊中国注册注册账号: 屏幕快照 2017-12-16 下午3.38.43.png

屏幕快照 2017-12-16 下午3.42.56.png

Snip20171216_3.png

Snip20171216_4.png

Snip20171216_5.png

登录完成注册

使用EC2,启动实例,配置

在启用之前,先部署区域,右上角选择亚太区域(东京),据说离咱们近,速度会快些 Snip20171216_6.png

  1. 创建密钥对(用于ssh及各种连接EC2使用的,很重要哦),名称自己定义即可,创建完成后,会自动下载一个te...

Read more

2018年初九 上班第一天


今天初九,也是2018年上班第一天,继续 改bug、优化代码、提升用户体验, 真心希望旅图的产品越来越好。

MJRefresh 下拉刷新时触发taptic反馈 第一种方式: 在继承UITableView的子类中重新setMj_header:方法,并hook住mj_header的setState:方法,当state == MJRefreshStatePulling时,触发taptic反馈, 示例代码:

#import <MJRefresh.h>
#import "Aspects.h"

@interface BBTableView ()
#ifdef __IPHONE_10_0...

Read more

Ubuntu 16.04 上使用Nginx、 Gunicorn、supervisor 部署django项目


本文记录Ubuntu 16.04 上使用Nginx、 Gunicorn、supervisor 部署django项目

准备工作:

  • 创建一个django项目
  • 创建一个python虚拟环境
  • 激活虚拟环境 这里跳过准备工作,假设我已经有了一个项目DjangoBlog和一个虚拟环境alpfaceblog

创建数据库

登录mysql创建一个数据库,这里创建一个名称为blog数据库:

mysql -uroot -p
create database blog charset=utf8;

配置DjangoBlog/setting.py 中数据库 相关配置,如下所示:

DATABASES = {
   ...

Read more

django nginx 502 Bad Gateway


问题描述: 使用nginx在服务器端部署django项目,访问时总是报502 Bad Gateway错误 原因: 通过nginx的错误日志/var/log/nginx/error.log找到了原因:

2018/02/09 17:35:40 [error] 13175#13175: *1 connect() failed (111:Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://127.0...

Read more

Ubuntu 16.04安装django-compressor error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


Ubuntu 16.04安装django-compressor 报错:

In file included from rcssmin.c:18:0:
    _setup/include/cext.h:34:20: fatal error: Python.h: No such file or directory
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

错误的关键:_setup/include/cext.h:34:20: fatal erro...

Read more

python浅拷贝和深拷贝


在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

import copy

  1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。(比深拷贝更加节省内存)
  2. copy.deepcopy 深拷贝 拷贝对象及其子对象,比如deepcopy 一个列表或元祖会对其子对象也执行深拷贝

Read more

UITableView动画完成回调


UITableView 刷新代码块动画执行完成的回调

[CATransaction begin];

[tableView beginUpdates];

//...

[CATransaction setCompletionBlock: ^{
    // Code to be executed upon completion
}];

[tableView insertRowsAtIndexPaths: indexPaths
                 withRowAnimation: UITableViewRowAnimationAutomatic];


[tableVi...

Read more

NSPredicate 谓词使用记录


NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索。

开发中经常需要从集合中查找到某个或某些值,或者通过过滤得到想要的内容,这都是家常便饭的事儿。所以,我们常见的就是需要遍历集合,加条件判断,然后得到符合条件的结果。然而,遍历是件很耗内存的事儿,特别是在移动端开发,多重的for循环遍历,是要尽量避免的。此文主要是来介绍NSPredicate类,这种类似于SQL语句通过过滤集合内容的方式,来避免进行集合遍历的方法。

基本语法

比较运算符
  • = , == : 判断两个表达式是否相等
  • = , => : 判断左边表达式的值是否大于或等于右边表达式的值

  • <= ...

Read more