问题列表 - 第12482页

你应该避免静态课吗?

静态类被认为是不好的做法?几天前我读了一篇关于这个的文章(找不到,对不起),基本上说有静态类(特别是那些'帮助'类)通常是坏代码的标志.这是正确的,如果是的话,原因是什么?

code-design static-class

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

在Eclipse中编译C/GTK

我正在摆弄Eclipse的C/C++版本来构建一个简单的GTK应用程序.但是,我似乎无法从Eclipse中编译GTK示例.我可以编译一个简单的Hello World样式测试应用程序,所以我知道工具链本身正在工作.但是,当我开始将GTK添加到混合中时,编译器会出现错误.有趣的是,我可以在Eclipse环境之外编译示例.例如,我正在使用页面上的示例并按照给出的说明让我构建一个工作二进制文件.

我认为第一个问题是当我尝试在Eclipse中编译时,主要的GTK包含文件被引用不同.我可以编译的非Eclipse版本(如示例中所示):

#include <gtk/gtk.h>
Run Code Online (Sandbox Code Playgroud)

但是,在Eclipse中,这不起作用.我需要将其更改为:

#include <gtk-2.0/gtk/gtk.h>
Run Code Online (Sandbox Code Playgroud)

然后可以找到包含文件,但编译过程然后开始抛出有关GtkWidget类型的错误.例如:

#include <gtk-2.0/gtk/gtk.h>

