2020年10月

  • 首先我们先来查看下版本

    npm -v
    node -v
  • npm的升级办法

     npm install npm@latest -g
  • node 的升级办法

    • 清除npm cache

      sudo npm cache clean -f
    • 安装 n 模块

      sudo npm install -g n
      • 安装最新的稳定版本(也可以自己选择版本sudo n 版本号)
       sudo n stable

在使用Vue-cli创建项目的时候,执行完vue create demo(你的项目名),就会出现以下错误

 vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6.
 You may want to run the following to upgrade to Vue CLI 3:

 npm uninstall -g vue-cli
 npm install -g @vue/cli

这是由于Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载它。

按照提示进行修改就可了,如果是mac操作系统,在命令行前面添加sudo获取管理员权限,输入管理员密码.

# 卸载以前装的vue-cli
npm uninstall -g vue-cli
# 安装vue/cli
npm install -g @vue/cli    或者    yarn global add @vue/cli

mac安装vue-cli的时候出现Error: EACCES: permission denied, access '/usr/local/lib/node_modules错的解决办法。

错误提示

pm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules/vue-cli/node_modules/ansi-escapes
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/vue-cli/node_modules/ansi-escapes'
npm ERR!  [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/vue-cli/node_modules/ansi-escapes'] {
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules/vue-cli/node_modules/ansi-escapes'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

原因: 权限不足。
解决办法: 在命令行前面添加sudo获取管理员权限,输入管理员密码就行sudo npm install -g vue-cli

我们来说下mac上通过MxSrvs支持ThinkPHP3.2伪静态,首先我们要打开的是该项目的配置文件,不是nginx的配置文件:
点击左侧的配置编辑,然后点击Nginx右侧的小箭头,然后点击下面的vhosts左侧的小箭头,然后从右侧的列表选择你的项目。
1.png

修改配置文件:

server {
    listen            80;
    server_name        devapi.sunxiaoning.com;
    root            /Users/zero/projects/舒尔特方格/shuerte/api/shuerte_api;
    #access_log        /Applications/MxSrvs/logs/shuerte_api.log;
    include            vhosts/_nginx.vhost.fpm;
        # 加入以下内容
    location /
    {
        index index.php;
        #ThinkPHP REWRITE支持
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?s=$1 last;
            break;
        }
    }
}

然后修改nginx的配置文件

location ~ \.php$ {
            root           /Applications/MxSrvs/www;
            fastcgi_pass   127.0.0.1:10080;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句  
            fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句
            include        fastcgi_params;
        }

小编今天在使用MxSrvs运行thinPHP项目的时候,直接把项目目录直接放在了网站根目录里面,发现默认控制器的访问是没有问题的,但是其他的控制器以及直接输入默认的控制器全部显示的事404。后来发现其实是需要配置下的,而且也可以不放在网站根目录里面。
首先点击左侧的配置编辑--》再点击Nginx--》再点击最后一行的加号
1.png

然后就会弹出一个框,然后注入域名,项目名,项目目录就可以了。
2.png

这时候就会生成一个配置文件,然后在配置文件里面加入以下内容(是新弹出来的配置文件里面)

    location /
    {
        index index.php;
        #ThinkPHP REWRITE支持
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?s=$1 last;
            break;
        }
    }

完整的就是

server {
    listen            80;
    server_name        devapi.sunxiaoning.com;
    root            /; # 自己的项目的位置
    #access_log        /; # 自己项目日志的位置
    include            vhosts/_nginx.vhost.fpm;
    location /
    {
        index index.php;
        #ThinkPHP REWRITE支持
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?s=$1 last;
                        # rewrite ^/index.php/(.*)$ /index.php?s=$1 last; # 域名后面有index.php
            break;
        }
    }
}

然后在nginx的配置文件里面的PHP里面加入:

location ~ \.php$ {
            root           /Applications/MxSrvs/www;
            fastcgi_pass   127.0.0.1:10080;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句  
            fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句
            include        fastcgi_params;
        }

我们可以利用python的PyPinyin库来获取汉字的拼音,我们先来写一个简单的案例

import pypinyin
print(pypinyin.pinyin( "小宁博客"))

# [['xiǎo'], ['níng'], ['bó'], ['kè']]

是不是很简单呢,我们只用了两行代码就实现了最基础的汉字转拼音。要是多音字怎么办呢?
这里PyPinyin也给我们做了处理了

