小编Joe*_*phy的帖子

容器的Docker超时?

对于我在大学的论文,我正在开发一个编码排行榜系统,用户可以通过临时的docker容器编译/运行不受信任的代码.到目前为止,系统似乎运行良好,但我面临的一个问题是,当提交无限循环的代码时,例如:

while True:
   print "infinite loop"
Run Code Online (Sandbox Code Playgroud)

系统变得混乱.问题是当我创建一个新的docker容器时,Python解释器阻止docker杀死子容器,因为数据仍然被打印到STDOUT(永远).这导致docker占用所有可用系统资源的巨大漏洞,直到使用该系统的机器完全冻结(如下所示):

在此输入图像描述

所以我的问题是,是否有更好的方法在docker容器上设置超时而不是我当前的方法实际上会杀死docker容器并使我的系统安全(代码最初是从这里获取的)?

#!/bin/bash
set -e

to=$1
shift

cont=$(docker run --rm "$@")
code=$(timeout "$to" docker wait "$cont" || true)
docker kill $cont &> /dev/null
echo -n 'status: '
if [ -z "$code" ]; then
    echo timeout
else
    echo exited: $code
fi

echo output:
# pipe to sed simply for pretty nice indentation
docker logs $cont | sed 's/^/\t/'

docker rm $cont &> /dev/null
Run Code Online (Sandbox Code Playgroud)

编辑:我的应用程序中的默认超时(传递给$to变量)是"10s"/ 10秒.


