罗晨汛

罗晨汛

移动互联网开发者

1 列表推导式

列表推导式可以省略掉循环中创建空列表、迭代添加元素等操作,从而简化代码并提高执行效率。
列表推导式通常比循环更加简洁高效,而且在大多数情况下不会影响代码的可读性。

1
2
3
4
5
6
7
8
def get_group_names(self, user):
group_names = []
for g in user.groups.all():
group_names.append(g.name)
return group_names

def get_group_names(self, user):
return [g.name for g in user.groups.all()]

2 参考文献

1 MVC 模式

MVC, 全名 Model View Controller, 是软件工程中的一种软件设计模式 (常用于架构层面),把软件系统分为三个基本部分:模型 (Model)视图 (View)控制器 (Controller)。分层的好处很明显,把一团软件代码分成职责分明的层次,每一层有其专注的领域层与层之间也有明确的接口,实现上可以分层实现,哪层实现的不好重构之对整体也影响不大 。具有耦合性低,重用性高、生命周期成本低等优点。

  • Model(模型): 简而言之即 数据模型模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系 。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等),以及一些数据层面的业务逻辑。Web 开发框架会根据模型的定义来自动生成数据表。
  • Controller (控制器):应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)。
  • View (视图): 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?用户输入的数据给又谁?为了降低系统的耦合程序,中间就会抽像出控制器一层做为两者的桥接。

MVC 最大的优点是实现了软件或网络应用开发过程中数据、业务逻辑和用户界面的分离,使软件开发更清晰,也是维护变得更容易。这与静态网页设计中使用 html 和 css 实现了内容和样式的分离是同一个道理。

DjangoMVT 设计模式由 Model (模型) , View (视图)Template (模板) 三部分组成,分别对应单个 app 目录下的 models.py, views.pytemplates 文件夹。它们看似与 MVC 设计模式不太一致,其实本质是相同的。MVT 模式其实是一种特殊的 MVC 模式的实现

阅读全文 »

Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MTV 的框架模式,即模型 M,视图 V 和模版 T。

有趣的是,这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统) 软件,并于 2005 年 7 月在 BSD 许可证下发布。所以使用了 Django 后我们会发现,其“集成管理后台”、“模板页面”等设计思想偏向于帮助人们快速实现一个 CMS(毕竟其前身就是一个CMS,并从中抽象而得之)。

Django 的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以 “插件” 形式服务于整个框架,Django 有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得 Django 具有很强的可扩展性。它还强调快速开发和 DRY (Do Not Repeat Yourself) 原则。Django 框架的核心组件有:

  1. 用于创建模型的对象关系映射;
  2. 为最终用户设计较好的管理界面;
  3. URL 设计;
  4. 设计者友好的模板语言;
  5. 缓存系统

也因为其良好的设计与简单、快速的特点,常用于快速构造中大型内部系统。

阅读全文 »

1 And Design Pro 是什么?

And Design Pro(官网),我们一般也将之简称为 antd pro,是Ant Design 的升级版。如果你接触过Ant Design(常简称之为 antd),antd 是基于Ant Design 设计体系React UI 组件库,主要用于研发企业级中后台产品。

antd pro 则在其之上,增加了 umiJS 的扩展加成,提供了路由、国际化、权限管理等功能,从而成为一整套企业级的中后台前端解决方案,从 AntD 官网介绍可以看出:

Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景的最佳实践,也十分期待你的参与和共建。

也就是说,And Design Pro 是不仅是一套前端开发框架,更是一整套的中后台前端解决方案,在力求提供开箱即用的开发体验,为此我们提供完整的脚手架,涉及国际化,权限,mock,数据流,网络请求等各个方面。为这些中后台中常见的方案提供了最佳实践来减少学习和开发成本。

本章我们会了解 antd pro 的大概,了解antd pro是什么、目录结构大概,然后创建一个基础项目并运行之。

阅读全文 »

编码是将信息从一种新式或格式转变为另一种形式的过程,在计算机硬件中,编码就是利用代码来表示各组数据资料,使计算机能够读懂这行代码并对信息进行分析和处理。

统一代码规范,就是统一代码的组织方式,让团队以最优的、一致的方式及组织代码,从而减少额外的阅读代码的负担。

阅读全文 »

PM2 是一个带有负载均衡功能的 Node 应用进程管理器。是管理 node 服务器的良好工具。其具有以下主要特性:

  • 内建负载均衡(使用 Node cluster 集群模块)
  • 后台运行
  • 具有 Ubuntu 和 CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口 API(Nodejs 模块,允许和 PM2 进程管理器交互)

官网 ==>

阅读全文 »

