Change My World by Program

0%

本讲将会介绍GraphQL的基础语法,毕竟业务永远都离不开增删改查。

除“读“操作可以直接与数据库model相映射以外,跟”写“有关的操作的后端定义依然是需要自己去实现业务相关的映射逻辑的。当然,无论读写都是需要定义相应的Model的,可以在Web上面查看已经定义的Mutation:

阅读全文 »

前面几讲讲了理论层面,大家应该对GraphQL不再陌生了。这里简单讲述一下本教程demo的搭建方式。

代码目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
.
├── Dockerfile
├── LICENSE
├── Pipfile
├── Pipfile.lock
├── README.md
├── database.sql # 初始数据库
├── db.py
├── managers # 封装数据库操作
│   ├── __init__.py
│   ├── article.py
│   ├── author.py
│   ├── comment.py
│   ├── ordinary_writer.py
│   └── professional_writer.py
├── models # 数据库映射对象
│   ├── __init__.py
│   ├── article.py
│   ├── author.py
│   ├── comment.py
│   ├── ordinary_writer.py
│   └── professional_writer.py
├── mutations # 操作变更定义
│   ├── __init__.py
│   ├── article.py
│   ├── author.py
│   └── comment.py
├── run.py # 主程序
├── schemas # 模型数据结构定义
│   ├── __init__.py
│   ├── article.py
│   ├── author.py
│   ├── comment.py
│   ├── interfaces.py # 接口schema
│   ├── ordinary_writer.py
│   └── professional_writer.py
├── settings.py # 数据库连接配置
└── web_template.py #
阅读全文 »

对于简单的GraphQL查询,其实很简单,任何一个会CRUD的开发者都知道,使用简单的if … else … 就能实现逐字段的遍历查询。这也就是GraphQL的核心算法,只是针对每个字段,GraphQL会提供一个resolver去实现特殊的字段获取方式,详情可以看demo代码,例如: https://github.com/haoflynet/graphql-tutorial/blob/master/schemas/article.py。

假设有这样一个查询:

1
2
3
4
5
6
7
8
{
articles {
title // SEELCT `title` FROM `articles`;
comments {
content // for id in article_ids: SELECT `content` FROM `comments` WHERE `article_id`=id;
}
}
}
阅读全文 »

GraphQL发展至今,已有Github、Facebook、Airbnb等大厂在大量地使用,大厂在使用的过程中,不断地进行技术沉淀,也诞生了许多实用的开源工具。这里重点介绍Github的Awesome系列awesome-graphql,它列举了Github上面开源的并且十分有用的graphql相关的服务端、客户端以及生态链相关的其他工具。graphql发展至今,已有非常完整的开发语言支持,主流的语言Javascript、Python、Java、PHP、Ruby等都有各自的服务端与客户端实现,在awesome-graphql上还有部分语言的实现参考示例代码。这里简要介绍几个常见的库:

Apollo-Client: 算是最知名的GraphQL客户端了,因为它是Javascript的客户端。功能丰富,可用于不同的服务端及前端。

GraphiQL: 一款运行于浏览器的GraphQL IDE,几乎所有的服务端库都会提供这么一个经典的web页面。该页面是一个单页面应用,可以直接在其上运行查询语句,自带代码补全和校错功能,直接查看GraphQL所有的文档(定义好的Schema),比如Github API的在线文档,登录后就能在线发送真实的请求获取到我们想要的数据。由于我们之后要进行实践教程,所以这里有今后用于实践的真实的Web端,访问地址为: https://project.haofly.net/graphql。

阅读全文 »

多年前,我喜欢用sublime,那时候我主要开发的是Python这种很简单的脚本语言,后来接触了IDE才发现,对开发者来说,编辑器真的只是暂时的工具,真正能提高大幅度提高开发效率的绝对是功能完整、适配性强的IDE呀😂。

阅读全文 »

看了文约小强的简介,又看了电影版《流浪地球》的预告,我抓紧时间将原著看完了,只花了大概一两个小时吧,表示从来没看过这么短的短篇小说。不过作者正是《三体》的作者刘慈欣,作者具体是个什么样的人我不了解,但是提起中国科幻,肯定是不能不提到他的。

阅读全文 »

公司封网,这两天除了大致规划明年工作计划以外,也顺手整理了今年的一些笔记,记录下这些Tips,不过有很多都不知道出处了。

阅读全文 »

盼望着盼望着,米家的智能家居终于能用苹果的Siri直接控制了,终于不用自己去搭homebridge了。我至今没有买小米家的智能音箱,是因为我相信有一天绝对能用Siri直接控制的,这一天居然真的来了。小米音箱和siri虽然都是通过语音控制,但却是两种不同的媒介,一种必须拿起手机先喊siri,一种必须依赖音箱。我更喜欢前者,因为我能做到哪儿都拿着手机,但不能做到每个房间一个音箱。这个音箱拿来录录抖音倒还可以。

夏洛克智能贴锁M1

