兰林

Results 113 issues of 兰林

### 诞生背景 Facebook 构建移动应用的时候,发现 RESTful 和他自家的 FQL 都不能够很好的解决 API 的一个关键性问题: > 如何用同一套 API 满足所有的扩展需要?不管是 WEB 的,还是移动的,还是其他的? 于是,GraphQL 诞生了。 赞美那些脑洞大开的攻城狮们!让我们这些渣渣程序猿又 OUT 了一个档次。 GraphQL 概念的完善应该从 2012 开始。然后,到了 2015,社区正式成立。 ### 核心概念 ![image](https://cloud.githubusercontent.com/assets/3468024/26678432/182d348a-4703-11e7-9d43-bb50dbf47f9a.png) 如图,有点像...

重要
生僻

### 背景 程序员普遍面临这样的场景,随着项目规模的增大,交互的复杂越高,开发难度也越来越大。架构问题越来越尖锐,为了解决各种耦合性和灵活性等等的问题,大家想出了各种各样的招数。什么模块化,微服务之类的也随之诞生。 总之,我们既希望某些东西是分散(甚至是分布的)的,又希望以统一的方式来组织起他们运行。从字面上看,模块化以及微服务是做到了分散的问题,貌似缺乏统一协调的解决办法。 从实际的应用来看,貌似也是这个样子,大家在分散这一块的理解和做法很多地方都很相似(比如切分成模块,切分成微服务等等)。但在统一协调方面的处理方式就千差万别了。比如可能通过各自模块的接口来直接相互调用,比如架设一层专门的控制层来编排调用逻辑,比如直接由客户端自己来调用和组织交互等等。也许我理解和学习不到位,反正看到的这些情况很多。 但是,我们往往会遇到一些这样的情况,在某些关键节点之后,我们需要对不确定的服务或模块进行调用。或者叫做通知更恰当。 比如,当一个用户完成注册后,下一步可能会进行一系列的数据初始化,而这些操作可能是分散在不同的模块或者服务中的,以及某些可能会在以后开发和扩展的模块或者服务中。这个时候如何保证后续调用的一致性,以及不会来回折腾和补充呢? 我由此想到了事件驱动这个东西,但是现在的项目,往往动不动就是云啊,分布啊之类的。所以事件的总线一定需要单独存在,单独维护,因此像很多框架本身自带的事件管理是无法满足这个需求的。 ### 方案 基于以上的一些思考,找到了两个东西能够满足。 1. [Apache Kafka](https://kafka.apache.org/) 2. [Apache Pulsar](https://pulsar.apache.org/) 以上两个东西都有很多大厂实际验证了其可行性和可靠性。 ### 其他 事件驱动好像逐渐走俏,连带的消息订阅发布的玩法也逐渐推陈出新。 基于对 “解耦” 的追求,我还是备忘一下,需要进一步研究一下,这两个玩意,看能得否。

系统
架构

### 情景 如果用root账户登录 MongoDB 之后任然无法创建其他账户。 而且报错如下: **Error: couldn't add user: not master :** ### 方法 这是由于配置中开启了复制节点的缘故造成的。 MongoDB 强制你只能在 master (PRIMARY)节点下才能对账户进行相应添加或修改。 在配置文件中找到如下地方,并注释掉相应配置。 懒得研究的,可以将 replication 下的所有配置项都注释掉 ```shell replication: replSetName: ... ``` 接下来,重启...

MongoDB

## 场景 在一些项目中往往需要用到国家及其行政区划信息。 比如,填写地址信息的多级联动、根据选择的国家获取 iso country code 或者 calling code 等信息。 ## 可用工具参考 ### 1. ISO 官方 [Country Codes Collection](https://www.iso.org/obp/ui/#iso:pub:PUB500001:en) ![image](https://user-images.githubusercontent.com/3468024/50628102-88a8dd80-0f71-11e9-8514-3843e0c69e57.png) ![image](https://user-images.githubusercontent.com/3468024/50628120-9f4f3480-0f71-11e9-9ef6-1f1b94dbaaf5.png) ### 2. apilayer/restcountries [REST Countries](https://github.com/apilayer/restcountries) ![image](https://user-images.githubusercontent.com/3468024/50628154-c9a0f200-0f71-11e9-9376-fa2f7644a22d.png) ### 3....

