React Native icon的使用

项目已经集成react-native-vector-icons , 这里将不在这里整理怎么在本地安装了。

具体使用方式

具体的icon图标样式可以在这里找

代码如下:

//直接在页面显示图标
//注意这里要引入ICON,同时还要是可以支持的icon

import Icon from 'react-native-vector-icons/Ionicons';

<Icon name="md-aperture" color={subTitleColor} size={px2dp(16)}/>

// 这个是写首页的icon button样式
render(){
        return(
            <TabNavigator
                hidesTabTouch={true}
                tabBarStyle={[styles.tabBarStyle, {backgroundColor: this.props.rowItemBackgroundColor}]}
                sceneStyle={{
                    paddingTop: theme.toolbar.paddingTop, //immersive experience
                    paddingBottom: styles.tabBarStyle.height}}>
                {this._renderItem(RegisterFragment, 'register', '注册', this.state.registerNormal, this.state.registerSelected)}
            </TabNavigator>
        );
    }

componentWillMount(){
        const tabIconColor = this.props.tabIconColor;
        if(Platform.OS === 'ios') {
            Icon.getImageSource('ios-add-circle-outline', 100, theme.tabButton.normalColor).then((source) => this.setState({registerNormal: source}));
            Icon.getImageSource('ios-add-circle-outline', 100, tabIconColor).then((source) => this.setState({registerSelected: source}));
        }else if(Platform.OS === 'android'){
            Icon.getImageSource('md-add-circle-outline', 100, theme.tabButton.normalColor).then((source) => this.setState({registerNormal: source}));
            Icon.getImageSource('md-add-circle-outline', 100, tabIconColor).then((source) => this.setState({registerSelected: source}));
        }
    }

2019/2/6 posted in  web

React Native Flexbox 布局

我们在 React Native 中使用 flexbox 规则来指定某个组件的子元素的布局。Flexbox 可以在不同屏幕尺寸上提供一致的布局结构。

一般来说,使用flexDirection、alignItems和 justifyContent三个样式属性就已经能满足大多数布局需求。

React Native布局基础

一个组件的宽和高决定了他在屏幕的尺寸,也就是大小

像素无关

在React Native中的尺寸是没有单位的,它代表了设备独立像素。

运行在Android上时,View的长和宽被解释成:100dp 100dp单位是dp,字体被解释成16sp 单位是sp,运行在iOS上时尺寸单位被解释称了pt,这些单位确保了布局在任何不同dpi的手机屏幕上显示不会发生改变;

react native 布局详细指南

flexDirection

在组件的style中指定flexDirection可以决定布局的主轴。子元素是应该沿着水平轴(row)方向排列,还是沿着竖直轴(column)方向排列呢?默认值是竖直轴(column)方向。

import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';

export default class FlexDirectionBasics extends Component {
  render() {
    return (
      // 尝试把`flexDirection`改为`column`看看
      // 设置row的时候元素是按照row方向排列,即可以理解为行排列
      // 设置column的时候元素是按照column方向排列,即可以理解为列排列
      <View style={{flex: 1, flexDirection: 'row'}}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
      </View>
    );
  }
};

设置为row的时候

设置为column的时候

这个图片对于四个整理的非常好

JustifyContent

在组件的 style 中指定justifyContent可以决定其子元素沿着主轴的排列方式。子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end、space-around、space-between以及space-evenly。

import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';

export default class JustifyContentBasics extends Component {
  render() {
    return (
      // 尝试把`justifyContent`改为`center`看看
      // 尝试把`flexDirection`改为`row`看看,针对不同的行列排序可以使用相应的排列方式
      // 这些Style后面部分可以放到专门的样式文件中去
      <View style={{
        flex: 1,
        flexDirection: 'column',
        justifyContent: 'space-between',
      }}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
      </View>
    );
  }
};

flex-start: 从头开始排列
center: 居中排列
flex-end: 从末尾排列

Align Items

在组件的 style 中指定alignItems可以决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end以及stretch。

import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';