我已经尝试sys.exit()直接添加一个计时器和python源,但这不是一个可行的选项,因为它似乎相当不安全,因为用户可以提交代码以防止它执行,这意味着问题仍然存在.哦被卡在学位论文上的快乐...... :(

python unix bash shell docker

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

Textarea失去了鼠标点击的焦点?

我在谷歌Chrome中遇到了一些奇怪的问题.

问题是,每当我点击Google Chrome中的textarea时,它都会立即失去焦点,然后返回上一个输入框.如果按键盘上的Tab键,则不会发生此问题.

这是一个.gif显示我的问题:

在此输入图像描述

我正在使用的代码是有效的HTML:

                <div class="inputborder rounded">
                    <label>Celebrity 1<label>
                    <div class="newline"></div>
                    <input type="text"/>
                    <div class="newline"></div>
                    <label>Tweet 1<label>
                    <div class="newline"></div>
                    <textarea>Y U NO WORK?!</textarea>
                    <div class="newline"></div>
                </div>
Run Code Online (Sandbox Code Playgroud)

除了jQuery库之外,我还没有在页面上使用任何javascript.

我很惊讶为什么会发生这种情况,因为通常Internet Explorer会给我带来这样的问题.

任何人都知道什么是错的?

html textarea focus click

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

CSS和Grunt缩小中的相对路径?

在我提出这个问题之前,我想指出在StackOverflow上发布几个 类似的 问题 ,但它们都没有为问题提供准确的解决方案.


问题

我有一个工作流程设置,Grunt将多个css文件组合并缩小为一个文件,用于生产环境.

我面临的问题是,在运行Grunt之后,字体和图像路径会中断,因为它们仍指向现有的相对文件路径.

举个例子:

static/homepage/startup/common-files/css/icon-font.css我有以下的CSS规则:

@font-face{font-family:Flat-UI-Icons;src:url(../fonts/Startup-Icons.eot);
Run Code Online (Sandbox Code Playgroud)

在我的Gruntfile中,我指定我希望缩小的css文件的输出style.min.css位于static/css/custom/homepage/.这样做的问题是文件路径发生变化,导致无法再找到所有字体和图像依赖关系,并在浏览器中返回404状态.

我做了什么来尝试解决这个问题

我认为有两种方法可以解决这个问题:

  1. 复制所有相关文件,使它们相对于style.min.css所在的新目录.这样做的缺点是它可能很快变得混乱并破坏我的项目文件夹结构!
  2. 手动更改路径.但话说回来,这有什么意义呢?Grunt专为自动化任务而设计!

有人知道如何解决这个问题吗?我浪费了将近10个小时,我开始放弃了.人们声称已经在Github问题页面修复了这个问题,但是没有人真正说明他们是如何修复它的.

编辑:

我查看了clean-css库源代码,看起来你可以将relativeTo属性传递给minifier对象.我已经弄得一团糟,但我仍然被卡住了.如果我对此有所了解,我会报告回来.

编辑:

好吧,我终于找到了一些解释什么relativeTo(和其他)属性的文档.我仍然坚持我的文件结构应该是什么配置....

relativeTo - path to resolve relative @import rules and URLs
root - path to resolve absolute @import rules and rebase relative URLs
roundingPrecision - rounding precision; defaults to 2; -1 disables rounding
target - path to a folder or …
Run Code Online (Sandbox Code Playgroud)

css relative-path minify gruntjs grunt-contrib-concat

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

Codeigniter子域路由

我正在尝试在CodeIgniter框架上运行的网站上设置博客脚本.我希望这样做,而不对我现有网站的代码进行任何重大代码更改.我认为创建一个指向另一个Controller的子域将是最干净的方法.

我设置新Blog控制器的步骤包括:

  1. 创建指向我服务器的IP地址的A记录.
  2. 向CodeIgniter的routes.php文件添加新规则.

这是我想出的:

switch ($_SERVER['HTTP_HOST']) {
    case 'blog.notedu.mp':
        $route['default_controller'] = "blog"; 
        $route['latest'] = "blog/latest";
        break;
    default:
        $route['default_controller'] = "main";
        break;
}
Run Code Online (Sandbox Code Playgroud)

这应该指向blog.notedu.mpblog.notedu.mp/latest我的blog控制器.

现在问题是......

访问blog.notedu.mpblog.notedu.mp/index.php/blog/latest工作正常,但访问blog.notedu.mp/latest由于某种原因带我到404页面...

我的.htaccess文件看起来像这样(从url中删除index.php的默认值):

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

我的Blog控制器包含以下代码:

class Blog extends CI_Controller {

    public function _remap($method){
        echo "_remap function called.\n";
        echo "The method called was: ".$method;
    }

    public function index()
    {
        $this->load->helper('url');
        $this->load->helper('../../global/helpers/base'); …
Run Code Online (Sandbox Code Playgroud)

php .htaccess routing codeigniter custom-url

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

如何让节点应用程序运行?

我终于完成了将我的一个项目转换为使用Node.JS,但现在我在服务器上运行我的应用程序时出现问题:/问题是如果我关闭我的putty会话节点就停止了.

我已经做了很多关于这个问题的搜索,似乎创建一个upstart脚本并使用该Forever模块是要走的路.

我开始谷歌搜索并创建了这个新贵脚本:

#!upstart
description "Loner NodeJS app launcher"
author      "me@me.com"

start on startup
stop on shutdown

script
    export HOME="/root"
    exec sudo node /home/jjmpsp/server.js >> /home/jjmpsp/server.sys.log 2>&1
end script
Run Code Online (Sandbox Code Playgroud)

然后我start app昨晚在服务器上运行,当我关闭putty会话时服务器仍在运行.都好.

但是,我今天早上来了,发现Node应用已停止,所以我检查了server.sys.log文件,看看发生了什么.似乎该应用程序运行良好,直到它最终遇到此异常:

debug: client authorized
info: handshake authorized fziLHZA3Vo9i55eubvOq

events.js:48
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/jjmpsp/node_modules/mysql/lib/protocol/Protocol.js:73:13)
    at Socket.onend (stream.js:80:10)
    at Socket.emit (events.js:88:20)
    at TCP.onread (net.js:348:51)
Run Code Online (Sandbox Code Playgroud)

今天我一直在谷歌搜索更多,并发现Forever实际上会重新启动NodeJS应用程序,如果它意外退出.我尝试安装模块npm install forever但是我得到了这个巨大的错误列表: …

ubuntu upstart node.js forever

8
推荐指数
2
解决办法
7728
查看次数

覆盖自定义输出的Python单元测试模块?[代码更新]

编辑:解决了!

将很快用解决方案更新.


目标:

我想重写Python的UnitTest模块,所以当我调用它时,我在stdout流中得到以下JSON输出.例如:

{  
   "errors":0,
   "failures":1,
   "ran":3,
   "skipped":0,
   "successful":2,
   "test_data":[  
      {  
         "index":0,
         "result":1
      },
      {  
         "index":1,
         "result":1
      },
      {  
         "index":2,
         "result":-1
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

问题:

我已经编写了一些代码来生成这些测试结果,但是我遇到了为test_dataJSON数组的属性编写代码的问题.我已经重写了TestCase,TextTestResult而且TextTestRunner类,但我似乎无法弄清楚如何从得到的结果getTestsReport():

#!/usr/bin/python

import unittest
import sys, os
import json

class dataHolder(object):
    x = None

class MyTestRunner(unittest.TextTestRunner):

    def _makeResult(self):
        obj = MyTestResult(self.stream, self.descriptions, self.verbosity)
        dataHolder.x = obj.getTestsReport()
        return obj

class MyTestResult(unittest._TextTestResult):

    """
        Holder for test result information.
        Test results are …
Run Code Online (Sandbox Code Playgroud)

python unit-testing overriding python-2.7 python-unittest

5
推荐指数
0
解决办法
1338
查看次数

Javascript onloadedmetadata事件未在iOS设备上触发

我当前项目的一部分涉及通过HTML5的原生视频标签加载外部视频,然后使用Javascript调整它们的大小,使其成为DOM的完整高度和宽度.

我的代码似乎在桌面浏览器上完美运行,但是当我在ipad上加载项目时,视频不会调整大小,因为onloadedmetadata事件永远不会被触发.

这是一个重现问题的小代码示例:

function init() {
    var video = document.getElementById('viddy');
    video.addEventListener('loadedmetadata', function(e){
        var dimensions = [video.videoWidth, video.videoHeight];
        alert(dimensions);
    });
}

document.addEventListener("DOMContentLoaded", init, false);


<video id="viddy" autoplay>
    <source src="http://media.w3.org/2010/05/sintel/trailer.webm" type='video/webm' />
    <source src="http://www.w3schools.com/html/movie.mp4" type="video/mp4" />
</video>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/AUSNu/213/

我甚至尝试使用jQuery编写解决方案,但事件可能触发的可能性很小,但事实并非如此.

$('#viddy').on('loadedmetadata', function() {
   alert('test');
});
Run Code Online (Sandbox Code Playgroud)

我甚至通过我的ipad上的safari启用远程调试,但在控制台中仍然没有输出.

这有什么变通方法吗?我无法在网络/文档中找到有关此内容的更多信息.

javascript jquery html5 html5-video ios

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

为什么我的笑脸解析代码调用本机javascript函数?

我正在为我的网站写一个笑脸解析功能.我想要完成的是将某些字符串转换":)"为如下图像:在此输入图像描述

或者这里是实际的html作为例子:

":)" ===> <img src="images/smilies/smile.png" />
Run Code Online (Sandbox Code Playgroud)

我的函数执行它的意图,但它也解析本机javascript函数名称!我的意思这一点,是如果我键入包含字符串的注释"push","pop""some"(有可能是加载其他人)我的函数将解析这些字符串为无效的图片是这样的:

在此输入图像描述

这是一个显示以下内容的html字符串:

<img src="images/smilies/function some() { [native code] }" alt="">
Run Code Online (Sandbox Code Playgroud)

这会导致浏览器控制台中出现404未找到错误.

Failed to load resource: the server responded with a status of 404 (Not Found) 
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我在代码中没有做任何不寻常的事情,你可以在这里看到:

        function parse_new_comment(commentElem){
            $(commentElem).html(parse_comment($(commentElem).text()));
        }


        function parse_comment(comment){
            var formatted_comment = "";

            var smilies = new Array();
            smilies[":)"] = "smile.png";
            smilies[":D"] = "smile-big.png";
            smilies[":p"] = "tongue.png";
            smilies["[sheep]"] = "sheep.png";
            smilies["<3"] = "love.png";
            smilies["[love]"] = "love.png";

            var words = comment.split(" ");

            for …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery native function

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

自动回复Twitter

我现在有几千个Twitter关注者,直到现在我一直在关注他们.我现在想用PHP自动化这个过程,因为它可能需要很长时间才能追随所有人.

我找到了一个由亚伯拉罕·威廉姆斯创建的PHP推特库,并开始编写一些代码.

但是,每次运行脚本时,我需要关注的用户数量都是不正确的!这是我编码中的错误,还是这就是Twitter API的工作原理?

这是我的代码:

<?php

require_once 'twitteroauth/twitteroauth.php';

define('CONSUMER_KEY', '');
define('CONSUMER_SECRET', '');
define('ACCESS_TOKEN', '');
define('ACCESS_TOKEN_SECRET', '');

ob_start();
set_time_limit(0);

function autoFollow($action){
    //auth with twitter.
    $toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

    //get the last 5000 followers
    $followers = $toa->get('followers/ids', array('cursor' => -1));
    $followerIds = array();

    foreach ($followers->ids as $i => $id) {
        $followerIds[] = $id;
    }

    //get the last 5000 people you've followed
    $friends = $toa->get('friends/ids', array('cursor' => -1));
    $friendIds = array();
    foreach ($friends->ids as $i => $id) {
        $friendIds[] = …
Run Code Online (Sandbox Code Playgroud)

php twitter twitter-follow

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

怎么了我的本地IP地址?

我正在尝试为我的作业创建一个PHP脚本.出于安全原因,我需要脚本来记录IP地址.

出于某种原因,当我运行以下代码时:

echo $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)

结果是:

::1
Run Code Online (Sandbox Code Playgroud)

我以为localhost ip地址总是像127.0.0.1?

有谁知道发生了什么?这真是让我烦恼,我似乎无法找到问题的解决方案.即使谷歌没有找到任何相关的...

我应该提一下,我正在Windows 7 64位机器上运行XAMPP安装.

提前致谢.

php apache ip xampp ip-address

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

查询以在"线程"视图中获取最近的消息

我正在尝试重建现有的消息传递系统,因此它看起来类似于Twitter的DM服务.目前我只向用户显示未读消息,但我想在一个'线程'中显示2个用户之间发送的消息,如下所示:

在此输入图像描述

这是我当前的数据库结构和一些示例数据:http: //sqlfiddle.com/#!2/574e3/1/0

我已经尝试通过分解来逐步构建查询,但我很困惑.这是我采取的步骤列表:

1.获取两个用户之间发送的消息列表

SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
Run Code Online (Sandbox Code Playgroud)

2.显示两个用户之间"对话"中的最后一条消息

SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
ORDER BY timestamp DESC
Run Code Online (Sandbox Code Playgroud)

3.通过user_id对会话进行分组(显然,这将是一个用户名,在生产应用程序中有一堆连接).

SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
GROUP BY uc_user_messages.user_id_1 AND uc_user_messages.user_id_2
ORDER BY timestamp DESC 
Run Code Online (Sandbox Code Playgroud)

这就是我被困住的地方......问题是,将显示两个用户之间的对话中发送的第一条消息,而不是最近的消息:http://sqlfiddle.com/#!2/942fb/ 2

我该怎么办?希望我不必进行任何重大的数据库设计更改.任何帮助是极大的赞赏.

干杯,

乔尔

php mysql node.js

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

安装PhoneGap插件:BarcodeScanner

我想在PhoneGap项目中安装BarcodeScanner插件.我已经阅读了存储库中的自述文件,并说它必须与PlugMan一起安装,如下所示:

Install a plugin
----------------

    $ plugman install --platform <platform> --project <directory> --plugin <plugin> [--variable NAME=VALUE]

Parameters:

 - platform <platform>: One of android, ios, blackberry10, wp7 or wp8
 - project <directory>: Path reference to a cordova-generated project of the platform you specify
 - plugin <plugin>: One of a path reference to a local copy of a plugin, or a remote https: or git: URL pointing to a cordova plugin (optionally append #branch:subdir) or a plugin ID from http://plugins.cordova.io …
Run Code Online (Sandbox Code Playgroud)

node.js phonegap-plugins cordova plugman

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