动态效果:transition,定义在css属性值改变的时候,经过多久渐变过去
transition property duration timing-function delay
transition-property none/all | property
transition-duration ?s
transition-timing-function linear/ease/ease-in/ease-out/ease-in-out/cubic-bezier(n,n,n) ,n=[0~1]
transition-delay ?s
动态效果animation
animation name duration timing-function deley iteration-count direction
animation-name none | @keyframe规定的动画名称
animation-duration ?s
animation-timing-function linear/ease/ease-in/ease-out/ease-in-out/cubic-bezier(n,n,n) ,n=[0~1]
animation-delay ?s
animation-iteration-count infinite | n,取值自然数
animation-direction normal/alternate,在偶数次数反向播放
动画名称@keyframes
@keyframes xxxname{
from {} to{}
0%{} …%{} 100%{}
}
transition和animation区别 1. transition真的改变css属性,并且在改变属性的时候产生动画,动画则没有(或许因此动画的效率高?)
2. transition相当于只有from和to,且只运行一次,但是to是可以动态改变的;
静态效果:transform
transform none | transfrom-functions;
matrix(n,n,n,n,n,n) matrix3d(n,n,n,n…..*16)
translate(x,y) translate3d(x,y,z) translateX(x) translateY(y) translatez(y) 沿着x,y,z轴移动x,y,z长度
scale(x,y) scale3d(x,y,z) scaleX(x) scaleY(y) scaleZ(z) 沿着x,y,z轴方向缩放x,y,z比例,取值0~1
rotate(angle) rotate3d(x,y,z,angle) rotateX(angle) rotateY(angle) rotateZ(angle) 沿着中心旋转,或者沿着x,y,z轴旋转,x,y,z取值0或者1,angle取值0~360deg
skew(x,y) skewX(x) skewY(y) 沿着X,Y倾斜的角度,取值-90~90deg,如果等于90,则因为太倾斜而消失。

1)需要确认整个页面(含各种链接资源)加载完毕后才执行,需要用js的onload事件。

<script>

window.onload = function(){

//回调函数

}

</script>

2)确认某一个资源加载完毕后执行,用id的onload事件

<img id="sugar_img" src="sugar.jpg">

<script>
sugar_img.onload = function(){//回调函数
}
<script>

测试发现,如果有两个元素是同一个id,则回调会失败。

3)上述资源回调的另一种写法:

<img onload="sugar_img()" id="sugar_img" src="sugar.jpg">

<script>
sugar_img = function(){//回调函数
}
<script>

4) 如果只是DOM加载完毕就执行,可以用jquery的$.ready()

 

 

HTML布局无疑是HTML+CSS了。另外使用jquery或vue.js更可以使得布局方便灵活;进一步的,CSS还有各种变体,LESS、stylus等让布局更方便。

Windows的C#,似乎力推的是WPF(XAML),用XML形式描述布局,而不是用C#语句一个个去创建和定义,应该方便了很多。

跨界,WxWidgets,支持不同操作系统和不同语言,如python、ruby。然而是使用程序的方式制造界面,并不喜欢。

1)安卓手机打开USB调试模式;

2)PC用USB连接安卓手机,驱动什么都装好;

3)PC端Chrome中输入:

chrome://inspect

这时应该已经看到了手机连接上了。

4)手机端用Chrome开启网页,这时候在PC端chrome上应该已经看到了手机上的网页名称;

5)PC Chrome上点击要调试的网页下面的inspect,开始调试

基于node.js、chromium的本地app开发框架electron,官方有三步安装使用法:

# Clone the Quick Start repository
$ git clone https://github.com/electron/electron-quick-start

# Go into the repository
$ cd electron-quick-start

# Install the dependencies and run
$ npm install && npm start

在npm install这一步,经常会出现下载出问题,如果是windows 10,将下载类似“electron-v1.4.3-win32-x64.zip”这样的文件,大约50MB,经常下一半就断了,下次还要重新来过。

这时候需要设置系统环境变量:

ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"

如果是windows,在“系统”-》“高级系统设置”-》“环境变量”-》“系统变量”-》“新增”中增加即可。

如果是linux,设置:

export ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"

