Tech

主流React Native组件库比较

本文比较React Native(以下简称RN)的三个组件库:NativeBase、Shoutem、React Native Elements。方法是制作一个在Expo中运行,包含读取Wordpress文章列表,显示文章内容,以及一个登录表单界面演示的App,对比三个组件库在使用层面的差异,不涉及源码质量、平台设备兼容性相关的问题。 NativeBase GitHub: https://github.com/GeekyAnts/NativeBase npm: npm install native-base –save Demo: NativeBase-demo 列表 登录 如果只考虑组件丰富程度,首推NativeBase。比其他两个库多了Drawer,FABs,Footer Tabs等组件。设计哲学是尽量使用JSX,减少props来增加灵活性。组件名也是按照HTML的习惯(Content/Header/Footer),前端可以很快上手。使用这个组件库连RN的View都可以省掉,它提供了Container。但这也导致会受限于NativeBase本身,比如我自己想给一些组件用TouchableOpacity就尝 …

Continue Reading
Product

中国艺术品的SVG

来自服装行业某客户的需求,设计一个比较有中国特色、不用于Logo的图形。前段时间各种博物馆主题很热门,根据国博的服饰类藏品绘制了一批,分三大类:动物、图案、形状。除了定稿的,其他备选的还有十多个,虽然只是半成品,但毕竟是人工,删了可惜所以传博客上。 动物 形状 图案

Continue Reading
Tech

隐介藏形——ReactJS源码索引

React的设计经常被讨论,但因为相关文件很多,源代码读起来比较累。正好最近看到Under the hood:ReactJS这个项目分享了React核心代码的流程图(MIT协议),取其中几张写成这篇文章供阅读源码时作为目录索引。 文章分4部分: ReactDOM.render&ReactMount Transaction Mount this.setState 源码以v15.6.1为例,不会直接复制大段代码,主要是以超链接链到github源码对应的位置——通常是链到函数被调用的位置,少数情况会链到申明的位置。核心代码当然会涉及VDOM和事件代理,网上相关文章非常多,本文不再赘述,官方文档中已有的内容也会尽量省略。流程图是svg格式,图形填充颜色根据不同文件使用不同颜色。以iframe标签嵌入。这是兼容性最好的方式,但不知道这篇文章会被爬虫带到哪,以及各种RSS阅读器是否支持,所以附上原文地址:dmyz.org/archives/983

Continue Reading
Tech

用Fabric描述区块链(Blockchain)

从2006年到现在,云计算、NOSQL、大数据、机器学习、人工智能……隔一年半载就会有某种技术成为热点,诡异的是当这种技术成为热点后,就变得看不懂了。比如区块链,这两年已经变成了“有巨大潜力颠覆行业,创造让人们参与其创造价值的繁荣世界”“彻底改变人类社会文明”的技术。关于区块链的原理网上有很多浅显易懂的文章、视频,本文只讨论技术上的使用,结合Fabric(v1.0-alpha2)来说明。 Fabric没有看到图灵完备的描述,区块链用来保存记录,这些记录被称为block,每个block包含时间戳和上一个block的信息。所以技术上来说,Fabric的区块链是一种分布式数据库。transaction可以类比数据库的查询操作,但只能创建和移动。在Fabric中,区块链数据由State和Ledger构成,State为key-value结构,支持put/get操作;Ledger保存所有对State的、成功的操作,每个Peer都有一份Ledger。 上文提到的Peer,是Fabric的一种节点,有Committer和Endorser两种角色。Fabric有三种节点:Client/Peer/Orderer。Orderer提 …

Continue Reading
Other Time Capsule

互联网技术人员广告行业生存手册

2013年转入广告行业,先在Omnicom,当时正闹着和Publicis合并,部门被拆于是跟着同事一起转到WPP,最后在电通安吉斯稳定的度过了余下时间。如今再次计划转行,以后时间有限,所以先总结期间所见所想,希望能为转行到广告行业的互联网技术人员(如果有的话)提供一些参考。 首先,广告跟互联网一样都是分工细化的行业,某人在广告公司上班就让他给你的微店做宣传跟让搞IT的人给你修电脑装修QQ空间一样,所以要先界定个范围:我是在媒介购买的广告公司内从事程序化广告产品相关的工作。然后,根据下图再做进一步说明:

Continue Reading
Python Tech

GraphQL+Django提供基本API

