有时需要根据自己的工作场合去扩展 git 命令,比如 推送到仓库后自动打开浏览器跳转到发起合并求页面 分支命名比较长其相似度比较大时,自动补全不那么有效率,给每个分支编号,输入指定编号即可切换对应的分支 我最推荐的
基本类型以及范围
基本类型以及范围 选择优化的数据类型 MySQL 支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管 存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 更小的通常更好。 一般情况下,应该尽
去除重复行
先sort排序,再去重 :sort //直接排序 :g/^\(.*\)$\n\1$/d //去除重复行 :g/\%(^\1$\n\)\@<=\(.*\)$/d //功能同上,也是去除重复行 :g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d //功能同上,也是去除重复行 使用awk awk '!a[$0]++' file 解析: awk流程是逐行处理的,默认从文件的第一行一直处理到文件最后一行 还
whenever使用方式
根据项目的进展,我们需要实现后台进行定时读取信息的功能,而最关键的实现部分是周期性功能,根据调研,决定使用whenever来实现这一功能。
github:https://github.com/javan/whenever
开发前需要明确的问题
- whenever是怎样一种周期性机制?
- whenever能为我们提供什么功能?
- whenever为周期性任务提供了哪些控制方式?
问题解决
whenever周期性机制
vim中与系统的粘贴和复制
以前就遇到过的问题。有如下情景:
1.假设现在我要将文件a的部分内容复制到文件b中,一般情况,我会用
vs
或者sp
命令打开这两个文件然后用y
和p
进行复制粘贴。但是如果分别用vim打开这两个文件就不能完成上述动作。
2.假设我先在要把vim打开的源代码中的部分内容复制到博客中,一般我会用vim编辑好以后,退出用gedit打开,或者cat一下,再复制到系统剪切板,再粘贴。
今天,对于vim这个没办法跟“外界”交流的特性忍够了,决定解决一下。
1.首先,查看vim版本是否支持clipboard
vim --version | grep "clipboard"1
结果如下:
clipboard 前面有一个小小的减号,说明不支持。
2.如果不支持的话,需要安装图形化界面的vim,或者重新编译vim
sudo apt-get install vim-gnome1
ubuntu中添加服务以及开机自启
自定义脚本 编写自己的需要开启自启的脚本,如下: #!/usr/bin/env ruby `cd /home/mc/code/rails_app/master_crawler_trm && nohup rake real_time_extract_word > /dev/null 2&>1` 启动脚本 #!/usr/bin/env ruby start = " sudo -u mc /home/mc/bin/real_time_extract_words " stop = "ps -ef | grep real_time_extract_word | grep -v grep | cut -c 9-15 | xargs kill -9" action = ARGV[0] if action == 'start' system(start) puts "启动成功" elsif action == 'stop' system(stop) puts "
Rails连接多个数据库
假如已经连接的的数据库名是 word_development, 现在需要添加一个名为 trademark_development 和 trademark_test 的本地数据库 步骤如下: 添加配置信息 在 config/database.yml 添加如下信息 trademark_default: &trademark_default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> trademark_development: <<: *trademark_default database: trademark_development # 如果是远程的数据库添加如下信息 #username: username #password: 123456 #host: xxxx #port: xxx trademark_test: <<: *trademark_default database: trademark_test 关
触发器创建示例
摘抄自 《posrgreSQL 修炼之道 从小工到专家》 触发器(trigger)是一种由事件自动触发执行的特殊的存储过程,这些事件可以是对一个表进行 INSERT,UPDATE,DELETE 等操作 触发器经常用于加强数据库的完整性约束和业务规则上的
Rails5中的autoload和eager_load
翻译并整理: https://collectiveidea.com/blog/archives/2016/07/22/solutions-to-potential-upgrade-problems-in-rails-5 https://blog.bigbinary.com/2016/08/29/rails-5-disables-autoloading-after-booting-the-app-in-production.html autoload和eager_load autoload: 在常量使用之前不会加载,只有当使用一个当前不存在常量时,会在 autoload_paths 寻找,然后加载它,当在给定的目录中找不到这个常量时,就会触发错误。并且 autoload 是非线程安
ruby中hash的排序
翻译自 https://medium.com/@florenceliang/some-notes-about-using-hash-sort-by-in-ruby-f4b3a700fc33 ruby中的sort和sort_by 是两个非常有用的工具,我们可以按照自己的想法排序。比如我们可以按照名字字母表或者名字的长短进行排序。但是ruby文档中却没有过多的说明,因此本文主要说明一下
vim删除不包含特定字符串的行
:g/xxx/d,删除包含xxx的行 :v/xxx/d,删除不含xxx的行 :%s/xxx//gn,统计xxx个数,n表示只报告匹配的个数而不进行实际的替换。 详见「:help :v」或「help :g」
用ruby执行系统命令
反引号 返回标准输出 output = `ls` puts "output is #{output}" Result of above code is $ ruby main.rb output is lab.rb 反引号执行系统命令时,会把异常抛给主线程 反引号会从主进程新开一个进程执行命令,如果子进程发生异常,会传递给主进程,如果主进程没有对异常进行处理,主
xpath用法
整理自https://devhints.io/xpath#prefixes Descendant selectors h1 //h1 div p //div//p ul > li //ul/li ul > li > a //ul/li/a div > * //div/* :root / :root > body /body Attribute selectors #id //*[@id="id"] .class //*[@class="class"] …kinda input[type="submit"] //input[@type="submit"] a#abc[for="xyz"] //a[@id="abc"][@for="xyz"] a[rel] //a[@rel] a[href^='/'] //a[starts-with(@href, '/')] a[href$='pdf'] //a[ends-with(@href, '.pdf')] a[href*='://'] //a[contains(@href, '://')] a[rel~='help'] //a[contains(@rel, 'help')] …kinda
yakuake配置color-theme
打开管理配置, –> appearance –> new 给新的 color theme 命名(gruvbox),然后点击应用,保存。 打开 .kde/share/apps/konsole/gruvbox.colortheme,清空文件内容 在 manjaro 中, 该文件位于 ~/.local/share/konsole/ 目
rails发送qq邮件的配置
rails 中使用邮件服务是非常方便的,直接加配置文件就可以,参考指南 qq 邮箱正确的配置如下 production.rb / development.rb ActionMailer::Base.delivery_method = :smtp config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.action_mailer.default :charset => "utf-8" ActionMailer::Base.smtp_settings = { :address => 'smtp.qq.com', :port => 465, :domain => 'qq.com', :user_name => ENV['qq_mail_address'] # 授权码 :password => ENV['qq_mail_address'] :authentication => 'plain', :ssl => true, :enable_starttls_auto => true } 切记,qq 邮箱后台要开启