苏格拉底是古希腊著名的思想家、哲学家、教育家。他和他的学生柏拉图,以及柏拉图的学生亚里士多德并称为 “古希腊三贤”,被后人广泛地认为是西方哲学的奠基者。

而苏格拉底提出了著名的人生哲学终极三问:“我是谁、我从哪里来、我要到哪里去?”

为何这会被称为终极三问?因为这些问题表面上简单,其实很难回答上来。我是谁?很多时候你以为你知道你是谁,其它你只知道自己的标签。我是一个程序员、我是一名父亲、我是一名党员,那么终究到底除却这些标签后,你还是谁呢?你是从哪里来的,你要到哪里去?

技术也是一样的,我们常常只对一个技术留于表面,比如我们知道 面向对象编程,那什么是 面向对象,他的本质是什么,这个技术或机制是怎么设计出来的,为什么要这样设计,我们常常选择性忽略这些问题或满足于对其的一知半解。而 技术三问系列 就是这样的一个自醒的专题,我希望在这里记录下我对这门技术的认识,并要求自己不断地追求探索,企图了解更多其中的奥妙与真谛。

其中对于每一个技术点我都希望遵循这样的结构(下面的 XX 代表每章要讲的内容,有些摘录的文章会直接抄录原文的内容,注明是【转】的,并给出原文作者与地址):

  1. 是什么:XX 是什么,尽自己最大能力说明 xx 的作用、本质、及是如何产生、实现、应用的。
  2. 为什么:XX 是为了解决什么问题,解决这个问题有些什么现有的方法,为什么要用 XX。
  3. 怎么样:XX 的设计与实现是怎样的,XX 是怎样工作来解决问题的。
  4. 还能怎样:进阶应用,怎样优化 XX,还有哪些延伸的应用。
  5. 操作:命令、代码、步骤记录。更 贴近实际项目与产品,尽量结合实际工作中的经验、工具、流程。
阅读全文 »

1 什么预处理器

  • CSS 是什么;
  • CSS 的缺陷;
  • CSS 预处理器 是为了解决什么问题?
  • 常见的几款 CSS 预处理器:Sass, less, Stylus, Scss

CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中。

阅读全文 »

一个人可以被毁灭,但是不能给打败。

-- 海明威

朋友,当你路过上面这句话时,请放慢“眼步”,如果可以的话,请你记下他。他将是你在孤独无助时、在挑战面前欲要退却时、在困难降临顿感彷徨时的一座支点。请你好好收入心里,他能助你直面挑战、挺过艰难。这些年,当我面对潮水般挑战与质疑时,就是如此心中默念着这句话,微笑地挺过去。

但如果是几年前,你跟我说这句话,我可能会不屑。因为多年前,我不知在哪看的文章还是段子,上面说硬汉如海明威也是死于自杀。嘴上说着虽然不能被战胜,但实际上在病痛面前还是服了软。不仅不硬,而且还虚伪!

直到后面偶然读之传记,被其朴实、坚定、铁汉深情的人格所感动,方知网上段子之可恨。海明威固然是自杀,但那只是他给风烛残年、饱经伤病的自己的一个了断,留下如此多真切的作品的他并没有被打败。

这让我想起了近来很流行的“塌房”文化,人们面对众多明星(当然,这也和如今很多明星确实够不上榜样有关),心中总默想着他们垮掉的那一天。仿佛名人在哪方面取得什么成就,完全没有他们在哪方面跌倒或出错来的有价值。就像《白鹿原》上的黑娃看待白嘉轩,“这个人的腰杆太直了”,总要将之打折才解气。

流行的“塌房”与“撕逼”文化容易遮蔽我们的双眼,但这其实并不意味着当今的人就比老一辈多了戾气、心里更阴暗。其实这也是如今互联网信息大爆炸引起的现象,名人的行为与日常借助于网络,被无限地放大。你看,老一辈的偶像,我们只能从其作品、成就、顶多访谈或传记去了解他;而如今,名人的各种行为、随意的一句话都会被迅速流传,“不识庐山真面目,只缘生在此山中”,我们往往不容易察觉身边人的可敬之处,有时也是因为太近了,优点与缺点同时都被放大了。

鲁迅有篇箸名的散文 –《战士与苍蝇》,讲的就是这样的故事。战士倒下后,伤口淌着血,这时苍蝇们嗡嗡地凑了过来,营营地叫着,自以为发现了不朽的伤痕,得意地高叫。然而,有缺点的战士终竟是战士,完美的苍蝇也终竟不过是苍蝇,迅哥如是说。

当然,大多数人如我,并无能力成为战士,我们力争不要成为苍蝇吧!让我们抛开杂念,沉浸经典,走进海明威,从《老人与海》开始。

0%