export default class AlignItemsBasics extends Component {
  render() {
    return (
      // 尝试把`alignItems`改为`flex-start`看看
      // 尝试把`justifyContent`改为`flex-end`看看
      // 尝试把`flexDirection`改为`row`看看
      <View style={{
        flex: 1,
        flexDirection: 'column',
        justifyContent: 'center',
        alignItems: 'stretch',
      }}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{height: 50, backgroundColor: 'skyblue'}} />
        <View style={{height: 100, backgroundColor: 'steelblue'}} />
      </View>
    );
  }
};


使用stretch的话,系统会默认指定当前排列位置上的宽或者高,相应的如果在当前位置已经指定的话,该项作用的stretch就会失效。

align content

2019/2/5 posted in  web

React Native 组件

React Native 组件主要分为三种: 基础组件、交互组件、列表组件

基础组件

基础组件包含:

  1. View:用于搭建用户组件的最基础组件
  2. Text:用于显示文本的内容
  3. Image:显示图片内容的组件
  4. TextInput:文本显示框
  5. ScrollView:可滚动的容器视图
  6. StyleSheet:提供类似CSS样式表的样式抽象层

View

作为创建 UI 时最基础的组件,View 是一个支持 Flexbox 布局、样式、一些触摸处理、和一些无障碍功能的容器,并且它可以放到其它的视图里,也可以有任意多个任意类型的子视图。

class ViewColoredBoxesWithText extends Component {
  render() {
    return (
      <View
        style={{
          flexDirection: "row",
          height: 100,
          padding: 20
        }}
      >
        <View style={{ backgroundColor: "blue", flex: 0.3 }} />
        <View style={{ backgroundColor: "red", flex: 0.5 }} />
        <Text>Hello World!</Text>
      </View>
    );
  }
}

用于 View 响应属性 (例如, onResponderMove), 合成触摸事件采用以下的格式:

  • nativeEvent

    • changedTouches - 从上一次事件以来的触摸事件数组。
    • identifier - 触摸事件的 ID。
    • locationX - 触摸事件相对元素位置的 X 坐标。
    • locationY - 触摸事件相对元素位置的 Y 坐标。
    • pageX - 触摸事件相对根元素位置的 X 坐标。
    • pageY - 触摸事件相对根元素位置的 Y 坐标。
    • target - 接收触摸事件的元素 ID.
    • timestamp - 触摸事件的时间标记,用来计算速度.
    • touches - 屏幕上所有当前触摸事件的数组.

    绑定View的触摸响应事件

Text

一个用于显示文本的React组件,并且它也支持嵌套、样式,以及触摸处理。


import React, { Component } from 'react';
import { Text, StyleSheet } from 'react-native';

export default class TextInANest extends Component {
  constructor(props) {
    super(props);
    this.state = {
      titleText: "Bird's Nest",
      bodyText: 'This is not really a bird nest.'
    };
  }

  render() {
    return (
      <Text style={styles.baseText}>
        <Text style={styles.titleText} onPress={this.onPressTitle}>
          {this.state.titleText}{'\n'}{'\n'}
        </Text>
        <Text numberOfLines={5}>
          {this.state.bodyText}
        </Text>
      </Text>
    );
  }
}

const styles = StyleSheet.create({
  baseText: {
    fontFamily: 'Cochin',
  },
  titleText: {
    fontSize: 20,
    fontWeight: 'bold',
  },
});

这个例子使用了styles 样式分离的方式来制作,显示Text的相关属性。

元素在布局上不同于其它组件:在Text内部的元素不再使用flexbox布局,而是采用文本布局。这意味着内部的元素不再是一个个矩形,而可能会在行末进行折叠。

Image

TextInput

TextInput是一个允许用户在应用中通过键盘输入文本的基本组件。本组件的属性提供了多种特性的配置,譬如自动完成、自动大小写、占位文字,以及多种不同的键盘类型(如纯数字键盘)等等。

import React, { Component } from 'react';
import { TextInput } from 'react-native';

export default class UselessTextInput extends Component {
  constructor(props) {
    super(props);
    this.state = { text: 'Useless Placeholder' };
  }

  render() {
    return (
      <TextInput
        style={{height: 40, borderColor: 'gray', borderWidth: 1}}
        onChangeText={(text) => this.setState({text})}
        value={this.state.text}
      />
    );
  }
}