GraphQL是Facebook去年开源的一套数据查询语言,对于大型系统,GraphQL提供一种灵活的访问通用数据的方式。当时正好有一个项目,需要前端调用后台的数据(Express+Postgresql)实现图表展示,我就从Postgresql里把数据导出成JSON文件(后来用Promise改成直接查询数据库),前端直接用GraphQL获取自己需要的数据,后台就省掉了制作API、写SQL的工作,运行至今基本稳定。 前两个月发布了graphene-django,做的事情不多,但可以搭配其他插件例如django-filters来实现更丰富的查询。GraphQL的优势在于查询语句的通用性和易读性,相比REST架构来说时间较短还不够成熟,如果是复杂需求后台的开发量仍然不小,现阶段在生产环境用Django做一个API服务还是rest framework等成熟的方案会更好。本文实现一个针对Django自带的User Model的简单API。 环境: Django 1.10.4 graphene-django-1.2.0 Setup 安装graphene-django,如果是新建Django项目,创建后执行migrate创 …

Continue Reading
Other

[转]谈史学论题选择

讲者:严耕望 教授 日期:一九八零年十月廿三日(星期四) 时间:五时至六时三十分 地点:新亚书院人文馆十二室 谈史学论题选择 研究历史,首要的是选择题目。就小范围说,是一篇专门论文题;放大些说,是研究范围,也可说就是:面。无论是一篇论文题或一个研究的广面,对于研究的成绩及其所发生的影响都有极大关系。关于此一问题,我想分下面几点谈论。 (一)具体问题与抽象问题 历史上的某些问题比较具体,某些问题比较抽象,当然这很难划分,但无可否认,可作大体的划分,例如就大范围说,学术思想文学艺术问题比较抽象,政治经济民族社会问题就比较具体。这其中也各有程度的不同,例如学术又比思想具体些,政制又比政事具体些。前辈学人中,如陈寅恪先生喜欢讲比较具体些的问题,少论抽象问题。这在俞大维先生写的《怀念陈寅恪先生》一文中已明白讲到。 综观陈先生的全部论著明显的有此倾向。再如陈援庵先生,更是如此。他的《中西回史日历》,不但具体,简直就是一项机械工作,其功不细!我个人也喜欢研究具体问题。我的主要工作涉及两大范围,一是政治制度,二是历史人文地理,都是具体性,少涉抽象性。 我认为研究工作,为把稳起见,最好多做具体问题,少做抽象问题。研究具体问题, …

Continue Reading
Front Python Tech

用django-webpack-loader实现Django和Webpack的绑定

django-webpack-loader是Django去年的热门App之一,实现Django和Webpack的绑定。做法很简洁,就是用一个nodejs模块处理Webpack的输出,Django再去读取这个模块生成的JSON文件,加载对应的bundle文件就行了。最近在cygwin里重新部署了一次,分享其中的关键点。环境是: Django 1.9.5 NodeJS v6.0.0 Win7(64)+Cygwin2.4.1 场景是将现有的一个Django项目,转成用Webpack来处理静态文件。因为没有执行npm init,安装时会提示找不到package.json,一些常见的基础配置、错误提示等本文不会涉及。

Continue Reading
Tech

Python读取Outlook的日历

公司的会议预订系统使用Outlook,要读取这些预订记录传到部署在阿里云的数据库。Exchange服务器没办法从外网访问,就在内网某台机器上写了一个脚本,定时执行,来从Outlook中读取日历上的预订记录。 模块:pywin32 (http://sourceforge.net/projects/pywin32/) 环境:Windows 2008 + Outlook 2013 + Python 2.7.8 Filder & Items 因为从来没做过Windows开发,所以先看了一遍文档,主要的概念是Folder(https://msdn.microsoft.com/EN-US/library/ff866772.aspx)。 所以其实就是要读取Outlook中名为Calendar的Folder,要获得会议预订记录,取出Folder的Items进行迭代就可以了:

Continue Reading
Tech

Linux设置iBeacon支持微信摇一摇

今年微信的摇一摇开始支持iBeacon了,淘宝上冒出一堆卖iBeacon基站的店铺,价格也比之前便宜许多。只是在开发测试阶段,直接用现有的设备会更简单,手头有一个USB蓝牙适配器,于是用Linux机器改造成iBeacon基站了,本文记录设置的步骤。前两年iBeacon刚发布的时候,有篇很火的文章指导如何用Raspberry搭建iBeacon基站(DIY Beacon with a Raspberry Pi),本文有参考那篇文章,只想实现iBeacon基站,不关注微信设置,也建议直接看原文。 蓝牙设备需要支持BLE(Bluetooth Low Energy,低功耗蓝牙)且是4.0版,我买的这个是CSR8510芯片,淘宝价格30元以内。以下设置在Ubuntu 14.04,Openwrt(ZTE Q7+r47026)和Raspbian(cb799af)中测试通过。一些APP(例如beacon-toolkit)和脚本(例如linux-ibeacon)可以简化配置。 微信设置 首页进入微信摇一摇后台(https://zb.weixin.qq.com/nearby/index.xhtml),点击左侧『页面管理』进入页面点 …

Continue Reading