小编Ric*_*ral的帖子

将haskell Int转换为前导零到String

假设我有一个Int = 08类型的变量,如何将其转换为String保持前导零?

例如:

v :: Int
v = 08

show v
Run Code Online (Sandbox Code Playgroud)

输出:8

我希望输出为"08".

这可能吗?

string int haskell

8
推荐指数
3
解决办法
9949
查看次数

如何在C中正确等待我自己的shell中的前台/后台进程?

之前的问题,我最贴出我自己的shell代码.我的下一步是实现前台和后台进程执行并正确等待它们终止,这样它们就不会像"僵尸"那样停留.

在添加在后台运行它们的可能性之前,所有进程都在前台运行.为此,我在使用execvp()执行任何进程后简单地调用wait(NULL).现在,我检查'&'字符作为最后一个参数,如果它在那里,通过不调用wait(NULL)在后台运行该进程,并且进程可以在后台运行愉快我将返回到我的shell.

这一切都正常(我认为),现在的问题是,我还需要以某种方式调用wait()(或waitpid()?),以便后台进程不会保持"僵尸".这是我的问题,我不知道该怎么做......

我相信我必须处理SIGCHLD并在那里做一些事情,但是我还没有完全理解何时发送SIGCHLD信号,因为我还试图将wait(NULL)添加到childSignalHandler()但是它不起作用因为我一旦在后台执行了一个进程,调用了childSignalHandler()函数,因此等待(NULL),这意味着在"后台"进程完成之前我无法对我的shell做任何事情.由于信号处理程序中的等待,它不再在后台运行.

我在这一切中缺少什么?

最后一件事,这个练习的一部分我还需要打印进程状态的变化,比如进程终止.因此,对此的任何见解也非常感激.

这是我目前的完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wait.h>
#include <signal.h>
#include <sys/types.h>

#include "data.h" // Boolean typedef and true/false macros


void childSignalHandler(int signum) {
    //
}

