今天Ubuntu系统下的搜狗拼音突然抽疯了,中文输入的时候候选词区域都是全是一串无意义的英文字母,不知道是不是因为对Linux系统的支持问题还是怎么回事,解决办法也很简单,就是删除搜狗的配置文件,重新登录就好了,只是需要重新设置原来的配置
1 | cd ~/.config |
别忘了注销再登录哦
今天Ubuntu系统下的搜狗拼音突然抽疯了,中文输入的时候候选词区域都是全是一串无意义的英文字母,不知道是不是因为对Linux系统的支持问题还是怎么回事,解决办法也很简单,就是删除搜狗的配置文件,重新登录就好了,只是需要重新设置原来的配置
1 | cd ~/.config |
别忘了注销再登录哦
其实事情的起因很奇怪,前两天一直想升级Ubuntu 18.04,不知道为什么17.10用着怪怪的,但是18.04又要到4月26号才发布,没有办法了只能Beta 2先用着试试了。
然后就是一顿正常的操作
最近在学校做一个云计算大赛,需要搭建一个 hadoop 的平台(一共四台服务器,这是一个怎样的 hadoop 啊),搭建的中途遇到一个小插曲。
由于需要四台服务器能够互相免密访问,我们需要将四台服务器的公钥互相上传到各个机器,首先运行
1 | ssh-keygen -t rsa |
然后一直回车,最后会在你主目录下生成一个.ssh
目录,其中的id_rsa
是你的密钥,id_rsa.pub
是你要上传的公钥,known_hosts
是你连接过的主机的信息
我们需要在.ssh
目录下建立一个authorized_keys
文件,将各个主机的公钥信息存储在该文件下,然后各个主机就可以通过ssh免密登录了,至于具体的原理,大家可以网上自行科普一下,无非是一些加密解密的过程。
然而就在我以为万无一失的时候,造化弄人,我不管怎么搞都需要输密码,试过改ssh的配置文件也无法解决,最后google到一个解决方法,说是目录的和文件的权限问题,.ssh
目录的权限必须得是700,而文件authorized_keys
的权限必须是644,而我当时是664,这才导致无法进行免密登录,这里大家需要注意一下权限的问题,即使权限放大了也是不行的!
这两天在帮别人写一个注册登录功能的页面,用到了简单的 TP 框架,但是在我自己的 Ubuntu 环境下发现验证码出了问题——验证码图片显示不出来。
我将图片单独拉出来,发现错误提示如下:
1 | Call to undefined function imagecreate() |
百度一问就找到了答案,原来这是由于没有安装或者开启 PHP 的 GD 库导致的,既然这样我只需要安装一下 GD 库就解决了:
1 | sudo apt-get install php7.0-gd |
安装完毕后将 Apache 服务器重启,如果是 Nginx 的话,则可用可不用
如果是 Windows 环境的话,打开 PHP 安装目录下的 php.ini 配置文件,找到:
1 | ;extension=php_gd2.dll |
去掉注释,重启服务就解决了。
这两天笔者遇到了一个很操蛋的问题——Apache 无法解析 PHP 代码了,之前一直用的挺好的,突然就挂了,然后在网上疯狂的找解决办法,但是大都是php5的版本,而我却是7的版本,我就先顺便把5版本的解决方法贴出来:
修改apache的配置文件httpd.conf
在httpd.conf中找到:
AddType application/x-gzip .gz .tgz
在该行下面添加AddType application/x-httpd-php .php
再找继续找到:
DirectoryIndex index.html
,
把此行修改成DirectoryIndex index.html index.htm index.php
再找到:
#ServerName www.example.com:80
改成ServerName localhost:80
然而Ubuntu下的Apache并没有httpd.conf这个配置文件,而是通过一个apache2.conf来引用每个部分的配置文件,这样在一个配置包里找到那一句配置也并不简单,而且我还没有找到。。。
不过皇天不负有心人,终于是找到了解决办法:
1 | sudo apt-get install libapache2-mod-php |
这一步安装了apache的扩展包,可以用于解析php,我觉得不管是7版本还是5版本都可以适用。
笔者最近在自学 Python 的过程中想起曾经有人推荐过的一款学习编程的小游戏,叫做 Codecombat,通过玩游戏的方式学习编程语言的语法规则。
我们都知道 select 的基本用法select <字段名> from <表名> [where <限制条件>]
,然而select
语句后面还可以跟很多限制条件。我们这次用 user 表来作为示范,下面是 user 表的结构:
Python内置了字典Dict(全称Dictionary),使用键-值(key-value)存储,具有极快的查找速度。Dict的查找原理和查字典类似,key就相当于字典的索引,Python可以通过key计算出所对应的value存放的内存地址,直接取出,所以查找速度快。
Dict的初始化很简单,语法如下:
1 | >>> dict = {key1' : value1, 'key2' = value2, 'key3' = value3} |
一个key只能对应一个value,所以当我们对一个key多次赋值时会将前一个value覆盖掉。由于需要查找的key不存在时,dict会报错,为了避免key不存在的情况,Python提供了两种方法:
in
判断,如果key存在,就返回True
,反之返回False
:1 | >>> `key` in dict |
get
判断,如果key不存在就返回None(返回None的时候交互式命令行不显示结果),也可以是自己指定返回的内容:1 | >>> dict.get('key') #返回None |
dict.pop(key)
方法,对应的value也会从dict中删除。Set和Dict类似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中没有重复的key。要创建一个set需要提供一个list作为输入的集合:
1 | >>> s = set([1,2,3,4,5]) |
重复的元素会被set自动过滤,可以通过add(key)
方法向set添加元素,通过remove(key)
方法删除元素。我们可以将set看作数学意义上的集合,因此,两个set之间可以做数学意义上的交(&)、并(|)集等运算
CREATE DATABASE <数据库名> [其他选项]
USE <数据库名>
ALTER DATABASE <数据库名>
DROP DATABASE <数据库名>
1 | CREATE TABLE <表名> |
1 | ALTER TABLE <表名> add <列名> <列数据类型> [after 插入位置]; --增加列 |
insert [into] <表名> [(列名1,列名2,列名3……)] values (值1,值2,值3……);
update <表名> set 列名=新值 where 更新条件;
delete from <表名> where 删除条件;
select <列名> from <表名> [查询条件];