多行文本框

import React, { Component } from 'react';
import { View, TextInput } from 'react-native';

class UselessTextInput extends Component {
  render() {
    return (
      <TextInput
        {...this.props} // 将父组件传递来的所有props传递给TextInput;比如下面的multiline和numberOfLines
        editable = {true}
        maxLength = {40}
      />
    );
  }
}

export default class UselessTextInputMultiline extends Component {
  constructor(props) {
    super(props);
    this.state = {
      text: 'Useless Multiline Placeholder',
    };
  }

  // 你可以试着输入一种颜色,比如red,那么这个red就会作用到View的背景色样式上
  render() {
    return (
     <View style={{
       backgroundColor: this.state.text,
       borderBottomColor: '#000000',
       borderBottomWidth: 1 }}
     >
       <UselessTextInput
         multiline = {true}
         numberOfLines = {4}
         onChangeText={(text) => this.setState({text})}
         value={this.state.text}
       />
     </View>
    );
  }
}

ScrollView

一个封装了平台的ScrollView(滚动视图)的组件,同时还集成了触摸锁定的“响应者”系统。

记住ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作)。要给ScrollView一个确定的高度的话,要么直接给它设置高度(不建议),要么确定所有的父容器都有确定的高度。一般来说我们会给ScrollView设置flex: 1以使其自动填充父容器的空余空间,但前提条件是所有的父容器本身也设置了flex或者指定了高度,否则就会导致无法正常滚动,你可以使用元素查看器来查找具体哪一层高度不正确。

ScrollView内部的其他响应者尚无法阻止ScrollView本身成为响应者。

ScrollView和FlatList应该如何选择?ScrollView会简单粗暴地把所有子元素一次性全部渲染出来。其原理浅显易懂,使用上自然也最简单。然而这样简单的渲染逻辑自然带来了性能上的不足。想象一下你有一个特别长的列表需要显示,可能有好几屏的高度。创建和渲染那些屏幕以外的JS组件和原生视图,显然对于渲染性能和内存占用都是一种极大的拖累和浪费。

这就是为什么我们还有专门的FlatList组件。FlatList会惰性渲染子元素,只在它们将要出现在屏幕中时开始渲染。这种惰性渲染逻辑要复杂很多,因而API在使用上也更为繁琐。除非你要渲染的数据特别少,否则你都应该尽量使用FlatList,哪怕它们用起来更麻烦。

此外FlatList还可以方便地渲染行间分隔线,支持多列布局,无限滚动加载等等。

交互空间

Button

import { Button } from 'react-native';
...

<Button
  onPress={onPressLearnMore}
  title="Learn More"
  color="#841584"
  accessibilityLabel="Learn more about this purple button"
/>

Picker

本组件可以在iOS和Android上渲染原生的选择器(Picker)。

<Picker
  selectedValue={this.state.language}
  style={{ height: 50, width: 100 }}
  onValueChange={(itemValue, itemIndex) => this.setState({language: itemValue})}>
  <Picker.Item label="Java" value="java" />
  <Picker.Item label="JavaScript" value="js" />
</Picker>

slider

用于选择一个范围值的组件。

switch

跨平台通用的“开关”组件。

这些平台在不同的平台上的定义方式不一样,所以出现的是跨平台的相应组件。

注意这是一个“受控组件”(controlled component)。你必须使用onValueChange回调来更新value属性以响应用户的操作。如果不更新value属性,组件只会按一开始给定的value值来渲染且保持不变,看上去就像完全点不动。

@keyword checkbox @keyword toggle @keyword 单选 @keyword 多选

列表视图

Flatlist

高性能的简单列表组件,支持下面这些常用的功能:

完全跨平台。
支持水平布局模式。
行组件显示或隐藏时可配置回调事件。
支持单独的头部组件。
支持单独的尾部组件。
支持自定义行间分隔线。
支持下拉刷新。
支持上拉加载。
支持跳转到指定行(ScrollToIndex)。
如果需要分组/类/区(section),请使用.

<FlatList
  data={[{key: 'a'}, {key: 'b'}]}
  renderItem={({item}) => <Text>{item.key}</Text>}
/>

Sectionlist

