一段过渡期,尽力过好生活

在冬天的夹缝里,似乎得了冬季无力症一样懒洋洋的。

开始了一个新项目,从粗糙上线,到自己在纸上设计,在Storyboard上画页面,不断完善和构想,不得不说过程是一件很有意思的事情,是只有做自己的东西才会有的一种感觉。

一些提升幸福感的物品清单:

  1. 胡桃木手机支架。买了两个,一个用来放手机,一个放Kindle,可以边看喜欢的书边做笔记。
  2. 胡桃木的理线器和魔术理线带,把杂乱的数据线都整理了一下,感觉世界干净了。
  3. 胡桃木的咖啡搅拌棒和黄油刀。
  4. J.Herbin钢笔清洗液。定期清洗所有的钢笔。
  5. 红酒真空塞。可以抽干瓶里的空气,喝不完的红酒可以多存储几天。
  6. 木质调香水。感觉适合自己现在的性格,比较冷清。
  7. Longines名匠腕表,喜欢机械在运行时的那种存在感。

To travel the world alone. ​

过了一段迷茫又坚定的时光,一些沉淀很久的感觉时不时出现,那么真实又那么轻,动弹不得。

每天在努力工作,努力Coding,努力规划未来。

最近想尝试的东西有很多:

  1. 学习一些新领域的东西。
  2. 学习一门新语言。
  3. 想在Moleskine Passions Wine本子上写红酒日记,想喝更多好喝的酒。
  4. 听一些不同的音乐。
  5. 尝试换一种木质调香水。
  6. 剔除一些情绪或者记忆,也就是试着更平静。
  7. 努力变得更聪明,SAVE TIME。

bootstrap-treeview的一些使用方法

bootstrap-treeview是一款基于bootstrap的jQuery多级列表树插件。下面记录了一些我在开发过程中的使用方法:

1.如何给子节点添加不同的背景颜色?(效果如下图)

代码如下(开发语言为PHP,框架为TP5):

$nodes = model('Chapter')->field('chapter_name as text,chapter_id,chapter_pid,grade_id')->where('chapter_pid='.$chapter['chapter_id'])->select();
foreach($nodes as $node) {
    $node['backColor'] = '#e9e9e9'; //给每个子节点添加背景颜色
}

2.如何给节点添加链接?

如上图,我希望点击子节点跳转到另一个页面,于是需要给子节点添加链接。

bootstrap-treeview中有一个href属性,用于给node添加链接。代码如下(开发语言为PHP,框架为TP5):

foreach($nodes as $node) {
    $node['href'] = Url::build('index/doexam',['cid'=>$node['chapter_id']]);  //给每个子节点添加链接
    $node['backColor'] = '#e9e9e9';  //给每个子节点添加背景颜色
}

刷新页面后发现刚才添加的href属性并没有生效,查找文档发现,需要在treeview初始化的时候配置一下enableLinks属性,前端代码如下:

$('#tree').treeview({
    data: data,
    highlightSelected:false,
    enableLinks: true //设置链接可用
});

2018年7月夏天

很久没更文章了,过了一段焦虑和忙碌的时光。克服了一些小困难后时间又重新静了下来。

天气闷热的时候仍然烦躁不安,找一些安静的文字看,用钢笔写一些文字和计划,内心会安静下来。很多计划已经开始落实到纸张上,觉得更踏实。

最近读的书都是安静的文字,适合夏天的天气,容易反省自己,让自己更安静和明亮。白天喝咖啡,好好工作。晚上运动,喝茶,工作,写字,让时间充分利用起来。对身边的人逐渐温暖和宽容起来,觉得是内心安定的一种好现象。

可能不是抑郁是真惨

身边的人最近好像都抑郁了。自己也是一样。好像进了一个轮回的怪圈。

生活本身好像真的很平淡,每天做着一样的事情,做梦梦见的人也就那么几个,喜欢的歌也只有那几首,吃的食物也就那么几样,每天一样喝咖啡,coding,写ToDo清单,每一天不努力的每一秒钟都在恐慌。

有时候问自己,你有多想成功,很想吗,到底有多想,想到像溺水时渴望呼吸那么想吗。

于是给了自己两个选项:

A.保持热情,只往高处看。

B.保持平静,享受现在的生活。

我最后选A。

关于Side Project

没有终局的成功,也没有致命的失败,重要的是继续前进的勇气。

每天都好多事要做的感觉,最近有些急于求成了,觉得很烦躁,需要调整心态,做好眼前的事情。

每天早上先用爱乐压泡一杯咖啡,省时省力,如果来得及就去咖啡店买。到公司先查看一些数据,邮件。然后在活页纸上列一份TODO清单,逐个完成,从小事做起。每天TODO清单完成度还是很高的,基本上定下来的目标都完成了,有每天内容的维护,也有新功能的开发。

喜欢国誉的网格纸,纸质很好,写感也不错。写清单画原型都是不错的选择。打算用完这些再屯一批。

下午花了两个小时的时间写了一个自动化的脚本,每次更改数据都会自动导出,打包,上传,感觉节省了不少工作量。

