问题列表 - 第24808页

使用版本信息编译DLL

从命令行编译Windows DLL中的版本信息需要哪些步骤.我一直在查看VersionInfo文件,但无法弄清楚如何将它们链接到DLL.

谢谢

dll winapi version versioninfo

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

移动SDL视频表面

有谁知道如何在程序上围绕屏幕移动我的SDL.net视频表面?

Surface videoContext = Video.SetVideoMode(1024, 768, 32, false, false, false, true, true);

var a = System.Windows.Forms.Control.FromHandle(Video.WindowHandle);
var b = System.Windows.Forms.NativeWindow.FromHandle(Video.WindowHandle);
Run Code Online (Sandbox Code Playgroud)

我找不到任何属性Surface或者Video做什么工作,并且FromHandle返回Null.

窗口正在初始化从屏幕底部掉落. 替代文字http://i42.tinypic.com/2mespe0.png

有任何想法吗?

更新:

我已经看过这段代码,但无法解决一个等效的C#implimentation.有人可以帮忙吗?

#ifdef WIN32
#include <SDL_syswm.h>
SDL_SysWMinfo i;
SDL_VERSION( &i.version );
if ( SDL_GetWMInfo ( &i) ) {
  HWND hwnd = i.window;
  SetWindowPos( hwnd, HWND_TOP, x, y, width, height, flags );
}
Run Code Online (Sandbox Code Playgroud)

如果不这样做,在我的c#项目中包含一些c ++会涉及多少工作?

谢谢.

c# winapi sdl sdl.net

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

CSS - 将一个图像叠加在另一个图像之上

我不能用文字来形容这个,所以我会给你看图片.

以下是我的设计师打算在我们网站的侧边栏中查看Gravatar图像的方式:

设计师如何想要它http://i41.tinypic.com/rjnn6v.png

这是我制作的叠加图像(从Photoshop截取):

我的叠加图片http://i43.tinypic.com/s1sz2e.png

这是它现在的样子......

不太理想http://i42.tinypic.com/21j13s3.png

不太理想,我想你会同意的.这是我正在使用的CSS代码:

.gravatarsidebar {
    float:left; 
    padding:0px;
    width:70px;
}

.gravataroverlay {
 width:68px;
 height:68px;
 background-image: url('http://localhost:8888/images/gravataroverlay.png');
}
Run Code Online (Sandbox Code Playgroud)

这里是XHTML(和一些PHP来根据用户的电子邮件地址获取Gravatar,这是从我们的数据库中获取的):

<div class="gravataroverlay"></div>

        <div class="gravatarsidebar">
            <?php $gravatar_link = 'http://www.gravatar.com/avatar/' . md5($email) . '?s=68';
            echo '<img src="' . $gravatar_link . '" alt="Gravatar" />'; ?>  
        </div>
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?我无法使用相对定位,因为它使下面div中的"搜索"一词保持向右移动.

谢谢你的帮助!

插口

css xhtml

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

C++类构造和成员初始化

第一个打印显示成员值为false,另外两个打印显示为true.为什么第一个输出与后两个输出不同?

#include <vector>
#include <iostream>

using namespace std;

class MyClass
{
public:
  bool value;
  bool stuff;
};

class Container
{
public:
  vector<MyClass> my_classes;
  Container()
  {
    MyClass c;
    cout << c.value << endl;
    my_classes.push_back(c);
  }
};