我在deepin上(基于debian)安装了mysql后,发现只能从本机登陆而不能远程登陆。例如mysql安装在192.168.1.104上,使用root用户登陆,

远程登陆的命令是:

$mysql -h 192.168.1.104 -u root -p

返回的错误是cannot connect,而不是access denied话,就说明没有还没有去验证用户名密码就已经被拒绝了。

而使用:

$mysql -h localhost -u root -p

却是可以登陆的。

检查一下,使用

sudo netstat -apn | grep mysql

发现127.0.0.1:3306端口上有监听(listen)

------------ 问题解决 -------------------

在baidu上搜索“mysql开启远程连接”到的前几篇文章(包括一篇百度经验),其实都只说了其一,没说其二!

先说一下其一:

1)本地使用root登陆mysql

$mysql -u root -p

2)输入密码后登陆成功,为了不把root暴露,增加一个用户deepin,密码pswd

mysql>CREATE USER 'deepin'@'localhost' IDENTIFIED BY 'pswd';

3) 授予deepin完全权利。如果不想授权太多,可以去查一下grant命令,这儿不细说了;

GRANT ALL PRIVILEGES ON *.* TO 'deepin'@'%' IDENTIFIED BY 'pswd' WITH GRANT OPTION;

4)刷新生效:

mysql>flush privileges;

再说其二:

恩,百度上能搜到的教程到此为止了,可是你发现还是不能远程连接!你又百度搜索其他文章,发现所有的文章大同小异都是差不多的!你已经被百度坑了有没有。。。

由于谷歌被墙,用bing.com英文搜索到一篇,真正有用的,链接先贴出来:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

简单来说是需要修改my.cnf配置文件。我是debian系统,my.cnf打开my.cnf:

$sudo vim /etc/mysql/my.cnf

这儿与上面文章有点儿不同,文章里说找[mysqld]这个配置位置,可是my.cnf里没有。不过按照现在的配置文件喜欢多个文件互相include的风格,看到my.cnf里面有这么两句:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

大概这两个目录里都是mysql的配置文件吧!下面正式开始了:

1)在mysql.conf.d/目录里发现mysqld.cnf,就是这个了:

$sudo vim /etc/mysql/mysqld.cnf

2)先看看有没有skip-networking的配置项,没有就好,有就删掉或者用#注释掉

3) 最关键的就是修改bind-address,默认是:

bind-address = 127.0.0.1

改为服务器的实际ip,如192.168.1.104

bind-address = 192.168.1.104

最后看起来像是这样:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
bind-address    = 192.168.31.104
# skip-networking

4)重启mysql,在我的设备上是这样重启:

$ sudo  /etc/init.d/mysql restart

至此OK。

 

一、新建仓库

  1. 创建和进入一个空目录
    
    mkdir gitproj

cd gitproj


2. 初始化

git init


###二、clone 仓库

git clone httpxxxxxxxxxxxx


###三、加入代码

git add xxx.txt


增加所有改动的文件

git add -A


增加当前目录和子目录的文件

git add .


在windows上commit之前,要禁止CRLF转换,并解决中文文件名显示问题

git config --global core.quotepath false
git config --global core.autocrlf false

git commit -m 'xxxxx'


提交到远程仓库

git push

### 提交到新的远程仓库

git remote add origin https://e.coding.net/xxxx/postsales.git
git push

如果不想覆盖以前的仓库,可以这样增加一个新的push地址

git remote add kk https://e.coding.net/xxxx/postsales.git
git push kk


不错的站点:

http://www.ruanyifeng.com/blog/2014/06/git_remote.html

###四、每次git push不需要输入密码(windows)
第一个方法:
新建`C:\Users\你的电脑名\.git-credentials`文件
内容是:

https://username:password@github.com


第二个方法
执行如下命令:

git config --global credential.helper store

然后git push,这时会输入一次用户名密码,然后就会保存起来,保存在C:\Users\你的电脑名\.git-credentials,下次就不用输入了。
第三个方法(2018-12-15win7下检测失效)
在windows中添加一个HOME环境变量,变量名:HOME,变量值:%USERPROFILE%

进入%HOME%目录,新建一个名为"_netrc"的文件,文件中内容格式如下:

machine {git account name}.github.com
login your-usernmae
password your-password


重新git push即可,无需再输入用户名和密码

