小编emk*_*emk的帖子

JavaScript中的JavaScript解析器

我需要在JavaScript源代码中添加一些轻量级的语法糖,并使用基于JavaScript的构建系统对其进行处理.有没有用JavaScript编写的开源JavaScript解析器?在V8或类似的高性能JavaScript实现上运行时,它们是否相当快?

感谢您提供的任何指示!

javascript parsing

68
推荐指数
7
解决办法
4万
查看次数

Rust结构可以两次借用"&"一个mut self,所以为什么不能有特质呢?

以下Rust代码成功编译:

struct StructNothing;

impl<'a> StructNothing {
    fn nothing(&'a mut self) -> () {}

    fn twice_nothing(&'a mut self) -> () {
        self.nothing();
        self.nothing();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我们尝试将其打包成特征,则会失败:

pub trait TraitNothing<'a> {
    fn nothing(&'a mut self) -> () {}

    fn twice_nothing(&'a mut self) -> () {
        self.nothing();
        self.nothing();
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我们:

error[E0499]: cannot borrow `*self` as mutable more than once at a time
 --> src/lib.rs:6:9
  |
1 | pub trait TraitNothing<'a> {
  |                        -- lifetime `'a` defined here
... …
Run Code Online (Sandbox Code Playgroud)

iterator lifetime rust

22
推荐指数
1
解决办法
2419
查看次数

为Eclipse编写一个新的重构插件?

有没有关于在Eclipse中实现新重构的好文档?具体来说,我想访问Java类的Java,进行一些非平凡的更改,并将结果保存回源文件.

到目前为止,我发现的唯一文档是(1)现有重构的源代码和(2)关于LTK和Java AST的一些文章:

我应该阅读其他任何文章或教程吗?

java eclipse plugins refactoring

21
推荐指数
1
解决办法
4698
查看次数

为可安装的Rails 3.1引擎列出'rake routes'

我正在开发一个可安装的引擎,用于Rails 3.1,我想列出引擎的路由.

我用以下方法创建了引擎:

$ rails plugin new rails_blog_engine --mountable
Run Code Online (Sandbox Code Playgroud)

编辑'test/dummy/config/routes'文件阅读:

Rails.application.routes.draw do
  mount RailsBlogEngine::Engine => "/blog"
end
Run Code Online (Sandbox Code Playgroud)

...和'config/routes'读取:

RailsBlogEngine::Engine.routes.draw do
  resources :posts
end
Run Code Online (Sandbox Code Playgroud)

我想列出为':posts'生成的路线,但目前尚不清楚我是如何做到这一点的.当我运行'rake app:routes'时,我只获得"/ blog"路线:

$ rake app:routes
rails_blog_engine    /blog    {:to=>RailsBlogEngine::Engine}
Run Code Online (Sandbox Code Playgroud)

当我运行'rake routes'时,我收到一个错误:

$ rake routes
rake aborted!
Don't know how to build task 'routes'
Run Code Online (Sandbox Code Playgroud)

我怎样才能看到':posts'的路线?我可以不重写相关的rake任务吗?

routes ruby-on-rails rails-routing rails-engines ruby-on-rails-3.1

21
推荐指数
2
解决办法
7601
查看次数

Ember.js,Express.js和Node.js的资产管道?

我正在使用Express.js作为后端构建一个Ember.js应用程序.现在,我单独加载所有*.js文件并将我的Handlebars模板存储在我的HTML文件中.我想用一个类似于Rails中的完整"资产管道"替换.在一个完美的世界中,这将支持:

  • 将CoffeeScript转换为JavaScript.
  • 使用Ember.js扩展预编译Handlebars模板.
  • 连接和缩小JavaScript和CSS(仅限生产).

我简要介绍了Require.js,connect-assets和convoy.前两个似乎没有提供任何简单的方法来预编译Handlebars模板,而Ember护航集成基于Ember的过时版本.

ember-runner还没有更新一段时间.grunt-ember-templates看起来是将Ember模板编译为单个*.js文件的合理方式,因此可能是更大解决方案的构建块.

是否有任何与Ember.js一起使用的Node.js资产编译系统?我很想有一个Node.js的等效烬护栏.

assets node.js express asset-pipeline ember.js

12
推荐指数
2
解决办法
7107
查看次数

在/ bin/sh中并行迭代两个列表

我有两个长度相等的列表,单个项目中没有空格:

list1="a b c"
list2="1 2 3"
Run Code Online (Sandbox Code Playgroud)

我想并行迭代这两个列表,将1与b配对,等等:

a 1
b 2
c 3
Run Code Online (Sandbox Code Playgroud)

我正在尝试支持现代便携式Bourne shell,因此Bash/ksh数组不可用.如果可能的话,向外推出awk是可以接受的,但我宁愿保持这种状态.

感谢您提供的任何指示!

shell sh

10
推荐指数
3
解决办法
1万
查看次数

获取winhttp.h的推荐方法是什么?

我们的应用程序使用libcurl for HTTP,我们希望能够访问Internet Explorer的代理设置.早期的Stack Overflow问题建议我们使用WinHttpGetIEProxyConfigForCurrentUserWinHttpGetProxyForUrl.

遗憾的是,winhttp.h我们的副本Visual C++ 2005或Visual Studio 2008似乎没有包含标题.显然,可以下载更新的Platform SDK并将其安装在Visual C++ 2005中,但这是一个非常痛苦的过程,它不会不一定适用于较新版本的Visual Studio.

是否有一种良好的,受到良好支持的方式从C++访问WinHTTP 5.1 API?或者我们应该避免使用这些API?

c++ windows sdk proxy winhttp

10
推荐指数
2
解决办法
1万
查看次数

抓狂!当Rust从C FFI调用时,没有产生线程

我正在为Duktape JavaScript解释器开发Rust包装器.在正常的用例中,调用堆栈将如下所示:

  1. Rust:任意应用程序代码.
  2. Rust:我的库包装器.
  3. C:Duktape翻译.
  4. Rust:我的Rust代码.
  5. Rust:任意回调到应用程序代码.

如果(5)调用会发生什么panic!?根据IRC上的各种Rust开发人员,尝试panic!从非Rust调用帧(如(3))内部可能会导致未定义的行为.

但根据Rust文档,捕获a的唯一方法panic!是使用std::task::try,这会产生额外的线程.还有rustrt::unwind::try,除了其他限制之外,它不能在单个线程中嵌套两次.

Benjamin Herr提出的一个解决方案是,如果(5)中的代码恐慌,则中止该过程.我已经将他的解决方案打包abort_on_panic为"工作"的价值,它似乎有效,包括"崩溃整个程序,但至少不会巧妙地破坏事物":

abort_on_panic!("cannot panic inside this block", {
    panic!("something went wrong!");
});
Run Code Online (Sandbox Code Playgroud)

但是,这是一种模拟std::task::try没有线程/任务创建的开销的方法吗?

error-handling multithreading ffi stack-unwinding rust

9
推荐指数
1
解决办法
1505
查看次数

更新具有私有字段的Rust结构的公共字段

我有一个Foo表示外部序列化格式的结构.Foo有几十个领域,而且还有更多的领域.令人高兴的是,所有新领域都保证有合理的默认值.

Rust有一个很好的语法,可以使用默认值创建结构,然后更新一些选定的值:

Foo {
  bar: true,
  ..Default::default()
} 
Run Code Online (Sandbox Code Playgroud)

类似地,我们可以使用类型的私有字段来表示"此结构在未来版本中可能包含更多字段"的概念PhantomData.

但如果我们将这两个习语结合起来,就会出现错误:

use std::default::Default;

mod F {
    use std::default::Default;
    use std::marker::PhantomData;

    pub struct Foo {
        pub bar: bool,
        phantom: PhantomData<()>,
    }

    impl Default for Foo {
        fn default() -> Foo {
            Foo {
                bar: false,
                phantom: PhantomData,
            }
        }
    }
}

fn main() {
    F::Foo {
        bar: true,
        ..Default::default()
    };
}
Run Code Online (Sandbox Code Playgroud)

这给了我们错误:

error: field `phantom` of struct `F::Foo` is private [--explain E0451]
  --> <anon>:23:5
   |>
23 …
Run Code Online (Sandbox Code Playgroud)

struct rust

7
推荐指数
2
解决办法
1377
查看次数

重新格式化C++括号而不改变缩进?

我们希望使我们的C++大括号样式更加一致.现在,我们的代码包含以下内容:

if (cond)
{
    // ...    
}
else
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

...和:

if (cond) {
    // ...
} else {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我们想要专门使用后一种风格.

但是,我们希望改变我们的代码的缩进.我尝试过使用astyle,bcpp,GNU indent和Uncrustify(我看过GreatCode的命令行选项).不幸的是,这些工具中的每一个都坚持重新定义我们的代码,并且大多数工具都非常糟糕地破坏了C++构造函数初始化程序列表和预处理程序宏.

是否有任何C++代码美化器可以修复大括号而只留下缩进?它不一定是一个预先存在的工具 - 如果你知道如何使用一些疯狂的Perl单线程,这也很好.谢谢!

更新:是的,我们知道这将使得难以读取旧代码的差异.这是一个长期推迟的代码清理,我们已经确定一致格式化的日常优势超过任何版本控制困难.

c++ formatting coding-style indentation curly-braces

6
推荐指数
1
解决办法
1444
查看次数

干净利落地获取git分支的abbrev-commit

我需要为特定的git分支提取缩写的提交名称.这些通常是7位十六进制数字,并且它们被某些系统(包括Heroku的COMMIT_HASH环境变量)用于标识特定提交.

获得缩写提交名称有几种丑陋的方法,包括:

$ git log -1 --oneline | awk '{ print $1 }'
d4377e3
$ git describe --always --match ''
d4377e3
Run Code Online (Sandbox Code Playgroud)

是否有更清洁的方法来获得这个价值?

git

4
推荐指数
1
解决办法
1851
查看次数

Ember.js的测试数据生成(如factory_girl或machinist)

我正在针对Ember.js应用程序编写单元和集成测试,当应用程序处于测试阶段时,我无法连接到服务器.这意味着我需要使用DS.FixtureAdapter来备份我的数据存储.

但我个人并不喜欢大型应用程序中的灯具,因为很难想出一套适用于每个测试用例的灯具.我更喜欢像factory_girl和machinist这样的工具,它允许我生成与所有其他测试隔离的特定于测试的数据:

FactoryGirl.define do
  factory :user do
    name 'John Doe'
    date_of_birth { 21.years.ago }
  end
end

# In specific test cases:
user = FactoryGirl.build(:user)
young_user = FactoryGirl.create(:user, date_of_birth: 17.years.ago)
Run Code Online (Sandbox Code Playgroud)

当然,factory_girl和machinist也可以自动生成相关模型.

现在有没有简单的方法在Ember.js中做到这一点?是否有技术,惯例或库可以使这更容易?谷歌搜索还没有真正的选择.

testing machinist ember.js factory-bot

4
推荐指数
1
解决办法
846
查看次数

在Rust中同步对FFI调用的访问(通过全局RWLock?)

我正在尝试为C FFI库构建一个Rust包装器,但底层库有一些不是线程安全的函数.要访问这些函数,我需要某种全局锁来保护C库的状态.

有没有办法使用全局std::sync::RWLock或类似的机制来控制对C库的访问?

各种明显的解决方案都失败了,因为Rust不允许使用非平凡的全局初始化器:

error: function calls in constants are limited to struct and enum constructors [E0015]
example.rs:18 static global_state_lock: RWLock<()> = RWLock::new(());
Run Code Online (Sandbox Code Playgroud)

multithreading locking ffi rust

4
推荐指数
1
解决办法
440
查看次数