int main (int argc , char* argv[] )
{
  MyClass mc;
  cout << mc.value << endl;
  Container con;
  cout << con.my_classes[0].value << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

如何使用JavaScript函数更改HTML背景?

如何使用JavaScript函数更改HTML背景?我需要一些简单的功能来将背景从一个图像更改为另一个图像?

html javascript background image

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

URL控制器映射策略(PHP)

这是一个学术问题,所以请立即退出.我已经通过Stack挖掘了与MVC框架中的URL/Controller映射相关的线程 - 特别是这一个:

PHP应用程序URL路由

到目前为止,我可以确定两种做法:

1:通过解析URL字符串进行动态映射(在'/'上展开)

2:模式匹配匹配url到包含可用路由的配置文件

我想从人们那里获得一些关于如何最好地完成这项任务的意见的反馈(或链接到其他一些主题/文章).

php url-routing

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

使用SQLAlchemy获取最后一个插入ID

我正在使用SQLAlchemy

import hashlib
import sqlalchemy as sa
from sqlalchemy import orm

from allsun.model import meta


t_user =  sa.Table("users",meta.metadata,autoload=True)

class Duplicat(Exception):
 pass
class LoginExistsException(Exception):
 pass
class EmailExistsException(Exception):
 pass

class User(object):
 """
 def __setattr__(self, key, value):
  if key=='password' :
   value=unicode(hashlib.sha512(value).hexdigset())
   object.__setattr__(self,key,value)
"""
 def loginExists(self):
  try:
   meta.Session.query(User).filter(User.login==self.login).one()
  except orm.exc.NoResultFound:
   pass
  else:
   raise LoginExistsException()

 def emailExists(self):
  try:
   meta.Session.query(User).filter(User.email==self.email).one()
  except orm.exc.NoResultFound:
   pass
  else:
   raise EmailExistsException()


 def save(self):
  meta.Session.begin()
  meta.Session.save(self)
  try:
   meta.Session.commit()
  except sa.exc.IntegrityError:
   raise Duplicat()
Run Code Online (Sandbox Code Playgroud)

当我打电话时,如何获取最后插入的ID:

user = User()
user.login = request.params['login']
user.password = hashlib.sha512(request.params['password']).hexdigest() …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

没有在对象布局中看到同步块

我的理解是,所有.NET对象实例都以一个8字节的"对象头"开头:一个同步块(指向SynchTableEntry表的4字节指针)和一个类型句柄(指向类型方法表的4字节指针).

我在VS 2010 RC(CLR 4.0)调试器内存窗口中没有看到这一点.

这是一个简单的类,它将生成一个16字节的实例,而不是对象头.

class Program
{
    short myInt = 2;    // 4 bytes
    long myLong = 3;    // 8 bytes
    string myString = "aString"; // 4 byte object reference

    // 16 byte instance

    static void Main(string[] args)
    {
        new Program();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

SOS对象转储告诉我总对象大小是24个字节.那讲得通.我的16字节实例加上一个8字节的对象标题.

!DumpObj 0205b660
Name:        Offset_Test.Program
MethodTable: 000d383c
EEClass:     000d13f8
Size:        24(0x18) bytes
File:        C:\Users\Bob\Desktop\Offset_Test\Offset_Test\bin\Debug\Offset_Test.exe
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
632020fc  4000001       10         System.Int16  1 instance        2 myInt
632050d8  4000002        4 …

.net clr

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

战略模式和"行动"类爆炸

拥有大量"工作"类(例如策略类)是不是很糟糕,只做一件事?

让我们假设我想制作一个怪物类.我不会仅仅在一个类中定义关于怪物的所有内容,而是尝试确定它的主要特征是什么,因此我可以在接口中定义它们.这将允许:

  1. 如果我愿意,请密封课程.之后,其他用户可以创建一个新类,并通过我定义的接口仍然具有多态性.我不必担心将来人们(或我自己)想要如何更改/添加功能.所有类都继承自Object,它们通过接口实现继承,而不是从母类实现继承.
  2. 重复使用我正在使用的策略与我的游戏世界的其他成员.

Con:这个模型很僵硬.有时候我们想要通过组合这个"构建块"来定义一些不容易实现的东西.

public class AlienMonster : IWalk, IRun, ISwim, IGrowl {
    IWalkStrategy _walkStrategy;
    IRunStrategy _runStrategy;
    ISwimStrategy _swimStrategy;
    IGrowlStrategy _growlStrategy;

    public Monster() {
        _walkStrategy = new FourFootWalkStrategy();
       ...etc
    }

    public void Walk() { _walkStrategy.Walk(); }
    ...etc
}
Run Code Online (Sandbox Code Playgroud)

我的想法是接下来制作一系列可以被不同怪物使用的不同策略.另一方面,其中一些也可以用于完全不同的目的(即,我可以有一个也"游泳"的坦克).我用这种方法看到的唯一问题是,它可能会导致纯粹的"方法"类的爆炸,即,策略类只有作为这个或那个其他动作的目的.另一方面,这种"模块化"将允许高度重用stratagies,有时甚至在完全不同的环境中.

你对这件事有什么看法?这是一个有效的推理吗?这是否过度工程?

另外,假设我们对上面给出的示例进行了适当的调整,将IWalk定义为:

interface IWalk {
    void Walk();
}
Run Code Online (Sandbox Code Playgroud)

要么

interface IWalk {
    IWalkStrategy WalkStrategy { get; set; } //or something that ressembles this
}
Run Code Online (Sandbox Code Playgroud)

为了做到这一点,我不需要在Monster本身定义方法,我只是为IWalkStrategy提供公共getter(这似乎违背了你应该尽可能多地封装所有内容的想法!)为什么?

谢谢

c# oop design-patterns

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

为什么假设send可能返回的数据少于在阻塞套接字上传输的请求数据?

在流套接字上发送数据的标准方法一直是调用send和一大块数据来写,检查返回值以查看是否所有数据都已发送,然后再次调用send直到整个消息被接受为止.

例如,这是一个常见方案的简单示例:

int send_all(int sock, unsigned char *buffer, int len) {
  int nsent;

  while(len > 0) {
    nsent = send(sock, buffer, len, 0);
    if(nsent == -1) // error
      return -1;

    buffer += nsent;
    len -= nsent;
  }
  return 0; // ok, all data sent
}

甚至BSD手册也提到了这一点

...如果套接字上没有可用的消息空间来保存要传输的消息,则send()通常会阻塞 ...

这表明我们应该假设send可以在不发送所有数据的情况下返回.现在我发现这个相当破碎,但即使是W. Richard Stevens在他的标准参考书中假定这是关于网络编程的,而不是在开头的章节中,但更高级的例子使用他自己的写(写所有数据)函数而不是调用write.

现在我认为这仍然或多或少被破坏,因为如果send无法传输所有数据或接受底层缓冲区中的数据并且套接字阻塞,则send应该阻塞并在整个发送请求被接受时返回.

我的意思是,在上面的代码示例中,如果send返回的数据发送的数量较少,那么将使用新请求再次调用它.自上次通话以来有什么变化?最多几百个CPU周期已经过去,因此缓冲区仍然是满的.如果发送现在接受数据,为什么它不能接受它?

否则我们将以低效循环结束upp,我们试图在无法接受数据并继续尝试的套接字上发送数据,否则?

因此,如果需要,似乎解决方法会导致代码效率极低,并且在这些情况下应该避免阻塞套接字,而应该使用非阻塞套接字和select.

c sockets coding-style send

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