299的价格实现每天不带钥匙出门,比动不动就上千的指纹锁性价比高多了。其原理就是将钥匙插入锁孔,然后由手机连接蓝牙,蓝牙控制贴锁,贴锁转动钥匙实现开门。因为必须用蓝牙,所以不必担心远程误开。但是有些人质疑其实用性,这样出门虽然不带钥匙了,但是必须带手机呀。我想说的是,很多人买指纹锁、智能锁的主要目的不就是不带钥匙吗,又不是不带手机,谁出门不带手机的,并且即使哪天手机没电或者手机真没带,也能通过别人的手机登录自己的帐号,或者让已经被分配钥匙的人来开门就好了。这是除路由器以外我现在实用最高频率的米家产品了。

小米万能遥控器

我通过它实现了控制家中的乐视电视、松下吸顶灯和艾美特风扇。其中电视和灯在遥控器里面都有现成的红外线模板,风扇没有,但是提供了学习功能。遥控器放在客厅,主要控制客厅的红外家电,非常实用。

小米路由器

路由器普遍内存和硬盘比较小,能少折腾就少折腾。

阅读全文 »

GraphQL exists because JavaScript developers finally realized HTTP API’s were too limiting so they reinvented SQL over JSON because JavaScript developers are obsessed with reinventing everything into JSON API’s。 ——@kellabyte

GraphQL 的本质是程序员想对JSON使用SQL。 —— 来自阮一峰的翻译

上面这句话是我见过的对GraphQL的存在最精妙的解释了。

维基百科上的简介是:GraphQL是一个开源的数据查询和操作语言及实现为了实现上述操作的相应运行环境。GraphQL诞生于2012年,之后则是由其创造者Facebook在内部使用。自它被发明以后,一直在默默无闻的改进中,直到2017年,Github正式发布了它V4版本的API(V3版本的规范就是我们熟知的Restful API),这才让GraphQL走入了包括我在内的大多数程序员的视野,并一度成为开发者讨论的热点。

阅读全文 »

自从有了自己的总结及计划模板后,发现写年终总结和新年计划就方便多了,把去年的拿来小改一下就好了。

2018总结

2018年的清单完成率仅有9/26,这完成率比2017年还低。

haofly

  • 博客: 日均40+。实际UV 1.6W,PV 1.9W
  • 微信: 继续朝100+迈进。实际居然只有39,不知道写什么了。
  • 微博: 365+条。这个是肯定没达到的。毫无动力。
  • 阅读: 12+本。今年只看了七本。大多时候是忘记了还有阅读这回事儿。
  • Github: 新开12+个项目。Github新开了2个,Coding新开4个,只达成了一半。原因很简单,更专注于其中某几个项目了。
  • 智能家居: 至少两次,让家里更智能。还好年底米家接入了siri,算是一次吧。
  • 涨工资。小涨一点,离预期差很远,明年依旧有很大可能跳槽。
  • 尝试新技术: 区块链、serverless、Elasticsearch、Go语言、Ruby语言。学习了Go语言、Java语言、小程序开发并上线实际项目、React Native的开发、认真研究了GraphQL并在公司上线实际项目
  • 每月检查这份计划🤣。很明显没做到。
  • 继续猛补美剧。补了《冰与火之歌》、《行尸走肉》、《生活大爆炸》,后面补了一些优秀的动漫,动漫才是最难补的。

理财

  • 整理全家人的保险状况,合理购买保险。给爸妈还有自己配置了保险(爸爸是自己买的)。
  • 试水股票,主力仍然是基金12+ (为防10年一次的经济危机,今年需更谨慎)。还好谨慎没买,不然18年肯定亏成翔。
  • 坚持每天记账。已经养成习惯了。
  • 买如下物品
    - [x] 落地10万以下代步车: 当然是借钱+按揭啦。终于提车了,女朋友出的钱比我还多,唉。
    - [ ] 3T监控硬盘: 家里两块绿盘虽然没什么问题,但是7*24小时还是有点担心,那么多的优质资源不是一两年就能搜集完成的。家里的盘居然又坚挺了一年。
    - [ ] 客厅空调or卧室电视: 解决夏天在客厅看电视太热的问题。实在没钱了。
    - [ ] 三亚旅拍婚纱照: 至少需要预订。预订了重庆金夫人的,仔细想想,旅拍没必要,以后每年都会去旅游、拍照的。

健康

  • 平均每天1w+步。日均7.4k步,没达成的原因是今年发现少吃一点就能很容易的减肥了。
  • 每周一次运动量大一点的运动。没完成,同上
  • 每周至少一次大扫除。没完成,最后一个季度,真的太冷了,不知道为什么今年这么怕冷。

情感

  • 确定结婚时间。2019年国庆。
  • 和女朋友省外旅游至少一次。没完成,12月买的车。就年底去南川玩儿了一下。
  • 和女朋友去电影院看所有9.0以上的电影。今年是最穷的一年。而且一直期待家旁边的万达开业,结果他们一直拖到了年底才开业。
  • 带家人旅游至少一次
  • 招待新老朋友聚会至少两次
  • 家人生日尽量回家

2018年博客访客统计

2018年博客访客统计

2018年消费支出趋势

2018年支出趋势

阅读全文 »