Rails can't use byebug without Readline解决方案
在网上找了半天这个问题,各种千奇百怪的方法,可是就是没搞定,最后搞定的倒是挺容易的:
gem 'rb-readline'
最后加一句这个,针对缺少execjs/therubyracer,可以加上:
gem 'execjs'
gem 'therubyracer'
在网上找了半天这个问题,各种千奇百怪的方法,可是就是没搞定,最后搞定的倒是挺容易的:
gem 'rb-readline'
最后加一句这个,针对缺少execjs/therubyracer,可以加上:
gem 'execjs'
gem 'therubyracer'
今天折腾了一天,不写篇文章总觉得太浪费了,主要是昨天心血来潮想要把空领的一些文青版的文章拉下来备份(因为在WordPress在线编辑器上写不出东西啊!!),然后就测试了各种Markdown编辑器。
首先我觉得需要Skip的就是Mou、iA Write Pro以及Typed,因为他们实在只是一个写的平台,对于归档整理而言功能完全没有,虽然UI各有千秋,但并不在需求之内。
在线编辑器有印象笔记、为知笔记支持,印象笔记不太喜欢,Wiz的界面还没有到让我激发写作欲。
后来找到了三款(接下来依次介绍):
Ruby学了主要作用大概也就是写写脚本了(毕竟传说中的Python/Ruby二选一),躺在床上想到因为复制黏贴下来少回车,在有的Markdown中会解析为没换行,有的则是<br/>
,这让人非常的烦躁!所以需要处理一下,怎么处理最快——用脚本。
首先先匹配,在Ruby正则表达式中,+
匹配一次或以上,我们需要匹配\n
,所以需要用多行的模式m
。
re = Regexp.new(/\n+/m)
匹配替换用的是String.gsub
方法。表示替换全部,sub
只替换首次匹配的部分。
result = file.gsub(re, "\n\n")
OSX中的自带Terminal或者是bash很多人都不喜欢用,不过我觉得也足够满足我的需求了,只不过其显示方面还有点需要调整,说干就干!
今天晚上准备看Java教程,看到了Docker,然后研究了一下,突然想到Vagrant这个假期想看结果忘记了的东西。
Docker看了一下,发现这个相当于多人共用集成环境,但是隔离做得好,也就是切成一小块一小块来使用,大家的环境是相同的。
Vagrant,不要以为他们俩是一样的,实际上完全不同,Vagrant是统一打一个包,然后分发给各个开发者,让他们在自己的虚拟机里模拟。
Docker比较适合大规模的开发,而Vagrant则接近于随你喜欢——我可以用它来统一团队开发环境,也可以仅仅是想少开一个虚拟机而模拟服务器环境(尤其是你不用为了跑不动虚拟机和驱动支持而烦恼了!!!)。
那道卡了一个学期的生产者消费者问题,今夏开工,和小新讨论了半天怎么怎么折腾,然后踩到了不少坑。
需要用到Java+Rails+JavaScript,题目要求,不得不用。Java用于生产者消费者模型,剩下的用于前端显示。
最初的设计是轮询,换句话说,类似于Java写入数据库,然后刷新定时刷新读写,一遍遍去查找更新,这样当然是可行的,但是——好Low。
现在我们有了一个更好的解决方案,用WebSocket实现动态的、即时的更新。当然当初知识一个小想法,WebSockeet对我还很抽象,所以咨询了一下用过的小伙伴小新,得知差不多一个意思,查了各种资料,开工。
WebSocket的原理性介绍:https://github.com/abbshr/abbshr.github.io/issues/22
简单的来说是在运输层用TCP来进行通讯,而不是用HTTP协议,这很好理解嘛,跟Socket差不多一个意思(本来以为这辈子都不会用Socket因为不搞桌面开发)。
我一直觉得curl是命令中的战斗机,因为他能做的事情实在是太多了,虽然不知道Windows里有没有这样的命令,但是在*nux中实在太强了,不过使用起来花样多,所以这里记一下,转自:http://www.ruanyifeng.com/blog/2011/09/curl.html
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。
它支持多种协议,下面举例讲解如何将它用于网站开发。
直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):
curl www.sina.com
分几篇写太麻烦了,这是Rails+AngularJS坑中的最后一篇,我们讲讲Rails中的Session以及AngularJS中的Promise。
Rails+AngularJS自己折腾是因为教程写的又臭又长,而且不是中文,我在想,我只是把Rails当做一个Api,是不是根本用不着那么多麻烦,不就是传个json出来么?
Yes,That's right.
我们来回忆一下:Rails 实现用户登录存取Session思路总结当时篇尾戏剧性的变化,这次看的是http://guides.ruby-china.org,效果好很多,需要什么直接去查。
昨天真的依旧踩到了不少坑,这是其中的一个。
在directive里,其实scope究竟是拿来干嘛的,就目前我看来可以绑定传值,那么为什么我们要传值。
经过这次坑,总算是明白了不少。
Template或者TemplateUrl可以说是一个封闭的环境,换言之,你在外面用的在这里并不能用,如果需要用,要怎么办呢?用Scope把值传进去。
所以需要用ng-repeat的时候,最好的方法其实是将ng-repeat以template的形式进行遍历,假设我们有一个需要遍历的变量message
,在外围我们使用: list="message"
接下来我们对list进行双向绑定,也就是说两边随便哪一边变了他都会改变,用=
:
以前在一个网站上看到一个可以修改的框,以为是input,结果没想到是div,顿时觉得这是黑科技啊!!
然而并不是,后来我才知道有个attr叫做contentEditable,介绍见:http://www.w3school.com.cn/tags/att_global_contenteditable.asp
换言之这个so easy啦。
那么问题来了,AngualarJS里,我们可以在input里用ng-model来进行双向绑定,那么contentEditable呢?AngularJS目前并没有直接提供支持,但我们可以自己写。
使用一个directive
就能搞定这个:
/* 注册contentEditable支持ngModel */
app.directive('contenteditable', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
// view -> model
element.bind('blur', function() {
scope.$apply(function() {
ctrl.$setViewValue(element.html());
});
});
// model -> view
ctrl.$render = function() {
element.html(ctrl.$viewValue);
};
// load init value from DOM
ctrl.$render();
}
};
});