最近需要合理分配下时间和任务,不要过分消耗自己。

总结下2018年4月

最近这个月感觉每天好多事要做:

处理公司的项目
回家做Side Project的设计和开发以及上线
发愁项目的运营和发展方向
完善功能和产品的改进和优化
写工作计划和总结

最近在读《The Art of SEO》, 打算坚持读完,总结经验。

感觉小事做好了,大事就成了。

总结下Django开发过程中的一些技巧和问题

1.Django中使用json.dumps( )方法,返回数据到模板中引号被转义

可使用Django中的escapejs过滤器, escapejs filter可以替换value中的某些字符,以适应Javascript和Json格式:

{{ data | escapejs }}
2.将Django的Model独立出来

一开始我项目中的Model全部写在框架默认的models.py文件里,后来随着数据库表逐渐增加,代码越来越多,考虑把Model独立出来。

(1)首先在项目根目录下创建一个model文件夹,然后在model文件夹中创建__init__.py文件。之后分别为每个表创建一个独立的model文件。

目录结构如下:

└── myproj
    ├── views
    ├── static 
    ├── templates
    ├── model
    │   ├── __init__.py 
    │   ├── user.py
    │   ├── article.py
    │   └── category.py
    ├── apps.py
    └── models.py

(2)然后在models.py中import model文件夹中的文件:

from myproj.model.user import User
from myproj.model.article import Article
from myproj.model.category import Category

(3)之后就可以执行migrate:

python manage.py makemigrations
python manage.py migrate
3.在Django中如何引用自定义全局设置

settings.py文件中增加一个常量SITE_NAME:

SITE_NAME = 'My Website'

然后在需要用到此常量的view中导入配置文件

from django.conf import settings

最后使用我们自定义的这个常量:

website_name = settings.SITE_NAME

如果你定义的是一个字典:

SITE_INFO = {
    'SITE_NAME'        : 'My Website',
    'SITE_DESCRIPTION' : 'This is my website.'
}

使用方法如下:

website_name = settings.SITE_INFO['SITE_NAME']
website_desc = settings.SITE_INFO['SITE_DESCRIPTION']
4.Django中如何在模板中引用自定义全局设置

参照 http://stackoverflow.com/questions/433162/can-i-access-constants-in-settings-py-from-templates-in-django 中的几种方法,选择了一个最简单的方法,直接使用了django-settings-export第三方库

(1)首先安装django-settings-export库(我的开发环境是python3.6,系统环境是Mac OS):

sudo pip3 install django-settings-export

(2)然后在settings.py中引用,代码如下:

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR + "/templates",],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
                 ...
             'django_settings_export.settings_export'
         ],
     },
  },
]

(3)然后在settings.py中新增一条配置:

SETTINGS_EXPORT = [
    'SITE_NAME',
]

(4)最后在模板中使用:

{{ settings.SITE_NAME }}
5.Django中自定义用户认证User模型后出现警告。

proj.User: (auth.W004) ‘User.username’ is named as the ‘USERNAME_FIELD’, but it is not unique.
HINT: Ensure that your authentication backend(s) can handle non-unique usernames.

USERNAME_FIELD是描述User模型上用作唯一标识符的字段名称的字符串。这通常是某种用户名,但它也可以是电子邮件地址或任何其他唯一标识符。字段必须必须是唯一的(即在其定义中设置unique=True)。然后设置USERNAME_FIELD = ‘字段名’。

代码如下:

# 用户模型
class User(AbstractUser):
    userid     = models.AutoField(null=False,primary_key=True)
    username   = models.CharField(null=True,max_length=64)
    realname   = models.CharField(null=True,max_length=16,default = '')
    userphone  = models.CharField(null=True,max_length=64,default = '')
    password   = models.CharField(null=False,max_length=255,default = '')
    useremail  = models.CharField(null=False,max_length=64,default = '',unique=True)
    USERNAME_FIELD = 'useremail'
    userintro  = models.TextField(null=True)
    userphoto  = models.ImageField(null=True, upload_to = 'avatar',storage = ImageStorage())

2018年4月的目标和想法

巨大的无力感,活得越久就越觉得,生命漫长又凄凉,你每走一步都是要耗力气要付出代价的。

跟小伙伴研究我的Side Project的设计,定了域名。自己做了一些计划,列了ToDo清单,打算明天全部修改好,然后买几本一直想看的Kindle版小说。

目前只要关注眼前的事就好。要把每一件事做到应该抵达的地步。

像麦田守望者里说的,我要赚钱建一个自己的小木屋,余生就在那里度过,我要订个规矩,谁都不能在这做什么虚伪的事,谁要做谁就滚。

最近看的小说阿加莎比较多,也算半个阿加莎迷了。

最近剧荒,没事重新翻出汉尼拔来看,拔叔超帅,字写的也好看。

四月份的目标:

  1. Side Project上线
  2. 坚持学德语
  3. 坚持练字
  4. 坚持读英语原著
  5. 坚持写读书笔记