初果实验室

  • Python输入函数input的使用

    当程序的运行需要接收用户输入时,这时可以使用input函数来实现。

    input函数可以读取用户输入的内容。

    例如,程序想知道你的名字,并输出欢迎语:

    print("what's your name")
    
    name = input()
    
    print("Welcome " + name )

     

    [ONE234-P101a]

  • Python打印输出函数print的使用

    任何编程语言都有一个基本的输出函数,python语言使用的是 print

    当程序中需要输出内容时,就可以使用 print 函数,当然也是开发调试时最直观的工具。

    使用示例:

    #打印数字
    print(1)
    #打印字符
    print('a')
    #打印字符串
    print('hello world')
    #打印变量
    a = 10
    print(a)
    #一次打印多个变量,用逗号分隔
    a = 10
    b = 20
    print(a, b)
    #指定分隔符和结尾追加字符
    a = 10
    b = 20
    #a和b以sep参数指定的逗号连接,末尾添加句号。
    print(a, b, sep=',', end='.')
    
    #输出 10,20.

    注意:

    函数每次输出的结尾,会追加输出一个换行符,如果不需要,可以置end参数为空即可。

    [ONE234-P100a]

  • Ubuntu 16.04.2 LTS php7.2 安装 redis 扩展

    参考文章

    https://www.cnblogs.com/zzming/p/10018096.html

    wget http://pecl.php.net/get/redis-4.2.0.tgz
    
    tar -xzvf redis-4.2.0.tgz
    
    cd redis-4.2.0
    
    phpize7.2
    
    ./configure --with-php-config=/usr/local/php7.2/bin/php-config
    
    make && make install
    
    extension=redis.so >> /etc/php/7.2/fpm/php.ini
  • python pprint格式化json

    例如在开发中,命令行访问某个url,返回内容为json,可以使用pprint格式化,方便查看内容。效果类似于json.tool

    import json
    import pprint
    import sys
    import urllib.request
    
    url = str(sys.argv[1])
    with urllib.request.urlopen(url) as response:
        j = json.loads(response.read().decode())
        pprint.pprint(j)
    
    

     

  • Ubuntu 16.04.5 LTS安装lynx

    使用apt安装方式

    apt install lynx

    下载源码安装方式

    安装依赖

    apt install ncurses-dev

    去官方网站下载源码

    访问 https://lynx.invisible-island.net/current/

    wget http://invisible-island.net/datafiles/release/lynx-cur.tar.gz

    tar xzf lynx-cur.tar.gz

    cd lynx2.9.0dev.1

    ./configure

    make

    make install

    安装完毕

    使用

    lynx <url>

    即可显示网页的内容,对于https的访问,需要配置ssl证书。

  • Ubuntu 18.04.1 LTS 安装mysql

    Ubuntu 18.04.1 LTS 安装mysql命令

    apt install mysql-server

    安装完毕后,在命令行输入mysql,即可登陆数据库控制台

    默认使用数据库的root账号登陆了

    如果期望设定root账号的密码,可以先执行查询

    select Host,User,authentication_string from mysql.user limit 10;

    可以看到root用户未设定密码

    按顺序执行下列命令

    update mysql.user set authentication_string=password(‘88884444′) where user=’root’ and Host =’localhost’;

    update user set plugin=”mysql_native_password”;
    flush privileges;

    即可将密码修改为88884444

    下次登陆数据库时,使用命令

    mysql -hlocalhost -uroot -p

    然后数据密码88884444即可登陆

  • Ubuntu 16.04 LTS 安装php7.2

    因项目要使用到Laravel,但Laravel要求php >= 7.1.3

    我的本地系统为 Ubuntu 16.04.4 LTS ,php版本为7.0

    当前php7.2已经有稳定版本发布,所以计划直接升级到php7.2

    因php7.2版本比较新,并未收录在ubuntu 16.04.4 LTS 默认的软件包里面

    所以就需要添加PPA(Personal Package Archives)

    以下是添加和安装的步骤:

    sudo apt-get update
    
    sudo apt-get install python-software-properties
    
    sudo apt-get install software-properties-common
    
    add-apt-repository ppa:ondrej/php
    
    apt-get install -y php7.2

    参考文档

    https://tecadmin.net/install-php-7-on-ubuntu/
    https://www.liquidweb.com/kb/install-php-7-2-ubuntu-16-04/

    安装基础扩展

    apt install php7.2-fpm

    apt install php7.2-mbstring

    apt install php7.2-mysql

    安装redis扩展

    某些系统由于语言问题安装不成功的解决办法:

    locale-gen en_US.UTF-8
    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8

    问题讨论:https://github.com/oerdnj/deb.sury.org/issues/56

  • WordPress上传图片出错常见原因分析

    WordPress上传图片出错常见原因分析,以Linux/Ubuntu 16.04 LTS 操作系统为例说明。

    1.  目录权限问题

    如果PHP进程所属用户没有 uploads 目录的写权限,上传就会失败。

    可以使用命令 ps -ef | grep fpm 来查看,默认的用户名一般是 www-data

    然后使用命令 ls -l 查看图片存储目录的属主和权限

    如果目录属主不一致,使用 chown www-data:www-data uploads -R 将uploads的所属用户和所属用户组修改为www-data

    如果目录不可写,使用 chmod 0777  uploads -R 将uploads的目录权限修改为可写,

    当php-fpm进程和uploads目录所属用户一致,并且开放了写权限,就规避了无法写入的问题。

    当然,也不一定要求两者所属用户一致,uploads目录开放了其他用户的写权限,php-fpm进程也是可以写入的。

    2. PHP配置参数原因

    php 通过两个参数来控制客户端发送数据包的大小,分别是 post_max_size upload_max_filesize

    post_max_size 设置了客户端向服务端发送数据的大小,

    upload_max_filesize 设置了上传文件的最大值,

    具体的大小,可以通过phpinfo()函数来查看,上传的媒体文件大小如果超过了这两个值,就会出现错误,

    在phpinfo()函数页面,找到Loaded Configuration File对应的文件,就是当前运行环境的配置文件,

    将其值修改为期望的大小,然后重启php-fpm进程就可以了。

    service php7.0-fpm restart

    3. Nginx/Apache配置参数原因

    以Nginx为例,为了保证服务器稳定,也有一个默认的限制发送来的HTTP数据包大小的配置参数  client_max_body_size

    通常这个配置并未出现在Nginx的配置文件里面,但是如果遇到Nginx 报 413  Request Entity Too Large Error这样的错误,就说明请求的数据内容超出了限制。

    如果要自定义这个参数,只需在 Nginx 的配置文件/etc/nginx/nginx.conf里面的http{….}之间添加一行代码

    client_max_body_size 10M;

    这样就把上传文件的大小设置为最大10M了

    然后执行下面的命令重新载入 Nginx 的配置即可生效

    service nginx reload

    以上3点是遇到WordPress不能上传图片或者媒体文件时应该注意的地方。

     

  • Apache 捕获HTTP头部Authorization字段

    如果业务使用了JSON Web Token 进行身份认证,

    需要 Web server 如 Apache ,

    能够解析 HTTP header 数据中的 Authorization 字段,

    需要在 .htaccess 文件中添加如下配置即可。

    RewriteEngine on
    
    RewriteCond %{HTTP:Authorization} ^(.*)
    
    RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
    
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

    参考链接:

    https://github.com/bitnami/bitnami-docker-wordpress/issues/104

  • vim调试PHP工具vdebug的使用

    vdebug是一款vim下的代码调试工具,支持多种语言如PHP, Python, Perl, Ruby

    如果你是使用Vundle管理vim插件,安装vdebug非常简单,只需要在vim添加一行配置

    Plugin ‘vim-vdebug/vdebug’

    然后在vim中输入命令:PluginInstall自动安装,成功后就可以调试了。

    调试命令:

    F10  添加/删除断点

    F5开始调试

    F2 逐行调试

    F4 跳到断点

    F6 结束调试

    详细文档请访问

    https://github.com/vim-vdebug/vdebug

    如果是PHP,调试前需要安装PHP的调试扩展Xdebug