高性能的分组(section)列表组件,支持下面这些常用的功能:

完全跨平台。
行组件显示或隐藏时可配置回调事件。
支持单独的头部组件。
支持单独的尾部组件。
支持自定义行间分隔线。
支持分组的头部组件。
支持分组的分隔线。
支持多种数据源结构
支持下拉刷新。
支持上拉加载。
如果你的列表不需要分组(section),那么可以使用结构更简单的

简单的例子:

// Example 1 (Homogeneous Rendering)
<SectionList
  renderItem={({ item, index, section }) => <Text key={index}>{item}</Text>}
  renderSectionHeader={({ section: { title } }) => (
    <Text style={{ fontWeight: "bold" }}>{title}</Text>
  )}
  sections={[
    { title: "Title1", data: ["item1", "item2"] },
    { title: "Title2", data: ["item3", "item4"] },
    { title: "Title3", data: ["item5", "item6"] }
  ]}
  keyExtractor={(item, index) => item + index}
/>
2019/2/5 posted in  web

react Native 相关学习资料

React-Native学习指南
本指南汇集React-Native各类学习资源,给大家提供便利。

Awesome React Native components, news, tools, and learning material

Awesome React Native
An awesome style list that curates the best React Native libraries, tools, tutorials, articles and more. PRs are welcome!

相关组件学习

TextInput参考这一篇

React Natvie FlexBox 的排版
整理相应的RN的排版方式,可以使用flex:1来定义不同的比例

react-native 屏幕尺寸和文字大小适配
react-Native适配不同的屏幕分辨率的方式,后面基本的开发完之后要在各个版本研究一下。

react native 跨平台button可以使用这个插件包

如何在react native中实现颜色渐变 - react-native-linear-gradient 基础教程
可以用来做button背景渐变,APP背景渐变等。
用的react-native-linear-gradient组件来制作背景渐变

2019/2/5 posted in  web

关于kernel_task占用过高CPU导致Mac风扇狂转系统卡顿的最终极解决方法

遇到了同样的问题,按照下面的方法解决。奇怪的是最后也没有找到具体的原因,后面如果重装的时候可以看一下是不是因为操作系统问题。但是一直出现的是开机之后就出现了,并且在安全模式下也会出现,所以有可能确实是硬件问题。但如果是下面说的温感问题,但是从系统所看到的所有温度内容却又都是好的,所以非常奇怪。

我滴电脑是2013年版滴MacBook Air,用了四年多的时候突然某一天不知道为什么就开始风扇狂转。一开始只是偶尔转,开机久了就会停止,后来一发不可收拾从头响到尾并且系统及其卡顿。由于毕业了也就拿它看看视频,就没管他,但最近开始重拾手绘板没事画画图,终于忍不了啦!!!!

进入正题!

一开始我只发现风扇转的厉害,网上已经有了很多关于这个问题的解决方法,重置SMC、PRAM之类的我也都试过了,对我的电脑都不适用(当然你还是应该先试一下这个方法万一立马见效就不用看后面的啦,这部分内容网上有详解,我就不说啦)。

打开活动监视器我发现kernel_task这个系统进程CPU高达600%!我自查了下电脑觉得系统各方面应该都没什么问题吧,大概就是温控传感器坏掉了?如果拿去修好像是要换主板什么的,对于五年多的老机器我可不想在它身上花大价钱,就决定自己瞎干。

这部分内容网上有但我还是讲一下。打开关于本机—系统报告,记住型号标识符(我的是MacBookAir6,2)。打开finder—磁盘—系统—资源库—Extensions,找到IOPlatformPluginFamily.kext,右键它显示包内容,打开contents—pluglns,找到ACPI_SMC_PlatformPlugin.kext,右键它显示包内容,打开contents—Resources,找到和你型号相同的.plist(我的是MacBook Air6,2),删掉或者把它移走到随便哪个目录底下。这时候如果你的电脑如果不让你删除,那要多做一件事啦。那就是关机,按住command+R,同时开机进入恢复模式,打开终端,输入命令csrutil disable。然后重启再做上面的删除.plist的动作,然后重启就结束啦。

