作者: admin

  • 突破百度网盘、115下载限制速度—aria2

    这里介绍在mac下安装和使用:

    文章提到的下载文件可以到这里下载:http://bbs.feng.com/read-htm-tid-9585996.html

    或者本地下载:aria2.zip

    第一步:安装Aria2
    https://github.com/tatsuhiro-t/aria2/releases/download/release-1.19.3/aria2-1.19.3-osx-darwin.dmg
    安装目录在 /usr/local/aria2 下

     

    第二步: 下载Aria2所需文件
    (1)下载aria2c.conf文件,并修改下载目录,就在第二行,如:
    dir=/Users/XXX/Downloads

    (2)使用命令工具,创建一个隐藏目录

    mkdir ~/.aria2

    将刚刚的aria2c.conf文件拖放到.aria2目录中(这一步是为了方便每次启动aria2c的时候不用每次手动输入配置文件的位置)

    接着将aria2c文件夹整个拖入 /Applications 目录下

     

    第三步:运行Aria2
    在命令工具中直接输入:

    aria2c  //以后每次启动都需要输入这个命令就行

    如果找不到命令就执行以下步骤:

    cd /usr/local/bin; 
    sudo ln -s ../aria2/bin/aria2c aria2c

     

     

    第四步:查看是否正常安装和运行
    输入命令:

    ps aux|grep aria2c

    如果看见有类似这要提示说明成功了

     xgllseo 1957 0.0 0.0 2434840 820 s001 S+ 7:09下午 0:00.00 grep aria2c
     xgllseo 1955 0.0 0.0 2464736 1044 ?? Ss 7:09下午 0:00.00 aria2c

     

     

    第五步:
    安装以下两款谷歌插件:
    去谷歌商城搜索“115下载助手” (这个是专门针对115下载)
    或者直接点击以下网站
    https://chrome.google.com/webstore/search/%E7%BD%91%E7%9B%98%E5%8A%A9%E6%89%8B?utm_source=chrome-ntp-icon

     

    百度网盘下载:
    https://github.com/acgotaku/BaiduExporter

    BaiduExporter-master

    下载aria2.zip解压,进入BaiduExporter-master目录用谷歌浏览器加载插件选择chrome目录

     

    去谷歌商城搜索“Aria2c Integration” (用来查看下载进度)
    或者直接点击以下网站
    https://chrome.google.com/webstore/detail/aria2c-integration/edcakfpjaobkpdfpicldlccdffkhpbfk?hl=en-US
    https://chrome.google.com/webstore/search/Aria2c%20Integration

     

    -----------------------------
    由于aria2c是依靠命令来下载要查看进度,可以安装Aria2c Integration谷歌浏览器插件或者访问以下网站
    http://ziahamza.github.io/webui-aria2/
    如果提示没有成功连接,就点击“设置”---“连接设置”
    弹出的窗口中
    主机:url设置为localhost
    端口:6800
    RPC路径:/jsonrpc

    基本就可以了,点击保存这是后会提示连接成功,这是后随便一个百度网盘下载的页面刷新访问会提示有“初始化成功”的关键词然后页面就出现
    “导出下载”的功能,下拉点击“aria2c prc”就可以现在文件了,

    baidudown

    这是时候会在安装了的Aria2c Integration有下载的进度条或者访问
    http://ziahamza.github.io/webui-aria2/ 都有下载的进度条

     

     

  • mac安装mongodb

    推荐使用brew安装mongodb

    brew安装方法可以参考:《mac使用类似ubuntu的apt-get命令安装软件——brew

    安装完成mongodb之后,使用以下方法安装:

    brew install mongodb

    使用brew安装一般软件会存放在/usr/local/Cellar/mongodb/3.2.11/bin

     

    安装完成之后还不能使用,需要手动创建默认存放数据库的目录:

    cd /
    sudo mkdir -p /data/db

    接着给目录权限

    whoami  //查看当前登录的用户名
    sudo chown -R 当前登录的用户名 /data

     

    启动:

    sudo mongod  //输入此命令的窗口不能关闭否则,mongodb服务也会关闭

    如果成功的话会直接访问:http://localhost:27017/,提示以下语句:

    It looks like you are trying to access MongoDB over HTTP on the native driver port.

    说明已经成功启动mogodb了

     

    解决端口占用问题:如果执行了sudo mongod提示有

    listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017

    说明端口被占用,只要强制禁用,再次执行一次sudo mongod命令即可,步骤如下:

    //mac中
    lsof -i tcp:27017  //查看占用27017端口的进程是哪个
    VBoxHeadl 44213 xgllseo 17u IPv4 0x6a84f74efbfb4909 0t0 TCP *:27017 (LISTEN)
    kill 44213

     

     

    之前输入的sudo mongod之后会出现一堆数据的那个窗口不能关闭,这时候在重新开启一个shell窗口输入:

    mongo

    就可以进入到mongondb命令模式,对数据库增、删、改、查了。

     

     

     

     

    环境变量:

    如果在命令窗口中直接输入sudo mongod无效那就需要把mongodb安装的目录添加到环境变量中去了

    创建或者编辑~/.bash_profile ,添加以下代码

    export PATH=/usr/local/Cellar/mongodb/3.2.11/bin:${PATH}}

    保存后,在运行以下代码让环境变量马上生效

    source ~/.bash_profile

     

    mongodb配置文件:

    /usr/local/etc/mongod.conf
    
    # Store data in /usr/local/var/mongodb instead of the default /data/db
    dbpath = /data/db
    
    # Append logs to /usr/local/var/log/mongodb/mongo.log
    logpath = /usr/local/var/log/mongodb/mongo.log
    logappend = true
    
    # Only accept local connections
    bind_ip = 127.0.0.1

     

     

     

     

    推荐新手使用可视化工具:

    可视化工具:https://robomongo.org/download

  • mock.js数据模拟

    mock.js说白了就是模拟一堆类似json的数据提供给前端测试,在后台和数据还没有出来时候是可以提前利用mock.js模拟一些数据对前端来说是很有帮助的。

     http://rap.taobao.org/org/index.do配合mock.js使用。

    1,首先到网站注册一个帐号

     

    2,点击导航的“团队”---下拉点“创建团队”---弹出“创建团队”红点随便填---点“创建产品线”---弹出“添加产品线”红点随便填---点刚刚创建的产品线,点击“创建分组”---弹出“创建分组”红点随便填

    完成以上步骤就会看到一个大型的加号,点击

    add_ceshi

    之后弹窗“创建项目”红点随便填,这时候项目就创建完成了。

     

    3,点击刚刚创建完成的项目就可以开始生成数据了,如:

    mock_ceshi

    点击“编辑”

     

     

    mock_ceshi2

    添加接口,上图可以根据自己的需要设置

     

    在根据下面案例填写:

    mock_ceshi3

    备注的规则都是mock.js的写法,这个需要自己去查看mock.js的api,官方文档

    添加字段点击“添加参数”,为字段添加子内容点击左边绿色“加号”

    完成之后点击“秒存”

     

    在点击此按钮,mock_ceshi4

     

    之后会看到下面的页面:

    mock_ceshi5

    请求的参数随便填写,之后点击“请求”,下面就会列出我们刚刚设置好的数据json格式了。

    在页面的右下角,会得到一段url,如类似:

    mock_ceshi6

    记住它,这时候需要mock.js配合来生成数据,直接访问这地址得到的只是mock.js规则而已,并没有生成我们需要的批量数据。

     

    下载mock.js模块:

    sudo npm i mockjs@1.0.0 --save

    温馨提示:在node.js中使用mock.js模块记得要把canvas功能删除,避免一些依赖的麻烦。

    到node_modules/mockjs/dist下的mock.js文件,搜索’canvas’关键词删除dataImage方法

     

    这里我用react native环境来使用mock.js,直接贴代码:

    var Mock=require('mockjs');
    .
    .
    .
    componentDidMount:function () {
      fetch('http://rap.taobao.org/mockjs/10888/api/creations?reqParam=123')
       .then(function (data) {
          return data.json(); //将数组里面的内容,抽出来拼成一段字符串
       })
       .then(function (data) {
          var data1=Mock.mock(data); //经过mock处理,这的data1就是我们需要的批量数据了
          //console.log(data1);
       }.bind(this))
       .catch((error) => {
        console.error(error);
       });
    }

    mock_ceshi7

  • 解决:react native用fetch函数请求数据失败问题Network Request Failed

    在使用react native请求数据时,完全可以不用考虑跨域的问题直接填写要获取的地址就可以。

    但是在用react native开发时候默认情况下是只能支持https请求的,就是说http请求的地址会提示失败,Network Request Failed。

    这时候我们需要修改我们的项目配置文件,打开/ios/项目名/Info.plist,将原来的内容:

    <key>NSAppTransportSecurity</key>
    <dict>
     <key>NSExceptionDomains</key>
      <dict>
       <key>localhost</key>
        <dict>
         <key>NSExceptionAllowsInsecureHTTPLoads</key>
         <true/>
        </dict>
      </dict>
    </dict>

    修改为 :

    <key>NSAppTransportSecurity</key>
    <dict>
       <key>NSAllowsArbitraryLoads</key>
       <true/>
    </dict>

    http://stackoverflow.com/questions/38418998/react-native-fetch-network-request-failed 

     

  • react笔记

    在pc端中使用react,在移动端使用react native。

    1,环境部署

     <script src="../build/react.js"></script>
     <script src="../build/react-dom.js"></script> //react想要跟dom交互就靠它
     <script src="../build/browser.min.js"></script>//将JSX语法(就是js和html混搭语言)转为 JavaScript 语法

     

    2,ReactDOM.render()

    将虚拟dom插入页面中,成为真实dom显示出来

    <body>
     <div id="example"></div>
     <script type="text/babel"> //这里要注意类型,说明是用了jsx语法
      ReactDOM.render(
       <h1>Hello, world!</h1>,
       document.getElementById('example')
      );
     </script>
    </body>

     

    3,JSX 语法 

    HTML 语言直接写在 JavaScript 语言之中,混合就是jsx

    为了浏览器能识别所以要加载browser.min.js,都转化为js

    var names = ['Alice', 'Emily', 'Kate'];
    
    ReactDOM.render(
      <div>
      {
        names.map(function (name) {
           return <div>Hello, {name}!</div>
        })
      }
     </div>,
     document.getElementById('example')
    );

     

    数组里面直接加入html不需要单引号和加号串联:

    var arr = [
     <h1>Hello world!</h1>,
     <h2>React is awesome</h2>,
    ];
    ReactDOM.render(
     <div>{arr}</div>,
     document.getElementById('example')
    );

     

    4、组件React.createClass({}) 

    var HelloMessage = React.createClass({   //这个称为组件,组件名称首字母必须大写
     render: function() {
       return <h1>Hello {this.props.name}</h1>; //顶级层只能有一个父容器,this.props用来获取用户传来的参数
     }
    });
    
    ReactDOM.render(
     <HelloMessage name="John" />,  //可以看成是调用一个fn函数,HelloMessage("John"),注意class和for是js关键词,如果想要自定义这样的名称只能写成className和htmlFor
     document.getElementById('example')
    );

     

     5,this.props 

    用来获取用户传来的参数或者顶级容器的所有子节点,(一般声明了就不会改变)

    this.props.自定义属性    //获取用户传来的参数

    var HelloMessage = React.createClass({ 
     render: function() {
      return <h1>Hello {this.props.name}</h1>; //获取name的值即是John"
     }
    });
    
    
    ReactDOM.render(
     <HelloMessage name="John" />  //name="John"是用户自定义的参数
     document.getElementById('example')
    );

     

    this.props.children    //获取顶级容器的所以子节点

    下面例子使用this.props.children就是获取到所有的span,因为它们是顶级容器的子节点

    ReactDOM.render(
     <NotesList>
      <span>hello</span>
      <span>world</span>
     </NotesList>,
     document.body
    );

    这里需要注意, this.props.children 的值有三种可能:
    如果当前组件没有子节点,它就是 undefined ;
    如果有一个子节点,数据类型是 object ;
    如果有多个子节点,数据类型就是 array 。
    所以,处理 this.props.children 的时候要小心。

    React 提供一个工具方法 React.Children 来处理 this.props.children,使用案例:

    var NotesList = React.createClass({
     render: function() {
       return (
        <ol>
         {
           React.Children.map(this.props.children, function (child) {
             return <li>{child}</li>;
           })
         }
        </ol>
       );
     }
    });
    
    ReactDOM.render(
     <NotesList>
       <span>hello</span>
       <span>world</span>
     </NotesList>,
     document.body
    );

    我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object

     

     6,PropTypes  

    用来判断用户传来的参数是否符合要求

    var MyTitle = React.createClass({
     propTypes: {
       title: React.PropTypes.string.isRequired, //title值必须是字符串
     },
    
     render: function() {
       return <h1> {this.props.title} </h1>;
     }
    });
    
    
    var data = 123;
    ReactDOM.render(
      <MyTitle title={data} />,  //title的值必须是字符串,如果别的类型值就会报错
      document.body
    );

     

     

     7,this.refs   react获取DOM节点 

    var MyComponent = React.createClass({
     handleClick: function() {
        this.refs.myTextInput.focus();
     },
     render: function() {
       return (
         <div>
           <input type="text" ref="myTextInput" /> //这里的ref就相当于id,这样react能方便获取
           <input type="button" value="Focus the text input" onClick={this.handleClick} />
         </div>
       );
     }
    });
    
    ReactDOM.render(
     <MyComponent />,
     document.getElementById('example')
    );

     

    8,this.state 

    动态值、状态值,会随着用户跟界面交互随时改变

    var LikeButton = React.createClass({
     getInitialState: function() { //初始化动态值在此函数中进行
       return {liked: false}; //动态值都声明在这里面,获取里面的值使用:this.state.xxx
     },
     handleClick: function(event) {
       this.setState({liked: !this.state.liked}); //修改动态值使用this.setState({})
     },
     render: function() {
       var text = this.state.liked ? 'like' : 'haven\'t liked';
       return (
         <p onClick={this.handleClick}>
            You {text} this. Click to toggle.
         </p>
       );
     }
    });
    
    ReactDOM.render(
     <LikeButton />,
     document.getElementById('example')
    );

     

    9,事件

    react也有自己的事件方法,例如 click、hover等等,下面看一个例子:

    var Input = React.createClass({
     getInitialState: function() {
       return {value: 'Hello!'};
     },
     handleChange: function(event) {
       this.setState({value: event.target.value});
     },
     render: function () {
       var value = this.state.value;
       return (
        <div>
          <input type="text" value={value} onChange={this.handleChange} />
          <p>{value}</p>
        </div>
       );
     }
    });
    
    ReactDOM.render(<Input/>, document.body);

    1,{}:在jsx语法中传变量到虚拟html要用到
    2,event.target:就相当于$(this)
    3,on+事件名:想给哪个虚拟dom绑定事件就加上on+事件名

     

    10,css样式

    render: function () {
     return (
       <div style={{opacity: 0.5,marginLeft:10px}}>
         Hello {this.props.name}
       </div>
     );
    }

     

     11,ajax (使用了jquery)

    var UserGist = React.createClass({
     getInitialState: function() {
       return {
         username: '',
         lastGistUrl: ''
       };
     },
    
     componentDidMount: function() {
        $.get(this.props.source, function(result) { //这里使用的是jquery的$.get
          var lastGist = result[0];
          if (this.isMounted()) {
            this.setState({
              username: lastGist.owner.login,
              lastGistUrl: lastGist.html_url
            });
          }
        }.bind(this));
     },
    
     render: function() {
       return (
         <div>
           {this.state.username}'s last gist is
           <a href={this.state.lastGistUrl}>here</a>.
         </div>
       );
     }
    });
    
    ReactDOM.render(
     <UserGist source="https://api.github.com/users/octocat/gists" />,
     document.body
    );

    http://www.ruanyifeng.com/blog/2015/03/react.html 

    学习react必须要了解 生命周期,不然很难学习下去:《react native生命周期