小编Zen*_*xer的帖子

为什么要在Bash中避免使用eval,我应该使用什么呢?

我一次又一次地看到Bash在Stack Overflow上使用eval的答案,并且答案得到了抨击,双关语是为了使用这种"邪恶"结构.为什么eval这么邪恶?

如果eval不能安全使用,我应该使用什么呢?

unix linux bash eval

94
推荐指数
3
解决办法
6万
查看次数

Webview一直在失去焦点

我有一个应用程序,基本上只是内部公司网站的包装.我的想法是在我的Chromebook上轻松加载自己的窗口,这样当RAM变低时它就不会卸载.

我有一个非常简单的应用程序,只有一个WebView,它占用整个应用程序窗口.问题是,每当我从窗口切换回来时,webview就会失去焦点.这特别令人讨厌,因为它是一个聊天应用程序,我想立即开始通过alt-tabbing回到窗口.

每次窗口获得焦点时我都会关注webview,但是Window(来自chrome.windows)和AppWindow(来自chrome.app.window)之间的断开使得这一点非常重要.我需要的事件只存在于Window对象中,但我只能最终获得当前的AppWindow.理论上,当应用程序首次启动时,我可以获得当前活动的窗口,但这似乎是hackish和不可靠的.

的index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Chat App</title>
    <link rel="stylesheet" href="styles.css">
  </head>

  <body>
    <webview src="https://example.com/" id="chat"></webview>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

background.js

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  chrome.app.window.create(
    'index.html',
    {
      id: 'chat'
    }
  );
});
Run Code Online (Sandbox Code Playgroud)

styles.css的

使webview消耗整个窗口有点棘手; 我不得不使用一些冗余的CSS属性来使其正常工作.

html, body {
  margin: 0;
  padding: 0;
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}

#chat {
  border: 0 none;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-app google-chrome-webview

11
推荐指数
1
解决办法
1033
查看次数

在同一解决方案中使用 Roslyn 代码分析器

我有一个由多个 .NET Core 项目组成的解决方案。我有一些我想执行的代码分析任务仅适用于此解决方案,因此将它们放在单独的存储库/解决方案中是没有意义的。使用适当的模板,我为分析器创建了三个项目:

  • Example.Analyzer
  • Example.Analyzer.Test
  • Example.Analyzer.Vsix

Example.Analyzer.Vsix 无法编译,因为 Visual Studio 需要 .NET Framework,但我的目标是 .NET Core 以供跨平台使用。现在,我忽略该项目,但我打算将其删除。Example.Analyzer 和 Example.Analyzer.Test 都针对 netcoreapp3.0,以及解决方案中的所有其他项目。

我已经编写了我的分析器并且测试通过了。但是,我不确定如何实际使用其他项目中的这些分析器。我尝试通过 ProjectReference 添加 Example.Analyzer 作为依赖项,但这似乎并没有启用分析器。

.net c# roslyn .net-core

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

Nginx + FastCGI + PHP(php-fpm)未记录捕获的错误/警告

FastCGI不希望正确记录PHP错误.嗯,这并不完全正确:它记录错误很好,有点摆弄; 它只是不会记录任何其他内容,例如警告.

臭名昭着的FastCGI - > Nginx日志错误不一定是个问题.来自php-fpm的错误和警告直接进入Nginx - 但前提是它们没有被捕获.也就是说,如果set_error_handler成功拦截错误,则不会附加任何日志条目.这意味着我可以看到解析错误,但这就是它.

php-fpm本身并不记录PHP错误(与nginx分开),没有任何破解.php-fpm的实例配置文件默认包含以下两行:

php_admin_value[error_log] = /mnt/log/php-fpm/default.log
php_admin_flag[log_errors] = on
Run Code Online (Sandbox Code Playgroud)

我明显改变了error_log路径.我必须添加以下行以使其实际记录任何内容:

php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
Run Code Online (Sandbox Code Playgroud)

版本说明:E_STRICT部分是不必要的,因为我使用的是PHP 5.3.27,但我计划在某些时候升级到5.4.有了这一行,它就会记录错误 - 而且只记录错误 - /mnt/log/php-fpm/default.log.现在,这设置error_reporting为我在php.ini中设置的相同值,所以这里显然有些错误.此外,它不会记录捕获的错误:行为与nginx日志的行为相同.我尝试使用数值(22527)代替,但仍然没有运气.