但是!我知道你要说但是!对接下来才是重点!那就是,我的电脑里根本没有跟我的型号一致的.plist!!!你也是这样对不对!!

以下是我裸翻了一篇国外大神写的文章而得来的方法,针对并没有一致的.plist的情况。首先为了后面不麻烦,还是先跟上面一样进入恢复模式,输入csrutil disable然后重启。接下来和之前一样,打开finder—磁盘—系统—资源库—Extensions,找到IOPlatformPluginFamily.kext,拖一份到其他目录下(我是在资源库底下新建了文件夹,把.kext拷贝在这里),然后把原来那个IOPlatformPluginFamily.text整个删除了。好啦!重启!电脑虽然还是呼呼响但是运行超级顺畅!跟新买来一样嘻嘻。再打开活动监视器,看到kerdel_task只占用一丢丢CPU啦!到这里呢电脑就可以跟往常一样顺畅运行啦!恭喜你!

然而,这风扇呼呼响哦,我还是听的很烦恼。于是下了一个风扇转速控制器,我下的是Macs fan control,这个网上很好找的哈。可以根据CPU温度半自动控制风扇的转速,这样呼呼响也被治好啦!恭喜你!

关于原理我随便讲一点嘻嘻毕竟我完完全全对电脑没什么了解。我也不知道为什么我们的电脑里没有那个型号一致的.plist,感觉好迷啊,完全不懂。总之呢就大概是温控传感器坏了,让系统误以为温度很高要一直散热,所以这个叫kernel_task的系统进程呢就一直占用大量CPU叫风扇狂转散热。现在大概就是移走了那个文件,所以系统不再管你的风扇了,所以风扇就自己一个劲转啊转,这样虽然系统正常了但又吵又容易损害风扇(不过风扇很便宜而且也不容易损坏,所以主要是太吵),如果你不怕吵就可以到此为止。但是再下一个风扇转速控制呢可以让它不那么吵,而且也能半自动控制散热,很OK啦。

原味可以参考

https://zhuanlan.zhihu.com/p/47283570

2019/1/31 posted in  linux

清华大学人工智能研究中心

清华大学人工智能研究中心

旗下发布了四大平台

(1)基于语言和常识知识库《知网》所研制的 OpenHowNet;
网址:https://hownet.thunlp.org/
OpenHowNet 源自在中文世界有巨大影响力的语言知识库——知网(HowNet)。

(2)中英文跨语言百科知识图谱 XLORE;
网址:https://xlore.org/
XLORE 是融合中、英、法维基百科和百度百科,对百科知识进行结构化和跨语言链接构建的多语言知识图谱, 是中英文知识规模较平衡的大规模多语言知识图谱。

(3)科技知识挖掘平台 AMiner;
网址:https://aminer.cn/
AMiner 旨在为研究人员社交网络提供全面的搜索和数据挖掘服务。

(4)THUAITR
THUAITR 是以 AMiner 全球科技情报大数据完觉服务平台为基础,采用人工智能自动生成技术,汇集而成的科技领域洞察报告。
《清华大学人工智能技术系列报告》(THUAITR):https://reports.aminer.cn/

2019/1/27 posted in  云计算和大数据

wechat-scrawle 配置指南记录

环境配置指南

1. 安装mongodb / redis / elasticsearch

安装MongoDB

具体的mongodb配置见下面这篇文章

mongodb

安装redis

具体的安装redis参考这篇
redis 使用

安装elasticsearch

mac安装elasticsearch

安装 elasticsearch-ik中文分词器

下载 elasticsearch-analysis-ik-5.1.1.zip (注意:和elasticsearch版本对应),直接下载其release的版本(第一个zip文件,避免maven打包)
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v5.1.1
(可以选一个比较新的版本下载)

在/Users/duhuifang/Downloads/elasticsearch-5.1.1/plugins下建立ik目录
mkdir ik

移动 elasticsearch-analysis-ik-5.1.1.zip至elasticsearch的plugins文件夹的ik文件夹下:

cp Downloads/ elasticsearch-analysis-ik-5.1.1.zip /Users/duhuifang/Downloads/elasticsearch-5.1.1/plugins/ik

解压文件
unzip elasticsearch-analysis-ik-5.1.1.zip

