是否需要更少的检查/不那么严格的代码分析来提供开发环境错误反馈和自动完成编程语言,这些编程语言主要由人类可读的短语和单词组成(即Python,VB.NET)?这与C风格的语言形成对比,后者更多地依赖于代码结构的符号和标点符号.
我正在尝试为我们的MVC5.1应用程序预编译视图以提高第一个加载性能(有关更多上下文,请参阅此问题).
我正在玩aspnet_compiler.exe:
aspnet_compiler -p d:/path/to/myapp/ -v myapp
Run Code Online (Sandbox Code Playgroud)
我可以肯定地看到正在进行的编译 - 关于Obsolete方法使用的警告.但它把结果放在哪里?
在实验之前我已经清理过Temporary Asp.Net Files,只是为了看到结果.编译结束后,什么都没发生.双方c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\并c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\仍然是空的.
我也尝试使用精确路径执行虚拟路径
aspnet_compiler -p d:/path/to/myapp/ -v d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)
那个文件夹留空了.但是编译器的第二次运行要快得多,因为我没有清理构建.这让我觉得结果可以在某处获得.
所以我的问题是:它在哪里存储编译结果?如何让IIS使用这些结果而不是实时编译?
更新:我已经找到了如何捕获编译的输出.只需将路径指定为最后(或第一个)参数:
aspnet_compiler -p d:/path/to/myapp/ -v / d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)
这就留下了一个问题,我怎样才能让IIS拿起它?
我正在尝试重构一些代码。我的方法(使用vi)是将旧库从/ lib复制到/ lib2。这样,我可以破解大部分内容,但仍然有一个重构框架。
所以我继续将mymain.p6标头从更改use lib '../lib';为use lib '../lib2';。然后我删除其中的几行,../lib2/mylibrary.pm6并确保:w正在执行我所期望的。
想象一下,尽管我的程序尽管已被大量删除,但仍然可以正常运行,但我感到惊讶。当我rm -R / lib时它甚至可以工作,所以那里的任何东西都没有持久。
我有机会躺在旧的lib模块的precomp周围吗?如果是这样,我怎么冲洗它?
这是基于实现Perl 6.d的MoarVM版本2019.03构建的Rakudo Star版本2019.03.1。
运行:
bundle exec rake assets:precompile RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
大约250kb的15个.js文件需要大约6分钟.它不应该花这么长时间吗?我看到"Microsoft基于控制台的脚本主机"在大部分时间里都处于平稳状态.
人们推荐/知道什么是可能的?有没有办法用Ruby-Racer或其他javascript V8引擎实现替换它?或者找出我的代码中导致时间长的问题?或者是其他东西?
我正在考虑以下问题:我想用一个使用某种查找表的程序编程一个微控制器(比如一个AVR mega类型).
第一次尝试是将表定位在单独的文件中,并使用任何其他脚本语言/程序/创建它.在这种情况下,为C创建必要的源文件需要付出相当大的努力.
我的想法现在是使用预处理器和编译器来处理事情.我尝试用一个正弦值表来实现它(仅作为示例):
#include <avr/io.h>
#include <math.h>
#define S1(i,n) ((uint8_t) sin(M_PI*(i)/n*255))
#define S4(i,n) S1(i,n), S1(i+1,n), S1(i+2,n), S1(i+3,n)
uint8_t lut[] = {S4(0,4)};
void main()
{
uint8_t val, i;
for(i=0; i<4; i++)
{
val = lut[i];
}
}
Run Code Online (Sandbox Code Playgroud)
如果我编译此代码,我会收到有关该sin函数的警告.此外,在装配中,该部分没有任何内容.data.如果我只是删除sin第三行中的数据,我将获得程序集中的数据.显然,所有信息都可在编译时获得.
你能否告诉我是否有办法实现我的目的:编译器计算尽可能多的离线值?或者是使用外部脚本/程序/ ...来计算表条目并将它们添加到一个单独的文件中的最佳方法#include?
我正在使用Emebr JS的入门套件,并在应用程序模板中添加了一个带有{{action hello}}的简单锚标签.
我正在使用把手预编译器预编译模板.当我试图运行它时,它会抛出一个错误.
未捕获错误:无法找到属性"操作"
以前我曾经用ember-1.0.pre.js做同样的事情,工作正常.但是当我包含新的ember库(ember-1.0.0-pre.2.js)时,它就抛出了这个错误.
在这两种情况下,我使用的是Handlebars-1.0.rc.1.min.js.
任何人都可以帮我解决问题.下面列出了我正在使用的把手和库的详细信息.
用车把预编译器编译的模板.application.handlebars
<h1>Hello from Ember.js</h1>
<a {{action hello}}>Say Hello!</a>
Run Code Online (Sandbox Code Playgroud)
我的HTML页面:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"><\/script>')</script>
<script src="js/libs/handlebars-1.0.0.beta.6.js"></script>
<script src="js/libs/ember-1.0.0-pre.2.min.js"></script>
<script src="handlebars/compiled/views.handlebars.js"></script>
<script src="js/app.js"></script>
Run Code Online (Sandbox Code Playgroud)
views.handlebars.js包含已编译的把手.
App.js:
var App = Ember.Application.create();
App.ApplicationController = Ember.Controller.extend();
App.ApplicationView = Ember.View.extend({
templateName: 'application'
});
App.Router = Ember.Router.extend({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/'
}),
hello: function() {
console.log("Hello and Welcome");
}
})
})
App.initialize();
Run Code Online (Sandbox Code Playgroud) 我在dir中找到了class AvatarUploader < Carrierwave::Uploader::Base哪些商店User头像public/uploads:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :main do
process :resize_to_limit => [128, 128]
end
Run Code Online (Sandbox Code Playgroud)
我想在production启用资源预编译的模式下启动应用程序.除了头像之外的一切都很好.当我访问任何User个人资料时,我得到:
Started GET "/users/1" for 127.0.0.1 at 2012-05-03 17:45:24 +0300
Processing by Users::UsersController#show as HTML
Parameters: {"id"=>"1"}
Rendered users/users/show.html.erb within layouts/application (2.5ms)
Completed 500 Internal Server Error in 16ms
ActionView::Template::Error ( isn't precompiled):
87: <%= image_tag @user.avatar_url(:main).to_s %>
app/views/users/users/show.html.erb:87:in `_app_views_users_users_show_html_erb___538221278131396366_28399560'
Run Code Online (Sandbox Code Playgroud)
也许有一种方法可以关闭头像的预编译(因为它们可以在应用程序在生产中运行时重新上传).请提供有关如何解决此问题的任何建议.谢谢.
ruby-on-rails pre-compilation ruby-on-rails-3 carrierwave asset-pipeline
我最近在我目前的工作地点询问了前任首席开发人员,以了解他为什么选择使用Razor Generator将我们的视图预编译到一个单独的程序集中.
他在下面提出了一些声明,但我似乎无法在网上找到任何Razor Generator配置文件和/或指标来备份声明(快10到100倍),和/或,如果IIS7/ASP.NET做了什么关于预编译与运行时编译的视图及其益处或缺乏的幕后故事.
谁能指出我正确的方向?还是评论?
在我看来(就启动时而言)只需autostart = true为站点设置IIS 就可以平衡使用Razor Generator进行预编译的任何好处.以下是他的发言:
为什么我们使用Razor Generator预编译我们的视图以及为什么将它们放在一个单独的程序集中?
第一个是简单的编译时错误检查.有了这么多观点,它似乎是避免生产错误的好方法.重新编译以查看我承认的视图的更改有点令人沮丧,但它(在我看来)完全值得知道你有更多的错误检查.
第二个是当视图没有在项目中编译时,它们在运行时被编译,然后那些编译的表示必须存储在ram中.有时,如果他们没有被定期访问(大多数视图就是这种情况,因为有这么多),那些存储的编译版本会被放弃并收集垃圾以保存ram.因此,除了gaf.com等网站中最常访问的视图之外,每次访问时都会重新编译.但是如果你把它们放在一个项目中,那么编译后的版本只需要从dll中加载(如果它还没有在内存中)(是的,代码也可以被垃圾收集,但不常用).加载来自dll的速度快10到100倍(这是来自Razor Generator项目的网站 - 我自己没有验证它,但这听起来很合理).
asp.net pre-compilation asp.net-mvc-4 razorgenerator asp.net-mvc-5
我目前在访问我的 http://websitehere.com/excelData.aspx 页面时收到此消息:
这是预编译工具生成的标记文件,不应该删除!
服务器上的文件系统目录如下所示:
--mainDir
|--excelData.aspx
|--PrecompiledApp.config
|--Web.config
|--bin
|--App_Web_cuydkh1j.dll
|--exceldata.aspx.cdcab7d2.compiled
Run Code Online (Sandbox Code Playgroud)
不确定我需要添加/删除什么才能使其显示没有预编译工具文本的页面。
IIS服务器版本为6.1
我正在寻找一种在 cython 文件中添加预编译器逻辑的解决方案。
我已经为 C++ 中的硬件设备 API 编写了一个 cython 包装器。这是一个 cython 项目,通常使用 MSVC for python 2.7 和 3.6 进行编译。整个包是用 cython 编写的,不需要外部 C++ 或头文件。
最初,我编写这个软件是为了在 Windows 计算机上使用,因此我使用了许多基本 winapi 函数来帮助访问内核事件循环和 winapi 错误消息。它工作得很好,但我还想添加跨平台编译的功能。这需要我完全替换几个关键功能才能使其在linux机器上运行。例如,硬件 API 甚至根据操作系统的不同而具有不同的事件处理函数。此外,winapi 事件处理也需要更换。
现在,我将整个项目编译成一个模块以简化导入。所有代码都驻留在编译成hwmodule.pyd文件的同一个 pyx 文件中。但是,为了实现跨平台编译的目标,我需要在安装时将几个小 pyx 文件修补到一起。这种解决方案并不优雅并且难以维护。更不用说,培训其他可能想要添加到项目中的人会更加困难。
理想情况下,我能够将 cython 写入 c 编译时标志,这些标志根据标志或变量进行解释和编译。cython 有什么解决方案可以实现我的目标吗?或者,是否有一个不同的组织可以优雅且易于维护?
一些看似合理的语法示例(可能存在也可能不存在)类似于 c 或 python 中的语法:
使用#ifdef或类似的声明
#ifdef __WINAPI
def foo():
print('bar win')
#else
def foo():
print('bar linux')
#endif
Run Code Online (Sandbox Code Playgroud)使用类似 python 的with块
with ifdef('__WINAPI'):
def foo():
print('bar win')
Run Code Online (Sandbox Code Playgroud)用类似 cython 的行结束符结束函数 …
pre-compilation ×10
asp.net ×3
.net-4.0 ×1
asp.net-mvc ×1
c ×1
carrierwave ×1
cython ×1
ember.js ×1
gcc ×1
iis ×1
javascript ×1
performance ×1
perl6 ×1
raku ×1
vb.net ×1