from pypinyin import pinyin, lazy_pinyin, Style
x = "我画了一个长方形"
# 按照意思自动标识声调
print(pinyin(x)) # [['wǒ'], ['huà'], ['le'], ['yí'], ['gè'], ['cháng'], ['fāng'], ['xíng']]
# 列举出所有的声调
print(pinyin(x, heteronym=True)) # [['wǒ'], ['huà'], ['le', 'liǎo', 'liào'], ['yí'], ['gè'], ['cháng'], ['fāng'], ['xíng']]
# 忽略声调
print(lazy_pinyin(x)) #['wo', 'hua', 'le', 'yi', 'ge', 'chang', 'fang', 'xing']

我们来详细分析下这个函数pypinyin.pinyin(hans, style=<Style.TONE: 1>, heteronym=False, errors='default', strict=True)

  • 参数

    • hans汉字字符串。
    • style指定拼音风格,默认是 TONE风格。
    • errors指定如何处理没有拼音的字符。
    • heteronym指定是否启用多音字。
    • strict指定是否严格遵照《汉语拼音方案》来处理声母和韵母。

我们再来看下pypinyin.lazy_pinyin(hans, style=<Style.NORMAL: 0>, errors='default', strict=True)

  • 参数

    • hans汉字字符串。
    • style指定拼音风格,默认是 TONE风格。
    • errors指定如何处理没有拼音的字符。
    • strict指定是否严格遵照《汉语拼音方案》来处理声母和韵母。