启动elasticsearch,即可看到加载了analysis-ik插件

完成之后可以使用postman进行测试

POST http://localhost:9200/_analyze

body

{
  "analyzer":"ik_max_word",
  "text":"中华人民共和国国歌"
}

2. Install proxy server and run proxy.js

使用npm安装anyproxy

3. 安装python包

起virtualenv环境

使用pip install -r requirements.txt 来安装
注意里面有个windows的依赖包可以删掉

4. 安装adb

安装android SDK,这里不多说了

安装NOX或者mumu,这里我安装的mumu,NOX现在微信不能访问了。

要起的哪几个内容

node proxy.js
redis-server /usr/local/etc/redis.conf
python3 ./main.py
sudo mongod
2019/1/21 posted in  python

安装配置 anyproxy

(wxenv) williamtekiMacBook-Pro:weixin_crawler valentine$ npm install -g anyproxy
npm WARN deprecated clipboard-js@0.3.6: Please migrate to https://github.com/lgarron/clipboard-polyfill
/usr/local/bin/anyproxy -> /usr/local/lib/node_modules/anyproxy/bin/anyproxy
/usr/local/bin/anyproxy-ca -> /usr/local/lib/node_modules/anyproxy/bin/anyproxy-ca
npm WARN svg-inline-react@1.0.3 requires a peer of react@^0.14.0 || ^15.0.0 but none is installed. You must install peer dependencies yourself.

+ anyproxy@4.0.12
added 237 packages from 273 contributors in 50.829s
(wxenv) williamtekiMacBook-Pro:weixin_crawler valentine$ anyproxy
[AnyProxy Log][2019-01-21 14:07:17]: Http proxy started on port 8001
[AnyProxy Log][2019-01-21 14:07:17]: web interface started on port 8002
^C[AnyProxy Log][2019-01-21 14:10:01]: clearing cache file...
[AnyProxy Log][2019-01-21 14:10:01]: ==>>> clearing cache
[AnyProxy Log][2019-01-21 14:10:01]: closing webserver...
(wxenv) williamtekiMacBook-Pro:weixin_crawler valentine$ anyproxy-ca
detecting CA status...
AnyProxy CA does not exist.
? Would you like to generate one ? Yes
temp certs cleared
rootCA generated
PLEASE TRUST the rootCA.crt in /Users/valentine/.anyproxy/certificates
The cert is generated at /Users/valentine/.anyproxy/certificates. Please trust the rootCA.crt.
(wxenv) williamtekiMacBook-Pro:weixin_crawler valentine$

配置系统证书认证确认

2019/1/21 posted in  web

Modern Backend and Frontend Developer in 2018

Modern Backend Developer in 2018

后端语言学习路径

Modern Backend Developer in 2018

  1. 选择一门语言
  2. 写入门实践代码 —— 用最简单的方式最快的学习去实践如何写
  3. 学习包管理工具 —— python pip。 基本上每种语言都有包管理工具
  4. 了解语言的开发标准和开发规范 —— 比如python的PEP8或者black
  5. 自己写一些包或者去给一些包做分支 —— 可以自己写一些包去开源,做好之后可以给一些开源软件贡献代码
  6. 学习测试 —— 给自己的项目做单元测试和集成测试
  7. 写测试用例并使用到实践当中
  8. 学习关系数据库 —— 学习使用一种关系数据库
  9. 实践实践 —— 使用学到的所有东西创建一个应用,例如blog等
  10. 学习一个框架
  11. 学习一个NoSQL数据库 —— MongoDB
  12. 学习缓存 —— redis或者memcache
  13. 创建RestfulAPI
  14. Authentication 鉴权方式
  15. 学习消息队列 —— 知道为什么要使用消息队列,怎么使用
  16. 学习一个搜索引擎 —— ElasticSearch、sola
  17. 学习怎么使用docker
  18. 学习如何使用WebServer
  19. 学习如何使用Web Socket
  20. 学习 GraphQL
  21. 学习 Graph Database
  22. 学习其他部分 —— profilling, Static Analyse, DDD, SOAP 等等
  23. 持续学习

前端学习路径