我不关心条目最终在哪个日志文件中(nginx与php-fpm),但我确实需要在某处记录捕获的错误.我可以使用注入我自己的错误和异常处理程序,但这有点hackish,所以我宁愿避免这种情况.

php fastcgi nginx

8
推荐指数
1
解决办法
8537
查看次数

使用代码确定PHP的退出位置,而不是调试器

我无法弄清楚应用程序的退出位置.我宁愿不打扰调试器,添加declare(ticks=1);到每个文件将是一个痛苦(我没有处理sed的心情).已经提出了类似的问题,但没有这些限制.

如何确定代码退出的位置?

澄清:

虽然这个问题类似于确定PHP脚本退出的最快方法,但我想找到一个没有调试器的解决方案.我知道如何使用调试器执行此操作,但我并不总是可以访问此类工具.

php

7
推荐指数
1
解决办法
205
查看次数

无法在Visual C#2010 Express中访问构建配置管理器或构建配置

全文

通常,当我安装Visual C#2010 Express时,我要做的第一件事就是切换到专家设置.这使我可以访问构建配置和相应的管理器.这个最近的装置似乎行为不端.

我创建的第一个项目是XNA 4.0(刷新)项目.我导入了一些旧代码,切换到专家设置,并确认我能够访问构建配置管理器和构建配置工具栏.但是,当我打开项目属性并切换到Build选项卡时,无法找到正常的Configuration和Platform下拉列表.此外,即使在工具栏/管理器中选择了Debug作为活动,也明确使用了Release设置.

我尝试了从重新启动Visual Studio到手动编辑.csproj XML的所有内容 - 顺便说一下,它将Debug标记为活动配置:not Release.有趣的是,无论构建配置的顺序如何,如果存在Release,那么这将是项目属性中实际处于活动状态的配置(未从工具栏的下拉列表中选择).请记住,由于某些原因,通常出现在项目属性页面上的下拉列表不存在.

没有运气,我在一个单独的解决方案中创建了两个新项目:一个控制台应用程序和一个WinForms应用程序.这次,构建配置管理器甚至没有出现在Build菜单中,并且工具栏中的下拉列表被禁用,就像我甚至没有打开解决方案一样.

我搜索过并搜索过,但是我找不到这种行为的解释或解决方案.

注意:我可以通过MSDN访问Visual Studio 2010,因此如有必要,升级是一种可行的解决方案.

 

TL;博士

是的,我已切换到专家设置.

  • Windows 8 Pro,最新
  • Fresh-ish Visual C#2010 Express安装
  • XNA 4.0刷新

问题

  1. 新的XNA项目:
    • 切换构建配置对实际配置没有影响; 尽管另有说法,但它始终坚持释放.
    • 在项目属性 - > Build中,不存在构建配置/平台的下拉列表.
  2. 新的控制台/ WinForms项目:
    • Build Configuration Manager不在Build菜单中.
    • 构建配置工具栏已禁用下拉列表,并且未选择任何内容.

已经尝试过了

  • 删除版本配置
    效果:切换到调试

  • 重新创建发布配置
    效果:删除后切换到调试,然后在重新创建时切换回发布

  • 在文本编辑器中使用.csproj XML.
    效果:无; 开始看起来很好

  • 重新创建所有配置
    效果:始终登陆发布

  • 重新启动Visual C#Express 2010
    效果:无

  • 摆弄设置
    效果:无

  • 重新加载项目
    效果:无

c# xna visual-studio-2010 visual-studio xna-4.0

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

你可以使用带有switch语句的builtin_expect吗?

switch在一些时间关键代码中有一个声明.我试图用它来优化它__builtin_expect,但它似乎没有起作用.我想知道是否有人可以告诉我,我是否遗漏了一些细节,或者编译器是否只是没有针对它进行优化.我在我的主机上尝试了以下内容:

int main() {
    volatile int v=0;
    long i = 0;

    for (i=0; i<1000000000L; i++) {
            switch(__builtin_expect(v, EXPT)) {
            case 7:
                    v=7;
                    break;
            default:
                    v=7;
                    break;
            }
    }
    return v;
}
Run Code Online (Sandbox Code Playgroud)

然后我编译并运行如下:

~/code/builtinexpect> gcc bie.c -o bie -D EXPT=0 && time ./bie 

real    0m2.092s  
user    0m2.086s
sys     0m0.000s
~/code/builtinexpect> gcc bie.c -o bie -D EXPT=7 && time ./bie 

real    0m2.092s
user    0m2.086s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