### TortoiseGit保存用户名和密码的方法
[TortoiseGit保存用户名和密码的方法](https://www.cnblogs.com/sapho/p/6140331.html)

使用mysqli_connect,在/var/log/nginx/error.log中,总是出现mysqli_connect找不到。。。按照数个解决此问题的方法,修改php.ini中下面一行去掉前面的注释分号:

extension=php_mysqli.dll

并重启nginx和php-fpm服务。

我在deepin里面有三个php.ini,位于/etc/php/7.0/下面的apache2, fpm, cli目录,全改了,还是不行。

搜索了一下,找不到和mysqli相关的文件,纳闷了,难道没有装?
看到网上还真有人说这个没在默认安装里面的。。。

用下面的命令安装:

sudo aptitude install php-mysqli

搞定!

1)python快速建立http服务器:
python -m SimpleHTTPServer

2)php也可以!一句话:

php -S localhost:8888

还可以解析php哦!(废话)

3)Node.js也可以快速建立,不过要装个包先:

npm install -g node-static

装好后运行:

static

就可以了!

linux的ftp好难得配置。。。
用python就好了:

Python版FTP服务器

Python没有内置一个直接可以用的FTP服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:

pip install pyftpdlib

安装完后,和HTTP服器类似,执行以下命令就可以启动一个FTP服务器了:

python -m pyftpdlib -p 21

后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:

ftp://localhost:21

默认ftp用户名anonymous是只读权限,如果要可写,加上-w, 改为:

python -m pyftpdlib -w -p 21

更多帮助,输入:

python -m pyftpdlib -h

display:flex感觉让布局容易了很多,作为初学者,发现有个坑,就是子元素对空间的分配,实际上是对父元素剩下的空间的分配,而不是对父元素所有空间的分配。
什么是剩余空间?如果父元素1000px,子元素a中写了几个字,占了100px,剩余空间就是900px。子元素b又写几个字,占了200px,就只剩下700px了。
涉及子元素几个属性:
flex-grow,后面带个数字,数字表明对剩余空间占得比例。
其他元素待查。

无论如何,vue.js都是坑很少的了,并且大多数坑是js本身所导致的,并且cn.vuejs.org上也说明了,不过如果你没注意看这些坑边的警告,就可能掉进去半天找不到问题出口。
举例是:
new Vue({ el:'body', data: { obj: {x:1}, arr: [1,2,3,{y:2}], } })
1. data中的数据,如果是对象{},再次给它赋值会破坏数据-视图绑定。如:
this.obj = {} //破坏绑定
所以别这么做,需要增加新的属性,直接:
this.obj.newkey = 'newvalue'
删除属性可以:
delete this.obj.x

2. 如果是数组,则千万不能直接对索引值赋值,这也会破坏绑定。
this.arr[1] = 9 //破坏绑定
要这么做:
this.arr.$set(1,9)
如果要增加新的,用push或者unshift
this.arr[4] = 7 //破坏绑定
this.arr.push(7) //这样是OK的

3. 只要不是直接对数组索引值,对索引值下面的属性是可以这么做的:
this.arr[3].x = 11 //不会破坏绑定

4. 貌似与对象不同,数组可以赋值为空数组而不会破坏把绑定
this.arr = [] //没有问题

php7支持mongodb
使用sudo pecl install mongodb安装的时候报错
configure: error: Cannot find OpenSSL's libraries

找到这篇文章:
http://languor.us/mongodb-linux-pecl-configure-error-cannot-find-openssls-libraries
改良一下:
apt-get install openssl apt-get install libsasl2-dev

mkdir -p /usr/local/openssl/include/
ln -s /usr/include/openssl /usr/local/openssl/include/openssl
ln -s /usr/lib/x86_64-linux-gnu /usr/local/openssl/lib

其中“x86_64-linux-gnu”目录在我的电脑里面是“i386-linux-gnu”,你的电脑里面可能不一样,找一下libssl.a或libssl.so在的个目录就行了。

下载 https://www.adminer.org/#download
adminer是单个php文件,不需要什么配置什么的乱七八糟的东西,
放到服务器上就能用,
mysql远程连接总是不知道被什么挡下来,总是返回10061错误,那就有adminer吧!