Modern Frontend Developer in 2018

  1. 学习HTML
  2. CSS基础
  3. Javascript基础
  4. 使用javascript做一些交互式网站和一些简单的交互
  5. 在github上面找一个开源项目并提一些SR需求
  6. 为自己找一个合适职业
  7. 包管理 —— npm、yarn
  8. 为你的应用装一些第三方依赖
  9. CSS 预处理组件 —— Sass Less等
  10. 学习CSS框架 —— Bootstrap
  11. CSS架构 —— BEM
  12. 构建工具 —— webpack、NPM Scripts、 Gulp
  13. 做点东西 —— 简单的做一些实践
  14. 选一个框架 —— vue, react, angular
  15. 实践 —— 开始做一些小项目进行实践
  16. 测试你的APP ——
  17. progressive Webapps
  18. js静态检查 —— TypeScript
  19. 学习服务端渲染
  20. 学习其他内容 —— canvas, HTML-5, SVG, sourcemaps, functional programming等
  21. 持续学习
2019/1/19 posted in  python

少儿编程

西瓜创客

scratch

现在大多数平台的少儿编程教育都以scratch为基础平台来进行,无非就是在上面针对不同的部分进行二次开发。
类似西瓜创客的做法就是针对scratch做一个多少小时的培训,引导小朋友做出自己的相应的程序来进行发布,提升小朋友对于编程的喜爱,然后逐步的开放小朋友对于编程的热爱

scratch可以教会小朋友:

  1. 画画的能力
  2. 制作语音的能力
  3. 创意
  4. 基础的编程实现创意能力

不同年龄的孩子如何学习编程

小马王少儿编程

kano
一个使用树莓派将儿童玩具作为议题的公司,软件类似使用scratch类似的模式,然后添加上一些sensor之类的内容。方便孩子所见即所得的获取编程快乐

2019/1/14 posted in  python

可拖拽前端框架分析

layoutit框架
可以设置布局类型的可托转框架,不是可任意拖拽的,二是使用Bootstrap类似的框架模式进行的。

gridstack
可以拖拽的Table类型拖拽框架,不是随意放置
感觉redash是使用的这个框架。

maqetta
这个可以研究一下,感觉封装的比较严,而不是一个基础库,已经是一个工具了。

VisualUIEditor
基于electron的可视化UI编辑器,这个是基于electron来做的,可以研究里面使用的哪个开源组件来实现的,就可以实现web版本了。

适用于仪表盘项目的7个优秀JavaScript库

2019/1/12 posted in  web

爱湃森2018年度python榜单

爱湃森2018年度python榜单

python star 数最多的项目
awesome-python

系统设计教程
这是一个很好的教程,从这个教程可以学到几个东西

  1. 所有教程都形成了anki库,通过anki工具更方便后面的学习
  2. 各种不同系统的架构设计方式,包括各种不同的设计方式

Tensorflow modles
TensorFlow的一些不同模型的实现和一些样例教程,适合入门学习

public-apis
整理了线上的很多公共可以使用的API

awesome-machine-learning
机器学习的相关比较好的代码库

2018年最受欢迎的python项目

cerbot let's encrypt 用于全站https加密的网站

参考这篇网站可以配置自己的网站到https

Detectron
facebook开源的机器学习动态监测API,使用python开发,使用caffe2深度学习框架

pipenv
pipenv 现在资料比较多了,可以好好整理一下

sanic
sanic一个新的异步框架

2018爬虫框架

  1. scrapy
  2. pyspider
  3. python-spider
  4. photon
  5. lianjia-scrawler
  6. Weixin-crawler 非常值得研究一下
  7. rula
  8. Instagram-scraper
  9. Weibo-Spider
  10. Haipproxy

2018年需要学习的python项目

black
Black号称不妥协的代码格式化工具,为什么叫不妥协呢?因为它检测到不符合规范的代码风格直接就帮你全部格式化好,根本不需要你确定,直接替你做好决定。它也是 requests 作者最喜欢的工具之一.使用非常简单,安装成功后,和其他系统命令一样使用,只需在 black 命令后面指定需要格式化的文件或者目录就ok。
在pycharm里面也可以集成black。

wtfpython
这个可以好好了解一下,python一些神奇的东西