我使用的是GCC 4.5.1版.

gcc switch-statement branch-prediction

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

为什么我的PNG纹理没有透明度?

右下角的图像应该具有透明背景.

我加载 我的 Notch的PNG通过以下功能:

public void Image2D(Bitmap bmp, int mipmapReductionLevel = 0)
{
    var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
    var data = bmp.LockBits(rect, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    GL.TexImage2D(TextureTarget.Texture2D, mipmapReductionLevel, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
        OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);

    bmp.UnlockBits(data);
}

public void Image2D(string filename, int mipmapReductionLevel = 0)
{
    Image2D(new Bitmap(filename), mipmapReductionLevel);
}
Run Code Online (Sandbox Code Playgroud)

我的片段着色器看起来像这样:

#version 330

in vec2 TexCoord0;

uniform sampler2D TexSampler;

void main()
{
    gl_FragColor = texture2D(TexSampler, TexCoord0.xy);
}
Run Code Online (Sandbox Code Playgroud)

bmp用调试器检查过,并使用bmp.GetPixel(255,0)(就在那棵树树苗上面,在黑色区域)然后又回来了(0,0,0,0).文档说 0是完全透明的,所以......我必须在OpenGL方面做错事.但是什么?


渲染功能

protected override …
Run Code Online (Sandbox Code Playgroud)

.net c# opengl glsl opentk

5
推荐指数
1
解决办法
2887
查看次数

Google Chrome应用:Webview行为

在研究<iframe>Chrome扩展程序中的问题时<webview>,Chrome应用程序引起了我的注意并引起了我的兴趣.

所以我决定做一个我正面临的问题的小例子,<iframe>看看是否<webview>解决了.根据我对观看Chrome Dev视频的理解,这些视频的webview运行时间与您的应用程序不同; 它与您的应用没有相同的权限.所以我假设如果运行中的内容以某种方式与"主线程"(app)分开,我猜他们的内容将彼此分开执行而不会阻止应用程序或其他任何一个可能有一个可能长时间运行js executon.因此我做了以下事情:

background.js

chrome.app.runtime.onLaunched.addListener(function() {
  // Tell your app what to launch and how.
  chrome.app.window.create('window.html', {
      width: 1800,
      height: 1000
  });
});
Run Code Online (Sandbox Code Playgroud)

的manifest.json

{
  // Required
  "name": "Hello World!",
  "version": "0.1",
  "manifest_version": 2,

  // Recommended
  "description": "My first packaged app.",
  "icons": { "16": "calculator-16.png", "128": "calculator-128.png" },
  // "default_locale": "en",

  // Pick one (or none) OF browser_action, page_action, theme, app 

  "app": {
    "background": {
      "scripts": [ "background.js" …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome behavior google-chrome-app google-chrome-webview

5
推荐指数
1
解决办法
5635
查看次数

通过Google Chrome App Webview冒泡通知

我有一个谷歌Chrome打包应用程序,并使用webview标记加载远程页面(我无法控制).该远程页面正在尝试请求通知权限,并且权限请求似乎没有冒泡到包装Chrome应用程序.

我正在使用以下(过度宽松)代码来允许来自webview的所有权限请求(并回显所有控制台输出):

  webview.addEventListener('permissionrequest', function(e) {
    console.log("webview requested " + e.permission);
    e.request.allow();
  });

  webview.addEventListener('consolemessage', function(e) {
    console.log('From webview: ', e.message);
  });
Run Code Online (Sandbox Code Playgroud)

我在网上找不到确认,但我认为网页浏览中尚不允许通知权限.如果我们假设是这种情况,是否还有其他方法可以强制Webview的网站通知权限不会被CORS阻止?

javascript webview google-chrome-app google-chrome-webview

5
推荐指数
1
解决办法
595
查看次数

连续调用Console.Beep()之间的延迟

我正在尝试制作一个简单的程序,该程序生成的音调可能会因输入值而异。我想起诉Console.Beep()函数,因为它似乎是最简单的解决方案,但却遇到了问题。我注意到当我连续调用Console.beep()函数时,如下所示:

System.Console.Beep(440, 500);
System.Console.Beep(460, 500);
System.Console.Beep(480, 500);
Run Code Online (Sandbox Code Playgroud)

当前音调停止和下一个音调开始之间存在很小的延迟(大约100-200毫秒左右)。我想知道是否有任何方法可以减少此延迟,以便每当频率更新时音调都不会立即暂停?

.net c#

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