Ckeditor在生产环境的特殊待遇

  • Rails : 3.2.3
  • Ckeditor : 3.7.1

官网

https://github.com/galetahub/ckeditor

使用它在开发环境(development)没问题,生产环境(production)就会有不显示的问题。

按照这种方法

https://github.com/galetahub/ckeditor/issues/126#issuecomment-5975743

在config/environments/production.rb中这样处理

config.assets.precompile += %w( ckeditor/* )

再次执行编译

rake assets:precompile

就可以了。

facebook移动Web开发

改变浏览器的User Agent

[Firefox]

安装插件
https://addons.mozilla.org/ja/firefox/addon/user-agent-switcher/

各种终端的User Agent的例子
・Nexus S Android 2.3.4
Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; Nexus S build/GRJ22) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
・Xperia arc SO-01C Android 2.3.1
Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; AO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
・iOS 5
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
・iOS 4.3.5
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5

[Chrome]

Tool -> Developer Tools -> 齿轮图标 -> Override User Agent

facebook直接看touch模式

http://touch.facebook.com

官方文档

http://developers.facebook.com/docs/guides/mobile/mobileweb/

Google Map开发

官方网站

https://developers.google.com/maps

教程

https://developers.google.com/maps/documentation/javascript/tutorial

基础知识

https://developers.google.com/maps/documentation/javascript/basics

在地图上定位地点、显示谈起信息的例子

载入 Google Maps API
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
https://maps.google.com/maps/api/js?sensor=true

显示地图
var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': '香港' }, function(result, status) { if (status == google.maps.GeocoderStatus.OK) { var latlng = result[0].geometry.location; var options = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById('map'), options); var infoWindow = new google.maps.InfoWindow({ content: '
好地方

去旅游啊!
', position: map.getCenter() }); infoWindow.open(map); } else { } });

git基础

git是什么

# 官方网站
http://git-scm.com

# 书
http://git-scm.com/book

设定git

git config --global user.name "(your name)"
git config --global user.email "(your email)"
git config --global color.ui true       # 打开颜色界面
git config -l                           # 查看设置内容
git config --help                       # 查看帮助
git help config                         # 同上

初始提交

git init
git add
git commit
git log

查看git的日志

git log --oneline                       # 一行显示
git log -p                              # 查看变更的地方
git log --stat                          # 查看变更的文件

查看现在的状况

git status                              # 修改了文件后,会提示被修改的文件
git checkout -- index.html              # 还原被修改的文件

确认不同的文件

git diff
git diff --cached                       # 查看缓存中的文件变更处

用git操作文件

git add .
git rm / git mv

设定git管理不包含的文件

.gitignore                              # 添加到这个文件中

修改刚刚执行的提交

git commit -m "(message)"               # 附上信息提交
git commit --amend                      # 这样就不用再次写提交信息了

返回到历史版本

git reset --hard HEAD                   # 返回到提交前的状态
git reset --hard HEAD^                  # 返回到提交前的前一条(log的最新记录从上数第二条)
git reset --hard HEAD [ID]              # 返回到指定ID的那条
git reset --hard ORIG_HEAD              # 取消一个合并(merge)或拉取(pull)

使用分支

git branch                              # 显示当前分支处
git branch (branch name)                # 建立新分支
git checkout (branch name)              # 移动到某分支
git checkout -b hogehoge                # 建立并移动到新分支

合并分支

git merge (branch name)                 # 例:在 master 分支合并 hoge 分支
git branch -d (branch name)             # 删除分支

解决合并的冲突

git merge hogehoge                      # 在 master 分支处合并 hogehoge 分支
# 发生冲突...
git status                              # 查看状态
# 信息:both modified: index.html
vim index.html                          # 修改发生冲突的文件
# 文件表示的形式
<<<<<<< HEAD
line 1st

======
line first
>>>>>>>> hogehoge
# 修改文件,删除多余的内容,如只留下
line 1st
# 保存退出
git add .
git commit -m "conflict fixed"

使用tag

git add .
git commit -m "line 2 added"
git tag v1.0                            # 建立版本为v1.0的标签
git tag                                 # 显示标签版本
git show v1.0                           # 显示v1.0处变化的内容
git log                                 # 查看历史中的ID
git tag v0.9 b8a29b5892834ac5e          # 建立版本为v0.9的标签(指定ID)
git tag -d v0.9                         # 删除版本为v0.9的标签

使用别名

git config --global alias.co checkcout  # 把checkout设置成co
git config --global alias.st status     # 把status设置成st
git config --global alias.br branch     # 把branch设置成br
git config --global alias.ci commit     # 把commit设置成ci

git st                                  # 相当于执行git status
git config -l                           # 查看设置文件中的设置项

初次的共同工作

mkdir ourweb.git
cd ourweb.git
git init --bare

推送到公共库

# 在myweb目录下
git remote add origin ~/ourweb.git      # 添加远程库
git config -l                           # 查看远程库的位置信息
git push origin master                  # 推送到origin

共享库的内容

git clone ~/ourweb.git/ myweb2          # 把库的内容克隆到并建立myweb2目录下
# 做些修改并提交
git push origin master                  # 推送到库

# 其他人员(myweb目录)
git pull origin master                  # 拉取库中最新内容

解决共享时的冲突

# B人员修改文件、提交并推送完毕;A人员再修改文件、提交并推送,冲突发生。
# A人员
git pull origin master                  # 拿最新的内容
vim index.html                          # 修改冲突的文件
git commit -am "conflict fixed"         # 添加并提交
git push origin master                  # 可以推送

UNIX命令基础(一般用户篇)

登录、登出

ssh username@servername.com
exit

更换密码

passwd

移动目录

pwd           # 显示当前目录路径
cd /home      # 移动到home目录
cd /          # 移动到root目录
cd 或 cd ~    # 移动到当前用户的home目录,如:/home/user
cd .          # 移动到当前目录(没意义吧)
cd ..         # 移动到上级目录

查看目录中的内容

ls            # 列表查看(flow并列形式)
ls -la        # 列表查看(竖形式,并显示带扩展名的文件)

查看目录的详细信息

d rwxr-xr-x 21 root root 4096 12月 7 21:51 var
# directory(是目录就显示d,不是就不显示) 权限(所有者、用户组、所有人) nil 所有者 用户组 文件大小 最终更新日期 文件名
# r:read
# w:write
# x:excute

理解权限

chmod 755 ()
# 4:r
# 2:w
# 1:x

建立、删除目录

mkdir
rmdir

文件的建立、删除、复制、移动

vim
rm
cp
mv

查看文件内部

cat
less / more
head / tail

*和?的使用

# 目录中有文件:test1.txttest2.txttest3.txttest4.txttext5.text
rm *.txt         # 删除所有.txt文件
rm test5.te?t    # 删除text5.text文件

使用find

# find [目录] -name
find . -name "test_*"          # 当前目录下所有test_开头的文件(包括test_为目录名的情况)
find . -name "test_*" -type f  # 当前目录下所有test_开头的文件
find . -name "test_*" -type d  # 当前目录下所有test_开头的目录

使用grep

# grep -[选项] [要查的文字] [对象文件]
grep 111 *        # 当前目录下所有包含111的文件
grep -c 111 *     # 当前目录下所有文件中包含111的count数
grep -r 111 *     # 当前目录下所有包含111的文件(包括子目录中)
grep -rc 111 *    # 当前目录下所有文件中包含111的count数(包括子目录中)

命令行便利的用法

tab
↑↓
history
!411             # 执行操作历史中411号的命令
!!               # 执行刚刚执行的一次操作
!gr              # 执行最新的一次gr开头的命令
!gr:p            # 查找被执行过最新的gr开头的命令

便利的小技巧

man grep         # 查看grep用法的手册
tree             # 以树形式查看当前目录
date             # 查看当前系统日期和时间
cal              # 查看当月日历
cal -y 2030      # 查看2030年的日历
wc test1         # 查看test1文件的行数(包含其它),返回:8 7 29 test1。其它数字的含义,执行man wc确认
wc -l test1      # 只查看test1文件的行数,返回:8 test1

vim基础

自带教程

vimtutor

vim的模式

* 正常模式
* 输入模式
* 命令模式
* 可视化模式

保存、读取文件

:w                   # 写入
:q                   # 退出
:q!                  # 强行退出
:e                   # 在当前打开的文件中打开其他文件,例::e login.html

移动

gg                   # 最上方
G                    # 最下方
CTRL + f / CTRL + b  # 向下移动一页 / 向上移动一页
w / b                # 单词单位的移动
^ / $                # 移动到一行的最后
f                    # 移动到指定符号或字母处,例:f u (移动到当行u字母处),移动到下一个u时,加";"
%                    # 在方法的括号处按下,移动到括号结束处

可视化模式

v                    # 文字单位的可视化模式
V                    # 行单位
CTRL + v             # 矩形单位
gg V G               # 全选

剪切、复制、粘贴

x / dd / 5dd         # 删除一个字符 / 删除整行 / 删除5行
yy                   # 复制当前行
p                    # 粘贴

查询

/(查询语句)
n / N                # 向下 / 向上查询
* / #                # 向上 / 向下查询现在游标所在处的单词

替换

:s/foo/bar/          # 把foo替换成bar
:%s/foo/bar/g        # 把全部foo替换成bar
:%s/foo/bar/gc       # 全部替换时,一个一个确认

取消操作

u                    # 撤销操作
CTRL + r             # 还原操作

分割窗口

:sp                  # 横分割
:vs                  # 竖分割
:close               # 关闭当前窗口

使用tab

:tabnew              # 打开一个新tab
:tabe                # 打开一个新tab并打开一个文件,例:tabe login.html
gt                   # tab切换
:tabclose            # 关闭tab

重复刚刚的操作

.

缩进

=
# 根据OS,在“~/.vimrc”文件中加入“:filetype indent on”才可使用

使用补全功能

CTRL + n             # 自动补全当前文件中存在的单词

选择矩形后编辑

CTRL + v  I (编辑) Esc    # 一次编辑矩形多个内容

处理文本对象

cit                  # 直接编辑当前tag下的内容,例:<title>Login</title>,在<title>中可直接跳到Login并编辑
cat                  # 删除当前tag全部内容并编辑

# 说明
c/d/y : change (delete & insert)
i/a : 中间或全部
t/"/)/]: tag         # 例:<meta change="utf-8">,在tab中按ci"可删除utf-8的内容并编辑

使用便利的设定

:set number / :set nonumber            # 显示/不显示行号
:syntax on / syntax off                # 语法高亮与否
:set tabstop=4                         # tab间距为4
:set ignorecase / :set noignorecase    # 忽略大小写与否