mac下有道词典与lightroom冲突
发现在mac下同时开启有道词典与lightroom时,在lightroom中用触摸板调节属性参数时,会意外触发拷贝设置功能
解决办法就是暂时把有道词典关闭就可以了。这个比较坑啊,找了半天才发现是和有道词典有关系
发现在mac下同时开启有道词典与lightroom时,在lightroom中用触摸板调节属性参数时,会意外触发拷贝设置功能
解决办法就是暂时把有道词典关闭就可以了。这个比较坑啊,找了半天才发现是和有道词典有关系
出于速度的原因,把网站内容放到aws s3上了,之前放到github page上,发现速度不是很稳定,且有的时候出现不了能放问的情况
简单介绍下s3托管静态网站的使用
在s3上创建bucket,名子要和你的域名一样,如 www.youdomain.com
设置这个bucket,启动静态托管
登录你的域名后台管理平台,建立CNAME记录
桶的根结点类似 www.youdomain.com.s3-website-ap-northeast-1.amazonaws.com
设置bucket的权限策略,添加新的策略,权限为公开,这样才能让别人访问你的网站内容
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.youdomain.com/*"
}
]
}
上传文件到s3
使用aws s3命令行工具进行上传
aws s3 sync . s3://www.youdomain.com --exclude ".git/*" --delete
# 参数delete的作用是:删除目标路径中,源路径不存的文件、文件夹
进入你的网站存放路径,输入以上命令,文件就会被同步到s3了,如果一切正常,你就可以通过你的域名进行访问了。当然,你也可以使用分配给你的桶路径进行访问
使用ssh-add命令可以把私钥添加到ssh-agent,当登录远程主机中的程序(如:git push)请求对应的私钥时,可以由ssh-agent把本地私钥发送给远程主机(启动这个功能要在ssh配置中设置 ForwardAgent yes
)
添加私钥到ssh-agent
ssh-add /your_ssh_key_path
#=> Identity added: /Users/ga/.ssh/id
echo $? #查看是否添加成功
#=> 0 如果这里返回的不是0,则说明添加失败。如果你的key是加密的,在添加时还要输入密码
ssh-add -l #查看已经添加到ssh-agent中的key
#=> 2048 SHA256:9GlH51tb7Oxbxxxxxxxxxxxxxxxxxx
发现 Mac Air 右边(或左边)的USB接口在冷开机后,不能自动识别USB设备(极少的时候可以),但接上苹果自己的USB延长线,后就可以了,非常奇怪。网上说这是苹果的硬件设计所导致的,是硬伤。
目前发现的不能自动识别的设备有
PS: 这苹果的USB延长线官网卖140+一根,看来真是贵的有道理啊
在把博客迁移到Hexo后,发现不能被google收录,登录google webmaster后,发现是由于在迁移过程中产生了以下错误
- 网址/tag/被迁移为tags/
- 网址/categroy被迁移为categories
错误原因是hexo默认的标签和分类的名称为 tags、categories,而wordpress设置为tag、category,由于hexo使用是yelee主题,还需要修改它的标签云路径
要修改的文件
- hexo的配置文件_config.yml
- yelee的配置文件_config.yml及layout/_partial/page.ejs
hexo配置设置
# 设置tag与category的目录
tag_dir: tag #tags改为tag
category_dir: category
把博客又从aws迁移到Hexo了,真是折腾啊,迁移中处理了几个问题
搞了两天,终于迁移到docker了,docker确实优点挺多的,比如直接提供了应用程序的运行环境,当然还有很多,初次接触还不是很了解。这次迁移用到了两个docker:wordpress与mysql,使用这两个dock, 省去了安装mysql和php环境的工作
一下步的工作就是制作一个本站的docker image,这样以后随便放到那里就都可以使用了。
rails 2
validates_uniqueness_of :user_id, scope: [:friend_id, :something_else]
rails 3
validates :user_id, :uniqueness => {:scope => [:friend_id, :something_else]}
rails 启动后,会cached表的字段,如果在删除了某个字段,而没有重新启动rails,则rails依然加载这个字段,造成异常,开发模式也是如此
在苹果系统 xos 使用crontab定时任务时,出现/usr/bin/vi exited with status 1
解决方法
The issue turned out to be vi and nothing to do with cron. Doing
export EDITOR=vim
fixed it
用brew 安装 postgis (环境:postgre用的是mac版的postgre.app,psql用的是brew版的)
这样问题就来了,在安装postgis时,会查找psql,由于psql在/usr/sbin下,即用的是brew的,安装postgis时总是报错(具体错误大概是说不能解释postgre sql)。搞了半天没弄好。
决定把postgre.app的路径放到加载路径的最前面,/Applications/Postgres93.app/Contents/MacOS,放到路径最前面,再次安装postgis,一切安好。但undefined method `point’ for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:错误还是没有解决
# 如果key的数据类型不一致,会导致异常,其实这种情况已经不是第一次遇上了
# ArgumentError: comparison of Array with Array failed
hash = {c: 3, "a" => 1, b:2}
# 可以用hash#sort_by解决,把key统一成一致的数据类型
hash.sort_by{|k,v|k.to_s}
# 等效于
hash.sort_by{|h|h[0].to_s}
# 最终的输出结果为
#=> [["a", 1], [:b, 2], [:c, 3]]
method_missing 方法使用注意事项,其实最要应该注意的就是不能在method_missing 方法中出现找不到的方法,否则程序将掉入无限循环中
def method_missing(method, *args)
not_exist_method #一个不存在的方法
end
# 当程序进入method_missing方法后,发现找不到not_exist_method方法,则又会掉入method_missing,然后又会发现找不到not_exist_method,然后又掉入method_missing,然后loop...
# 这种陷阱一般很难发现,所以在method_missing中编写代码时,一定要小心
可以调用to_sql方法察看实际ORM输出出來的SQL,例如Event.open_public.recent_three_days.to_sql
Post.where(author_id: 1).order("id desc").limit(3).to_sql
# SELECT `posts`.* FROM `posts` WHERE `posts`.`author_id` = 1 ORDER BY id desc LIMIT 3
向Scope传递参数
class Event < ActiveRecord::Base
scope :recent, -> { |date| where(["created_at > ? ", date ]) }
# 等同于 scope :recent, lambda{ |date| where(["created_at > ? ", date ]) }
# 或 scope :recent, Proc.new{ |t| where(["created_at > ? ", t ]) }
end
Event.recent( Time.now - 7.days )
gem install rake
安装了10.1.0版本的rake(假设是最新的),当你直接使用调用rake时,使用的会是这个最新版本的rake。bundle exec就是为了解决这样的问题而存在的:在目前的Bundle环境里执行某个操作,这样对于不同的人来说,不论系统里是什么版本的Gem,总是会使用该项目Gemfile中指定的版本来执行某个操作
其他pry plugins
也可以裝一下,包括:
pry-stack_explorer 輸入 show-stack 的話可以看到 call stack
pry-debugger 可以加上 step, next, finish 和 continue 的控制
pry-nav:也因為 binding.pry 太好用。
社群也基於 Pry 繼續做了其他的 pry 的 plugin。最 killling 的就是 pry-nav。pry-nav 做的就是可以讓你在 binding.pry 的攔節點前後,作 next、step。直接一行一行的逐一 debug。相信我,如果你在寫通訊交涉的 Library,或者是正在改複雜的 Rails View
pry-remote
Pry 搭配 Rails,在往常的作法只有 rails s 可以叫出 debug console 而已。但很多人實際上是使用 Pow 作為開發用 HTTP Server。這樣的需求可以用 pry-remote 解決。pry-remote 的作法是把原本的 bindig.pry 改成 binding.remote_pry。而 binding.remote_pry 會開一支 DRb 起來,開發者再用 pry-remote 連到 debug console
sinatra使用Pry
pry -r ./application.rb #sinatra project, require application.rb rails c # rails project
pry 用法
show-method
显示当前对象的源码show-method Author#hi
显示Author#hi方法的源码.pwd
前面的.
是调用shell的命令,而非pry的本身的方法
rake 实例变量作用范围,可以看到在task的block中,当前self为main,所以@people可以在say方法中访问。
desc "test instance variable"
task :hello_world => :environment do
@people = "Jone"
puts self #=>main
def say
puts self #=>main
puts @people
end
say
end
#=>main
#=>main
#=>Jone
编译 ./configure --prefix=/srv/memcached/memcached145 --with-libevent=/usr/
需要安装 libevent ,安装时要确保知道安装路径
启动memcachedmemcached -d -u root -m 200 -P /tmp/memcached.pid
安装redismake PREFIX=/srv/redis/redis2815 install
启动:daemonize yes: Make redis run as a daemonredis-server /usr/etc/redis.conf
安装postgresql,遇到问题:Can’t find the ‘libpq-fe.h header
解决方法:
–with-pg=/path/pg –with-pg-lib=/path/2.
yum install postgresql-devel最终用方法2解决
yum list installed | grep postgres`
部署thin + nginx
生成配置文件
thin config -C /etc/thin/<config-name>.yml -c <rails-app-root-path> --servers <number-of-threads> -e <environment>
thin config -C /etc/thin/myapp.yml -c /var/rails/myapp --servers 5 --socket /tmp/thin.myapp.sock -e development
替换<config-name>为自己的应用名称,替换<rails-app-root-path>为应用的根目录,替换<number-of-threads>为启动的线程数,也就是启动多少个Thin服务,替换<environment>为运行环境。
thin:
environment: development
address: 0.0.0.0
port: 3001
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 512
wait: 30
servers: 2
daemonize: true
# require: []
启动: thin start -C config/thin.yml
停止: thin stop -C config/thin.yml
nginx:
server {
listen 3001;
charset utf-8;
root /var/rails/mysapp/public;
access_log logs/access.log;
error_log logs/error.log;
location / {
# proxy_pass http://rails_servers;
# proxy_redirect default;
proxy_redirect false;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass false;
if (-f $request_filename/index.html)
{
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://rails_servers;
break;
}
}
}
upstream rails_servers{
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}