自定义拼音库
自定义拼音库--载入用户自定义的单字拼音库`pypinyin.load_single_dict(pinyin_dict, style='default')

  • 参数

    • pinyin_dict (dict)单字拼音库。比如: {0x963F: u"ā,ē"}
    • stylepinyin_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

自定义拼音库--载入用户自定义的词语拼音库pypinyin.load_phrases_dict(phrases_dict, style='default')

  • 参数

    • phrases_dict (dict)词语拼音库。比如: {u"阿爸": [[u"ā"], [u"bà"]]}
    • style phrases_dict参数值的拼音库风格. 支持 ‘default’, ‘tone2’

附:风格列表

  • NORMAL = 0普通风格,不带声调。如: 中国 -> zhong guo。
  • TONE = 1标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> zhōng guó。
  • TONE2 = 2声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> zho1ng guo2。
  • TONE3 = 8声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> zhong1 guo2。
  • INITIALS = 3声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 #27_)。如: 中国 -> zh g。
  • FIRST_LETTER = 4首字母风格,只返回拼音的首字母部分。如: 中国 -> z g。
  • FINALS = 5韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ong uo。
  • FINALS_TONE = 6标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ōng uó。
  • FINALS_TONE2 = 7韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> o1ng uo2。
  • FINALS_TONE3 = 9韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ong1 uo2。
  • BOPOMOFO = 10注音风格,带声调,阴平(第一声)不标。如: 中国 -> ㄓㄨㄥ ㄍㄨㄛˊ。
  • BOPOMOFO_FIRST = 11注音风格,仅首字母。如: 中国 -> ㄓ ㄍ。
  • CYRILLIC = 12汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> чжун1 го2。
  • CYRILLIC_FIRST = 13汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч г。

我们下载最新的MxSrvs,安装后发现我们的PHP的版本是7.4,MySQL的版本是8.0,有时候我们项目版本用的不是这些,我们就需要切换各软件的版本,但是我们发现该软件默认是没有其他版本可以让我们切换的,我们只能先去下载好需要的版本。
首先点击上面的更多版本
1.png

我们就来到了下载界面,然后发现,支持很多呀,我们目前只需要下载我们需要的软件的版本就可以了
2.png

下载完成后,我们需要把下载下来的安装包解压,然后再放到MxSrvs里面的bin目录里面(一般情况是/Applications/MxSrvs/bin/

然后我们再打开控制台:输入sudo xattr -rd com.apple.quarantine /Applications/MxSrvs回车后,输入你的电脑密码就可以了。如果出现xattr: No such file:这样的错误那么你就输入sudo xattr -rd com.apple.quarantine ,先不要回车,打开访达,找到应用程序,把MxSrvs拖到控制台,回车。
最后我们重启软件,就可以切换版本了。
3.png

今天小编给大家推荐一款mac上好用的PHP的集成开发环境MxSrvs,MxSrvs里面集成了Nginx,MySQL,PHP,Redis等。另外你也可以根据自己的需要选择不通版本的的环境。是不是很方便呢。如果你已经安装完毕了,想切换里面软件的版本,请参考小编的另外一篇文章《MxSrvs切换PHP或者其他软件的版本

安装

首先小编在这里分享下MxSrvs的下载地址:https://089u.com/file/13710799-452788670
下载下来后就可以进行安装了,安装之后,打开之后会出现无法打开“php”,因为无法验证开发者这样的错误,小编在这里提供下解决办法:

  • 打开控制台:输入sudo xattr -rd com.apple.quarantine /Applications/MxSrvs回车后,输入你的电脑密码就可以了。如果出现xattr: No such file:这样的错误那么你就输入sudo xattr -rd com.apple.quarantine ,先不要回车,打开访达,找到应用程序,把MxSrvs拖到控制台,回车。
    做完这一步你就可以使用了,打开我们的MxSrvs,你就能看到以下界面了。
    MxSrvs.png

卸载

小编在这里在说下卸载的方式:

  • 首先通过控制台停止所有已运行的服务类组件。
  • 然后通过控制台取消所有组件环境变量。
  • 在配置菜单里面取消开机启动MxSrvs取消勾选
  • 删除目录~/Library/Application Support/MxSrvs
  • 删除程序/Applications/MxSrvs

使用Mac的小伙伴都知道Mac本身没有远程Windows桌面的控制工具,我们一般需要借助第三方的工具。之前常用的就是微软远程工具,但是太久没有更新了,升级系统后,现在已经无法使用了,之前还是蛮好用的,现在官方的下载地址小编也没法访问了,在这里给大家推荐另外一款远程桌面工具吧Microsoft Remote Desktop,这款软件也是免费的,使用起来也是比较方便的。在这里给大家分享下安装包:
链接: https://pan.baidu.com/s/18gTzXG3-sdIGNFaJrmDVSg 密码: m2a3

安装完成后,点击左上角的加号(new)
1.png

输入IP,登录用户名,密码,另外还可以,共享本机的文件,然后点击关闭
2.png
2.1.png

这时候就可以看到服务列表了,双击服务器列表的某一项就可以登录服务器了。
3.png

这个软件还是比较好用的,而且还是免费的。

另外小伙伴们也可以使用一些远程工具,比如向日葵远程桌面,也比较好用,服务器和本机都安装一个向日葵远程桌面的客户端,这样也可以远程服务器了。

python使用jieba库进行中文分词,我们可以吧一篇中文文章里面的词语提取出来进行分析,这时候我们可以采用jieba库,python2和python3都支持,目前jieba库支持3种分词模式:精确模式、全模式、搜索引擎模式,并且支持繁体分词,还支持自定义词典。

使用之前我们要先安装jieba库

pip install jieba

然后导入jieba库

import jieba
import jieba.posseg as pseg #词性标注
import jieba.analyse as anls #关键词提取

分词

我们首先看下精确模式、全模式、搜索引擎模式的输出情况,默认是精确模式。

  • jieba.cut 方法接受两个输入参数: 第一个参数为需要分词的字符串,cut_all参数用来控制是否采用全模式,默认是精确模式。
  • jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。

jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list

# 全模式
seg_list = jieba.cut("我要进行关键词提取", cut_all=True)
print("【全模式】:" + "/ ".join(seg_list)) 

# 精确模式
seg_list = jieba.cut("我要进行关键词提取", cut_all=False)
print("【精确模式】:" + "/ ".join(seg_list)) 


#【全模式】:我/ 要/ 进行/ 关键/ 关键词/ 提取
#【精确模式】:我要/ 进行/ 关键词/ 提取
#【搜索引擎模式】:我要/ 进行/ 关键/ 关键词/ 提取

精确模式,返回的是一个生成器,这对大数据量数据的分词十分重要。
全模式,可见全模式就是把文本分成尽可能多的词。

获取词性

我们还可以通过jiaba这个库把词性进行区分,比如动词,名词等

import jieba.posseg as psg

seg_list = psg.cut("我要进行关键词提取")
print([(s.word, s.flag) for s in seg_list])
# [('我', 'r'), ('要', 'v'), ('进行', 'v'), ('关键词', 'n'), ('提取', 'v')]

我们还可以提取动词或者名词,我们来提取下里面的动词

import jieba.posseg as psg

seg_list = psg.cut("我要进行关键词提取")
print([(s.word, s.flag) for s in seg_list if s.flag.startswith('v')])

获取出现次数最多的词语

from collections import Counter
c = Counter("我要进行关键词提取,我要进行学习,好好学习,天天向上。").most_common(3)
print(c)

添加字典增加准确性

我们可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率。
用法: jieba.load_userdict(file_name) # file_name为自定义词典的路径

并行分词

在文本数据量非常大的时候,为了提高分词效率,开启并行分词就很有必要了。jieba支持并行分词,基于python自带的multiprocessing模块,但要注意的是在Windows环境貌似不支持。
用法:
开启并行分词模式,参数为并发执行的进程数 jieba.enable_parallel(5)
关闭并行分词模式 jieba.disable_parallel()