int main(int argc, char **argv) {
    char bBuffer[BUFSIZ], *pArgs[10], *aPtr = NULL, *sPtr;
    bool background;
    ssize_t rBytes;
    int aCount;
    pid_t pid;

    //signal(SIGINT, SIG_IGN);

    signal(SIGCHLD, childSignalHandler);

    while(1) {
        write(1, "\e[1;31mmyBash \e[1;32m# \e[0m", 27);
        rBytes = read(0, bBuffer, BUFSIZ-1);

        if(rBytes == -1) {
            perror("read");
            exit(1); …
Run Code Online (Sandbox Code Playgroud)

c signals process background-foreground

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

如何"正确"处理PHP中的$ _GET变量?

目前,我有以下代码:

if(isset($_GET['mid']) && !empty($_GET['mid'])) {
    $mid = $_GET['mid'];

    if(is_numeric($mid) && $mid > 0) {
        if(isset($_GET['op']) && !empty($_GET['op'])) {
            $op = $_GET['op'];

            if($op == 'info') {
            }

            if($op == 'cast') {
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我认为if语句中的if语句太"复杂"了......

你能用不同的方式处理吗?你会如何让它变得更简单?

[编辑]一般承认的答案:

好吧,我已经学到了一些我不知道的小细节和新的PHP函数.我不认为有正确的方法来做我所要求的.我显然是以错误的方式使用一些PHP函数,我会修复它.

在我看来,像这样的输入应该使用PHP过滤器函数进行验证/清理,因此我将Arkh的答案标记为已接受.

但是,对于特定的大学项目(PHP代码完全不相关),我将使用他的答案与Tatu的帮助函数构思混合使用.但是对于一个不同的项目,我会将他的答案与Ignacio的课堂理念混合使用,因为它看起来更好,更有条理.

php variables validation get

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

恒定游戏速度独立于OpenGL与GLUT中的可变FPS?

我一直在阅读Koen Witters 关于不同游戏循环解决方案的详细文章,但是我在使用GLUT实现最后一个时遇到了一些问题,这是推荐的.

在阅读了几篇关于如何实现恒定游戏速度的文章,教程和代码之后,我认为我目前已实现的内容(我将在下面发布代码)是Koen Witters所谓的Game Speed依赖于可变FPS,第二篇关于他的文章.

首先,通过我的搜索经验,有几个人可能有帮助,但不知道什么是GLUT,我将尝试解释(随意纠正我)相关的功能我的这个OpenGL工具包的问题.如果您知道GLUT是什么以及如何使用它,请跳过此部分.

GLUT工具包:

  • GLUT是一个OpenGL工具包,可以帮助完成OpenGL中的常见任务.
  • glutDisplayFunc(renderScene)采用指向一个renderScene()回调函数,这将是负责呈现的一切.该renderScene()函数仅在回调注册后调用一次.
  • glutTimerFunc(TIMER_MILLISECONDS, processAnimationTimer, 0)需要的毫秒数调用回调之前通过processAnimationTimer().最后一个参数只是一个传递给计时器回调的值.该processAnimationTimer()不会叫每个TIMER_MILLISECONDS但只有一次.
  • glutPostRedisplay()函数请求GLUT渲染一个新帧,因此每当我们改变场景中的某些内容时我们都需要调用它.
  • glutIdleFunc(renderScene)可用于注册一个回调renderScene()(这并没有使glutDisplayFunc()无关),但应避免使用此功能,因为没有被接收到事件时的空闲回调不断要求,增加了CPU的负载.
  • glutGet(GLUT_ELAPSED_TIME)函数返回自glutInit调用(或第一次调用glutGet(GLUT_ELAPSED_TIME))以来的毫秒数.那是GLUT的计时器.我知道高分辨率计时器还有更好的选择,但是现在让我们继续使用这个计时器.

我认为这是关于GLUT如何渲染帧的足够信息,所以那些不了解它的人也可以投入这个问题来试图帮助它们如果它们像它一样堕落.

目前的实施:

现在,我不确定我是否正确实施了Koen提出的第二种解决方案,游戏速度依赖于可变FPS.相关代码如下:

#define TICKS_PER_SECOND 30
#define MOVEMENT_SPEED 2.0f

const int TIMER_MILLISECONDS = 1000 / TICKS_PER_SECOND;

int previousTime;
int currentTime;
int elapsedTime;

void renderScene(void) {
    (...)

    // Setup the camera …
Run Code Online (Sandbox Code Playgroud)

c opengl glut game-loop

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

退化三角形和GL_TRIANGLE_STRIP的问题

我试图绘制多个三角形条带只有一个调用glDrawElements,我对此事的研究告诉我,我需要使用退化三角形.也许我对这个问题的理解是错误的,但我认为这应该允许我从一个条带"跳"到另一个.

我的完整代码可以在我最近发布的问题上找到,如果你认为它是相关的,请看一下.

我基本上试图绘制2个四边形(为了简化目的),当然有4个三角形,但是彼此分开.为此,我使用这样的索引:

unsigned int indices[] = { 0, 256, 1, 257, 257, 2, 2, 258, 3, 259 };
Run Code Online (Sandbox Code Playgroud)

第一个条带的第一个顶点从0开始,第二个条带的第一个顶点从256开始.这是这个索引的最终结果:

http://i.stack.imgur.com/6Q3FD.jpg

这是正确的还是我认为"连接"2个四边形的线不应该存在?

opengl vertex-buffer gl-triangle-strip

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

这些略有不同的州抽象的任何行为差异?

Q1)查看原始ListView状态drawable listSelector我们有这样的东西(我剥离了一些代码来简化示例):

<selector>
    <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="true" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="false" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_2>" android:state_focused="true"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

但我一直在我的应用程序上这样做:

<selector>
    <item android:drawable="<DRAWABLE_2>" android:state_pressed="false" android:state_focused="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_pressed="true"/>
    <item android:drawable="<TRANSPARENT>" />
</selector>
Run Code Online (Sandbox Code Playgroud)

这似乎产生了相同的结果,而且更加简单.你是否注意到第一个比我自己的版本更好的情况?我只是想确保我没有遗漏一些重要因素,因为我希望尽可能缩短我的代码...

Q2)我看到许多州的drawables <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>作为顶级项目,但我不明白为什么需要它.该state_window_focused总是弄得我有点...是不是真的有必要吗?

android android-selector android-drawable

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

如何检测鼠标是否在整个表单和子控件内?

我需要检测用户何时将鼠标移动到Form及其所有子控件上以及何时离开Form.我尝试了表单的事件MouseEnterMouseLeave事件,我尝试了WM_MOUSEMOVE&WM_MOUSELEAVEWM_NCMOUSEMOVE&WM_NCMOUSELEAVE对Windows消息,但似乎没有任何工作,因为我想...

我的大部分表格都被各种各样的儿童控件占据,可见的客户区域不多.这意味着如果我非常快速地移动鼠标,则不会检测到鼠标移动,尽管鼠标位于窗体内.

例如,我有一个停靠在底部,桌面和TextBox之间的TextBox,只有一个非常小的边框.如果我快速将鼠标从底部移动到TextBox中,则不会检测到鼠标移动,但鼠标位于TextBox内部,因此位于Form内部.

我怎样才能达到我的需要?

c# mouseevent detection winforms

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

.NET MenuStrip与本机Windows渲染器?

有没有人知道如何使用本机Windows外观呈现MenuStrips,具体取决于用户使用的操作系统版本?

目前的渲染没有做到......

我目前正在使用第三方控件,可以使用MainMenu和ContextMenu而不是我正在寻找的,MenuStrip ...

.net native menustrip look-and-feel

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

如何在OpenGL中始终将对象保留在其他所有内容之前?

我有这个功能,它在屏幕的左下角绘制一个小的3D轴坐标系,但根据我面前的情况,它可能会被剪裁.

例如,我在地面上绘制了一个平坦的地形,在XZ平面上Y = 0.摄像机位于Y = 1.75(模拟一般人的身高).如果我抬头,它工作正常,如果我向下看,它会被地平面夹住.

上看
:http://i.stack.imgur.com/Q0i6g.png向下看:http://i.stack.imgur.com/D5LIx.png

我调用的函数在角落绘制轴系统是这样的:

void Axis3D::DrawCameraAxisSystem(float radius, float height, const Vector3D rotation) {
    if(vpHeight == 0) vpHeight = 1;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glViewport(0, 0, vpWidth, vpHeight);
    gluPerspective(45.0f, 1.0 * vpWidth / vpHeight, 1.0f, 5.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glTranslatef(0.0f, 0.0f, -3.0f);

    glRotatef(-rotation.x, 1.0f, 0.0f, 0.0f);
    glRotatef(-rotation.y, 0.0f, 1.0f, 0.0f);

    DrawAxisSystem(radius, height);
}
Run Code Online (Sandbox Code Playgroud)

我认为现在有几个主要功能与问题相关:

glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);

void changeSize(int width, int height) {
    if(height == 0) height = 1;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glViewport(0, …
Run Code Online (Sandbox Code Playgroud)

opengl clipping viewport foreground depth

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

有什么理由我无法用ICS内置快捷方式截取我的应用程序的屏幕截图?

起初,这似乎不适合问这个......但是因为我只用我自己的应用程序注意到这个问题,我想没有其他地方可以问它.也许我做错了什么,但我不知道是什么......

您可能已经知道,ICS允许您截取屏幕截图Power + VolumeDown.我拥有一台HTC One X,快捷方式是Power + Home.我不知道这是否会改变任何东西(也许有人可能会尝试使用Galaxy Nexus).

我自己的应用程序,通知议程(我不打算将它链接起来所以我没有被指控为垃圾邮件或类似的东西,但我真的没办法发布这个问题而没有自我宣传我的应用程序原因),不允许我使用我的One X上面的键组合截取屏幕截图.我可以截取任何其他应用程序的屏幕截图,但它不能在我自己的...

你觉得我到底在做什么来"禁用"这个?我的应用程序非常简单,并没有太多的事情发生.有任何想法吗?

每次我尝试截取我的应用程序的屏幕截图,我都会在logcat中得到这个:

08-24 00:15:40.570: E/InputManager-JNI(277): An exception was thrown by callback 'interceptKeyBeforeDispatching'.
08-24 00:15:40.570: E/InputManager-JNI(277): java.lang.StringIndexOutOfBoundsException: length=83; regionStart=-1; regionLength=83
08-24 00:15:40.570: E/InputManager-JNI(277):    at java.lang.String.startEndAndLength(String.java:593)
08-24 00:15:40.570: E/InputManager-JNI(277):    at java.lang.String.substring(String.java:1474)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:2375)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:307)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.server.wm.InputManager$Callbacks.interceptKeyBeforeDispatching(InputManager.java:663)
08-24 00:15:40.570: E/InputManager-JNI(277):    at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

截图工作时不会发生这种情况.而是记录了一系列对屏幕截图应用程序和其他许多内容的调用.

为什么我的应用会阻止屏幕截图并产生上述错误?

android screenshot

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