记事
常用

### 场景 Ubuntu 安装或者升级后,出现中文乱码的情况。 ### 方法 1. 安装中文支持包 language-pack-zh-hans ```shell sudo apt-get install language-pack-zh-hans ``` 2. 修改 /etc/environment ```shell sudo vim /etc/environment # 文件追加如下内容 LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh:en_US:en" ``` 3. 修改 /etc/default/locale...

常用
系统

### 说明 根据 vue.js 风格指南中 **优先级C** 推荐的书写顺序整理而来。 用于快速创建组件, 各项属性备忘, 快速查阅顺序要求。 [中文文档](https://cn.vuejs.org/v2/api) [eslint plugin:vue/recommended](https://cn.vuejs.org/v2/style-guide/index.html#%E4%BC%98%E5%85%88%E7%BA%A7-C-%E7%9A%84%E8%A7%84%E5%88%99%EF%BC%9A%E6%8E%A8%E8%8D%90-%E5%B0%86%E9%80%89%E6%8B%A9%E5%92%8C%E8%AE%A4%E7%9F%A5%E6%88%90%E6%9C%AC%E6%9C%80%E5%B0%8F%E5%8C%96) ### 组件代码 (VueDemo.vue) ```vue {{ test }} import { mapGetters, mapActions } from 'vuex'; /** * ----------------------------------------------------------------------------------...

常用
JavaScript
Vue

### JS 传参是传值 or 传引用? JS 函数接受参数之前, 会先在函数作用域内创建一个局部变量, 并把传入的参数赋予创建的局部变量。 ### By Value (直接传基本类型的值) 如果是参数是数字、字符串、布尔值等类型, 就会重新开辟一块栈内存存储传入变量的值, 并把新创建的变量指向此栈内存地址。 因此对此变量的修改并不会影响到外部变量的值。 ### By Reference-Copy (传引用的地址) 如果参数是对象、函数、数组等类型, 则仅仅是对变量进行引用复制操作, 只是把新创建的局部变量指向外部变量的堆内存地址。 因此对局部变量的修改就相当于对外部变量的修改。

重要
常用
JavaScript

### 场景 前端通过 ajax 发送一个请求到后端服务器的某个 API,API 接收到请求后返回了一个 30X 的重定向。 ### 可能情况 以上的情形可能会发生一系列意想不到的后果,大致列举如下: 1. 如果重定向的 Location 地址与 ajax 不同源(跨域),受同源策略限制,浏览器不会重定向。 2. 如果服务器只返回重定向状态码 30X, 但未设置 Location 的值。 那么,浏览器不会重定向,而且你可以从响应的头信息中获取到状态码。 3. 返回了 30X 状态码,而且设置了 Location...

生僻
JavaScript

### 场景 某些时候,我们需要将关联数组中的某个元素排列到第一的位置。 比如,数据库查询条件的拼装。为了优化性能,往往需要调整条件的过滤顺序。 使其优先命中被索引的字段。 ### 方法 假定`zzz`是目标索引, 下面将 `zzz` 调整到数据开始位置。 ```php $temp = [ 'xyz' => 'val 1', 'xxx' => 'val 2', 'zzz' => 'val 3', ]; $newArr =...

常用
PHP

### 开启吐槽模式 鉴于 Reac-Native 万年不修复的一堆 BUG, 准备学习下 Flutter, 看能得否? 国内还是看热闹的多,一堆文章复制粘贴,说些乱七八糟的都不在点上的东西。 真正有技术含量点的分析几乎没有。连基本的原理都没有理清楚,纯粹是凑软文量而已。 ### 优秀技术文章推荐 or 备忘 目前发现写的最好的是这篇文章 [What’s Revolutionary about Flutter](https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514) 以及其中文翻译版 [为什么说Flutter是革命性的?](http://www.infoq.com/cn/articles/why-is-flutter-revolutionary) 资源备忘 [Awesome-Flutter](https://github.com/Solido/awesome-flutter) ### 在线文档 [Flutter 中文文档](https://flutterchina.club/docs)

记事
Flutter