如果我想检查是否存在单个文件,我可以使用test -e filename或测试它[ -e filename ].
假设我有一个glob,我想知道是否存在名称与glob匹配的文件.glob可以匹配0个文件(在这种情况下我不需要做任何事情),或者它可以匹配1个或多个文件(在这种情况下我需要做一些事情).如何测试glob是否有匹配?(我不关心有多少匹配,如果我能用一个if语句而没有循环(仅仅因为我发现最可读)这样做是最好的.
(test -e glob*如果glob匹配多个文件,则失败.)
我一直在努力解决这个问题.
我在Snow Leopard机器上安装了Rails 3,gem,mysql.一切顺利,直到我创建了我的第一个项目并试图运行
rails server
Run Code Online (Sandbox Code Playgroud)
运行这个我得到:
jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
from script/rails:6:in `require'
from script/rails:6
jontybrook$
Run Code Online (Sandbox Code Playgroud)
据我所知,问题在于mysql2 gem.MySQL似乎运行正常,我的Gemfile引用了mysql2,我的database.yml文件似乎还可以.
错误提到
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)
但是
jontybrook$ cd …Run Code Online (Sandbox Code Playgroud) 我有两个申请.
一个是宣布许可和单身Activity:
部分的AndroidManifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:permission="your.namespace.permission.TEST" >
<activity
android:name=".DeclaringPermissionActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp"
android:host="myapp.mycompany.com" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
第二个声明是使用权限
部分的AndroidManifest.xml
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="your.namespace.permission.TEST" />
<application
Run Code Online (Sandbox Code Playgroud)
部分Activity:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("myapp://myapp.mycompany.com/index")));
}
Run Code Online (Sandbox Code Playgroud)
我正在安装应用程序声明权限,然后我运行第二个应用程序.
结果我得到安全异常:
01-11 09:46:55.249: E/AndroidRuntime(347): java.lang.RuntimeException: Unable to start activity ComponentInfo{your.namespace2/your.namespace2.UsingPErmissionActivity}: java.lang.SecurityException: Permission Denial: starting Intent …Run Code Online (Sandbox Code Playgroud) 当我在Python中进行浮点除法时,如果我除以零,我得到一个例外:
>>> 1.0/0.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: float division
Run Code Online (Sandbox Code Playgroud)
我真的很想得到NaN或Inf代替(因为NaN或者Inf将通过我的计算的其余部分正确传播而不是杀死我的程序).
我怎样才能做到这一点?
Ruby有两种引用标准输入的方法:STDIN常量和$stdin全局变量.
除了我可以分配一个不同的IO对象,$stdin因为它不是一个常量(例如在我的孩子中重新定向IO之前),STDIN和之间的区别是$stdin什么?我什么时候应该在我的代码中使用每个?
如果我重新分配$stdin,它会影响STDIN吗?
这也适用于STDOUT/ $stdout和STDER/ $stderr?
我一直习惯使用if,else-if语句而不是多个if语句.
例:
int val = -1;
if (a == b1) {
return c1;
} else if (a == b2) {
return c2;
} ...
...
} else {
return c11;
}
Run Code Online (Sandbox Code Playgroud)
它与例2相比如何:
if (a == b1) {
return c1;
}
if (a == b2) {
return c2;
}
....
if (a == b11) {
return c11;
}
Run Code Online (Sandbox Code Playgroud)
我知道功能明智,他们是一样的.但是,如果不这样做,最好的做法是 - 如果,不是吗?当我指出他可以用不同的方式构建代码库以使其更清晰时,它由我的一个朋友提出.这对我来说已经习惯了很长时间,但我从未问过为什么.
我已经看到了一些 问题,这指的是std::bad_function_call例外,但一直没能谷歌搜索是什么原因导致这个例外,找出任何.
什么样的行为应该导致这个例外?你能给我一些没有其他语义问题的最小例子吗?
我在Scala(源代码)(Scala 2.8 RC7)和Clojure(源代码)(Clojure 1.1)中编写了一个环网络拓扑模拟,用于比较Actors和Agents.
虽然Scala版本显示几乎恒定的消息交换率,因为我将网络中的节点数从100增加到1000000,但Clojure版本显示的消息速率随着节点数量的增加而减少.同样在单次运行期间,Clojure版本中的消息速率随着时间的推移而降低.
所以我很好奇Scala的演员如何与Clojure的特工比较?Agent本身是否比Actors更少并发或代码编写效率低(autoboxing?)?
PS:我注意到Scala版本中的内存使用量随着节点数量的增加(100万个节点> 500 MB)而增加很多,而Clojure版本使用的内存要少得多(100万个节点约100 MB).
编辑:
这两个版本都在相同的JVM上运行,并且所有JVM参数和Actor和Agent配置参数都设置为默认值.在我的机器上,Scala版本为100到100万个节点提供了大约5000个消息/秒的消息速率,而Clojure版本以100个节点的60000消息/秒开始,对于100万个节点减少到200个消息/秒.
编辑2
事实证明我的Clojure版本编写效率低下.我将nodes集合的类型更改list为vector,现在它显示了一致的行为:100个节点100000消息/秒,100000个节点80000消息/秒.所以Clojure Agent似乎比Scala Actors更快.我也更新了链接的来源.
我最近需要编写git hooks,用于引用特定票证的所有提交.
我希望有一个地方可以开始学习.pro git书中的所有内容都是用Ruby编写的.由于Ruby不是我强大的西装,任何人都可以分享有关用其他语言编写的git hook的教程吗?(我特别喜欢Python或Bash脚本.)
在这个关于bool和1的问题的评论中帮助解决正在进行的辩论:
符合标准的C++预处理器是否允许#define用户重新定义语言关键字?如果是这样,符合标准的C++预处理器是否允许这样做?
如果C++程序重新定义了一个语言关键字,那么该程序本身是否符合标准?