photon
一个爬虫框架

python入门书籍

2019/1/12 posted in  python

redash 开发数据库连接

直接连接数据库

psql -U root -d redash

docker模式的连接数据库

root@firephoenix:~# docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
4e200be3f2fe        redash_worker           "/app/bin/docker-ent…"   8 weeks ago         Up 8 weeks          5000/tcp                 redash_worker_1
a0b6f27748c1        redash_server           "/app/bin/docker-ent…"   8 weeks ago         Up 8 weeks          0.0.0.0:5000->5000/tcp   redash_server_1
7ab477c2aacd        postgres:9.5.6-alpine   "docker-entrypoint.s…"   8 weeks ago         Up 8 weeks          5432/tcp                 redash_postgres_1
1b03f712e99e        redis:3.0-alpine        "docker-entrypoint.s…"   8 weeks ago         Up 8 weeks          6379/tcp                 redash_redis_1
root@firephoenix:~#
root@firephoenix:~#
root@firephoenix:~#
root@firephoenix:~# docker exec -t -i redash_postgres_1 /bin/bash
bash-4.3#

2019/1/10 posted in  python

2018年度最受欢迎软件——中国开源软件TOP20

RuoYi——带代码自动生成的基于SpringBoot的管理平台

https://gitee.com/y_project/RuoYi

内置功能

用户管理:用户是系统操作者,该功能主要完成系统用户配置。
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
岗位管理:配置系统用户所属担任职务。
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
参数管理:对系统动态配置常用参数。
通知公告:系统通知公告信息发布维护。
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
登录日志:系统登录日志记录查询包含登录异常。
在线用户:当前系统中活跃用户状态监控。
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
系统接口:根据业务代码自动生成相关的api接口文档。
在线构建器:拖动表单元素生成相应的HTML代码。
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

Druid——阿里巴巴开源的带监控功能的JDBC数据库连接池

Druid github地址

fastjson——阿里巴巴开源的JSON 转Java对象的包

AntDesign——AlipayUI 是蚂蚁金服针对 mobile 研发推出的一套基于 React 实现的 H5 组件库

里面有较多的DEMO,同时有较多的代码。
提供行业模板

同时提供axure和sketch下的网页设计模板,提升设计速度。

Hutools——Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。

hutools

Guns

Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!

xxl-job

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

apollo

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

2018/12/15 posted in  java

mac下配置vim

mac下开发IDE比较多,也比较好用,但是有时候还是会使用vim,有时间配置一下mac下面的vim

查看一下mac上的vim

输入vim可以直接看到vim的相应版本。

如果是7.*版本就需要做一下升级了,如果是8版本基本上也比较新了,足够使用了。

配置vim

1:将vimrc cp一份副本
cp /usr/share/vim/vimrc ~/.vimrc
2:编辑vimrc
vi ~/.vimrc
3:添加需要的设置

set nocompatible                 #去掉有关vi一致性模式,避免以前版本的bug和局限
set nu!                          #显示行号
set guifont=Luxi/ Mono/ 9        #设置字体,字体名称和字号
filetype on                      #检测文件的类型
set history=1000                 #记录历史的行数
set background=dark              #背景使用黑色
syntax on                        #语法高亮度显示
set autoindent                   #vim使用自动对齐,也就是把当前行的对齐格式应用到下一行(自动缩进)
set cindent                      #(cindent是特别针对 C语言语法自动缩进)
set smartindent                  #依据上面的对齐格式,智能的选择对齐方式,对于类似C语言编写上有用
set tabstop=4                    #设置tab键为4个空格,
set shiftwidth =4                #设置当行之间交错时使用4个空格
set ai!                          #设置自动缩进
set showmatch                    #设置匹配模式,类似当输入一个左括号时会匹配相应的右括号
set guioptions-=T                #去除vim的GUI版本中得toolbar
set vb t_vb=                     #当vim进行编辑时,如果命令错误,会发出警报,该设置去掉警报
set ruler                        #在编辑过程中,在右下角显示光标位置的状态行
set nohls                        #默认情况下,寻找匹配是高亮度显示,该设置关闭高亮显示
2018/12/15 posted in  linux