int main( int argc, char *argv[] )
{
    GtkWidget *window;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show  (window);

    gtk_main ();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

导致这些错误:

make all 
Building file: ../src/main.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o"src/main.o" "../src/main.c"
../src/main.c: In function ‘main’:
../src/main.c:7: error: ‘GtkWidget’ undeclared (first use in this function)
../src/main.c:7: error: (Each undeclared identifier is reported only …
Run Code Online (Sandbox Code Playgroud)

eclipse gtk gcc

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

使用html表单输入创建静态html页面

我有这个调用php文件的html表单.

index.html - >

<form action="html_form_submit.php" method="post">
<textarea name="name" rows="2" cols="20"> </textarea >
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

来自html_form_submit.php - >

<?php
$name = @$_POST['name'];
?>
<html>
<body>
<p>
Id: <?php echo $id; ?><br>
Name: <?php echo $name; ?><br>
Email: <?php echo $email; ?>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这按预期工作.php文件生成html代码并将其发送到客户端.但我想要的是php(或其他任何东西)创建一个静态html页面,将其存储在服务器中,然后将其发送给用户.我希望我很清楚.

这是一个非常小的网站,为我的邻居顺便说一句,我的编码技能很糟糕最后如果有人理解我想做什么,并建议以任何其他方式(更简单的方式)这样做,那么请分享.

谢谢

html php static

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

Clojure宏创建函数的同义词

对于任何真正知道如何在任何Lisp中编写宏的人来说,这可能是一个简单的方法.我希望能够为函数名定义同义词.我一直在复制和粘贴黑客core.clj这样做,但我不想永远是这样的傻瓜!很明显,一个宏将对synoym函数的调用重写为对原始函数的调用是正确的方法.

macros clojure

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

Rails习惯用来避免has_many中的重复:through

我的Rails应用程序中的用户和角色之间存在标准的多对多关系:

class User < ActiveRecord::Base
  has_many :user_roles
  has_many :roles, :through => :user_roles
end
Run Code Online (Sandbox Code Playgroud)

我想确保只为用户分配一次角色.任何插入重复项的尝试都应该忽略该请求,而不是抛出错误或导致验证失败.我真正想要表示的是"集合",其中插入已存在于集合中的元素无效.{1,2,3} U {1} = {1,2,3},而非{1,1,2,3}.

我意识到我可以这样做:

user.roles << role unless user.roles.include?(role)
Run Code Online (Sandbox Code Playgroud)

或者通过创建一个包装器方法(例如add_to_roles(role)),但我希望通过关联使其自动化的一些惯用方法,以便我可以写:

user.roles << role  # automatically checks roles.include?
Run Code Online (Sandbox Code Playgroud)

它只是为我做的工作.这样,我不必记得检查重复或使用自定义方法.我缺少框架中的某些东西吗?我首先想到:has_many的uniq选项可以做到,但它基本上只是"选择不同的".

有没有办法以声明方式做到这一点?如果没有,可能使用关联扩展名?

以下是默认行为失败的示例:

    >> u = User.create
      User Create (0.6ms)   INSERT INTO "users" ("name") VALUES(NULL)
    => #<User id: 3, name: nil>
    >> u.roles << Role.first
      Role Load (0.5ms)   SELECT * FROM "roles" LIMIT 1
      UserRole Create (0.5ms)   INSERT INTO "user_roles" ("role_id", "user_id") VALUES(1, 3)
      Role Load …

activerecord idioms ruby-on-rails associations

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

Powershell 2.0 Param关键字错误

我正在运行Windows 7 RTM.默认情况下安装Powershell 2.0.我正在使用优秀的Windows Powershell ISE来编辑我的脚本.我有以下脚本:

Param($p)
Param($d)
echo $p $d
Run Code Online (Sandbox Code Playgroud)

我将脚本保存为SayItAgain.ps1.当我尝试从交互式shell运行此脚本时,如下所示:

./SayItAgain -p "Hello"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

At C:\users\cius\Code\powershell\SayItAgain.ps1:2 char:6
+ Param <<<< ($destination)
    + CategoryInfo          : ObjectNotFound: (Param:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题还是我只是错误使用它?

powershell

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

Win32:STD_IN_HANDLE 块上的 ReadFileEx(),为什么?

我正在尝试使用 Win32 API 创建一个子线程,该子线程从 STD_INPUT_HANDLE 读取并将其读取的字节推送到套接字中。因为我希望在退出时能够安全地关闭该线程,所以我使用 ReadFileEx() 和重叠 I/O,而不是普通的旧阻塞 ReadFile()。我的想法是,我的线程将在 WaitForSingleObject() 而不是 ReadFile() 中等待,当主线程希望从属线程消失时,它将在该对象上发出信号,从属线程将唤醒并退出,然后主线程可以继续其关闭序列。

我的问题是这样的:尽管文档说 ReadFileEx() 是异步的,因此永远不会阻塞...我的从属线程仍然在 ReadFileEx() 内阻塞。(我在事件循环中插入了 printf 来验证它在哪里阻塞)因此,我的主线程无法关闭从属线程,因此主程序永远不会退出。

我是否做错了什么,或者 ReadFileEx() 是否意味着在从标准输入读取时阻塞?如果是后者,线程关闭问题的解决办法是什么?从属线程的入口函数如下,供您个人...

[... in the main thread, before the slave thread is spawned...]
_stdinHandle = GetStdHandle(STD_INPUT_HANDLE);
_wakeupSignal = CreateEvent(0, false, false, 0);
[...]

VOID WINAPI CompletedReadRoutine(DWORD dwErr, DWORD cbBytesRead, LPOVERLAPPED lpOverLap)
{
   printf("CompletedReadRoutine dwErr=%li cbBytesRead=%li overlap=%p\n", dwErr, cbBytesRead, lpOverLap);
}

void StdinDataIO :: IOThreadEntry()
{
   char buf[4096];
   OVERLAPPED olap;
   bool keepGoing = true;
   bool overlappedReadPending = false;
   while(keepGoing) …
Run Code Online (Sandbox Code Playgroud)

winapi multithreading stdin

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

如果是超链接,请转到外部网站

我有一个"视图"链接到每行的gridview中的aspx页面.

根据资源的类型1)文件或2)超链接,它应该下载文件或转到提到的超链接.

<asp:TemplateField HeaderText="View">
                <ItemTemplate>
                    <a id="View" href="../resources/ResourceFile.aspx?Id=<%# Eval("Id")%>" target="_blank">View</a>
                </ItemTemplate>
    </asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

我得到它的文件类型,但如果它是一个超链接,我如何重定向到像"www.yahoo.com"这样的外部链接.

在后面的代码中

if(resource.ResourceType.ToLower().Equals("hyperlink")){
                    // what should i do here?
               // the link is stored in resource.value
                }
Run Code Online (Sandbox Code Playgroud)

编辑:认为链接应该有一个http://前缀工作.现在感到愚蠢:)

asp.net

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

如何在Objective-C 2.0中在运行时删除实例方法?

是否可以删除使用class_addMethod添加到类的方法?

或者如果我想这样做,我是否必须在运行时使用objc_allocateClassPair继续创建类,并为它们添加不同的方法集来改变实现的方法?

我会接受包含hackery的答案:-)

runtime objective-c

11
推荐指数
2
解决办法
4157
查看次数

如何在C语言中修复输出中的浮点值

我有这样的输出:

1569.3669
15968.3699
41.3878
587.5401
Run Code Online (Sandbox Code Playgroud)

但我希望输出像这样:

01569.3669
15968.3699
00041.3878
00587.5401
Run Code Online (Sandbox Code Playgroud)

我怎么能用C语言做到这一点?

c floating-point printf

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