小编sla*_*ais的帖子

GUI设计的最佳实践和原则

什么是您最好的实用用户友好的用户界面设计或原则?

请提交您认为真正有用的实践 - 无论如何 - 如果它适用于您的用户,请分享!


总结/整理

原则

  1. 吻.
  2. 明确并明确选项将实现的内容:例如,使用动词来指示选择后面的操作(参见:Impl.1).
  3. 使用适合用户需要/想要实现的明显默认操作.
  4. 使UI的外观和行为适合环境/流程/受众:独立应用程序,网页,便携式,科学分析,Flash游戏,专业人士/儿童,......
  5. 减少新用户的学习曲线.
  6. 不要禁用或隐藏选项,而应考虑提供有用的消息,其中用户可以有替代方案,但仅限于存在这些替代方案的位置.如果没有可用的替代方案,最好禁用该选项 - 在视觉上然后声明该选项不可用 - 不要隐藏不可用的选项,而是在鼠标悬停弹出中解释为什么它被禁用.
  7. 保持一致并符合实践和控件的放置,这在广泛使用的成功应用程序中实现.
  8. 引导用户的期望,让您的程序按照这些期望行事.
  9. 坚持用户的词汇和知识,不要使用程序员/实现术语.
  10. 遵循基本设计原则:对比度(显而易见性),重复性(一致性),对齐(外观)和接近度(分组).

履行

  1. (参见paiNie的回答)"尝试在对话框中使用动词."
  2. 允许/实现撤消和重做.

参考

  1. Windows Vista用户体验指南[ http://msdn.microsoft.com/en-us/library/aa511258.aspx]
  2. 荷兰网站 - "Drempelvrij"指南[ http://www.drempelvrij.nl/richtlijnen]
  3. 网页内容无障碍指南(WCAG 1.0)[ http://www.w3.org/TR/WCAG10/]
  4. 一致性[ http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0385267746]
  5. 不要让我想想[ http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pdbbssr_1?ie=UTF8&s=books&qid=1221726383&sr=8-1]
  6. 功能强大且简单[ http://msdn.microsoft.com/en-us/library/aa511332.aspx]
  7. 格式塔设计法[ http://www.squidoo.com/gestaltlaws]

user-interface principles

63
推荐指数
9
解决办法
5万
查看次数

如何在Perl中获得调用堆栈列表?

有没有办法在Perl脚本中的当前位置之前访问(打印输出)子+模块列表到任意深度的子调用?

我需要更改一些Perl模块(.pm).工作流通过cgi脚本从网页启动,通过在我需要使用数据的模块中结束的几个模块/对象传递输入.在某个地方,数据发生了变化,我需要找出原因.

perl callstack stack-trace

61
推荐指数
5
解决办法
3万
查看次数

良好的安全备份开发人员在家

什么是一种好的,安全的备份方法,对于在家进行研究和开发并且不能丢失任何工作的程序员来说?

条件:

  1. 备份必须始终在合理容易的范围内.

  2. 无法保证始终可以使用Internet连接.

  3. 解决方案必须是免费的或在合理的范围内定价,并且必须符合上述2.


状况报告

现在只考虑免费选项.

答案中提出了以下开源项目(此处和其他地方):

  • BackupPC是一种高性能的企业级系统,用于将Linux,WinXX和MacOSX PC和笔记本电脑备份到服务器磁盘.
  • Storebackup是一个备份实用程序,用于将文件存储在其他磁盘上.
  • mybackware:这些脚本是为了创建SQL转储文件而开发的,用于小型MySQL安装的基本灾难恢复.
  • Bacula用于管理不同类型计算机网络中计算机数据的备份,恢复和验证.在技​​术方面,它是基于网络的备份程序.
  • AutoDL 2和Sec-Bk:AutoDL 2是一个可扩展的传输独立自动文件传输系统.它适用于将文件从登台服务器上载到生产服务器场上的每个服务器[...] Sec-Bk是一组简单的实用程序,用于将文件安全地备份到远程位置,甚至是公共存储位置.
  • rsnapshot是一个文件系统快照实用程序,用于备份本地和远程系统.
  • rbme:使用rsync进行备份[...],您可以获得永久增量备份,这些备份显示为完整备份(每天),因此可以轻松还原或进一步复制到磁带等.
  • Duplicity通过生成加密的tar格式卷并将它们上载到远程或本地文件服务器来回退目录.[...]使用librsync,[for]增量存档
  • simplebup,用于在活动开发中对文件进行实时备份,因为它们已被修改.此工具也可用于监视其他目录.它旨在作为动态自动备份,而不是作为版本控制.这是非常容易使用.

其他可能性:

使用分布式版本控制系统(DVCS),如Git(/ Easy Git),Bazaar,Mercurial满足了在本地提供备份的需求.

使用免费的在线存储空间作为远程备份,例如:压缩您的工作/备份目录并将其邮寄到您的Gmail帐户.

策略

请参阅crazyscot的回答

security backup

35
推荐指数
6
解决办法
2949
查看次数

如何停止正在运行的mysql查询

如何以编程方式停止正在运行的mysql查询?

我面临的问题是使用用户提供的数据构建查询,并且可能偶尔需要很长时间才能执行(大表15到3000万行).我想为用户提供一个取消选项,但不知道如何停止当前正在执行的mysql查询.

该应用程序是一个Java applet-servlet:用户在applet中指定条件,该条件传递给servlet,在servlet中创建一个处理程序类来处理请求.这个handler-class是自包含的re connect - query - disconnect to mysql.

鉴于这种情况,如何取消正在运行的mysql查询?

java mysql applet-servlet

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

如何使用'use base'继承Perl中的子例程?

如何在Perl中应用'use base'来继承某些基本模块的subs?

我已经习惯了C++继承机制,而我为此搜索的所有网站都引起了更多的困惑然后帮助.我想做类似以下的事情:

#! /usr/bin/perl
#The base class to inherit from
use strict;
use warnings;

package 'TestBase';

#-------------------------------
sub tbSub
{
    my ($self, $parm) = @_;
    print "\nTestBase: $parm\n";
}

1;
Run Code Online (Sandbox Code Playgroud)

.

#! /usr/bin/perl
#The descendent class
use strict;
use warnings;

use base qw(TestBase);
sub main;
sub mySub;

#-------------------------------
#Entry point...
main();

#---code------------------------
sub main
{
    mySub(1);
    tbSub(2);
    mySub(3);
}

#-------------------------------
sub mySub
{
    my $parm = shift;
    print "\nTester: $parm\n";
}
Run Code Online (Sandbox Code Playgroud)

Perl抱怨/无法找到tbSub.

perl inheritance

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

指向成员函数的指针的实际用途是什么?

我已经阅读了这篇文章,我从中得到的是,当你想调用指向成员函数的指针时,你需要一个实例(指向一个或一个堆栈引用的指针)并调用它:

(instance.*mem_func_ptr)(..)
or
(instance->*mem_func_ptr)(..)
Run Code Online (Sandbox Code Playgroud)

我的问题是基于这样的:既然你实例,为什么不直接调用成员函数,如下所示:

instance.mem_func(..) //or: instance->mem_func(..)
Run Code Online (Sandbox Code Playgroud)

指向成员函数的指针的合理/实际用途是什么?

[编辑]

我正在玩X-development并进入我正在实现小部件的阶段; 用于将X事件转换为我的类和小部件的事件循环线程需要在每个小部件/窗口的事件到达时为每个小部件/窗口启动线程; 为了做到这一点,我认为我需要在我的类中使用事件处理程序的函数指针.

不是这样的:我发现的是,通过简单地使用虚拟基类,我可以以更清晰和更整洁的方式做同样的事情.无需任何指向成员函数的指针.正是在开发上述内容时,出现了对成员函数指针的实际可用性/含义的疑问.

一个简单的事实是,您需要引用一个实例才能使用member-function-pointer,这样就不需要了.

[编辑 - @sbi和其他人]

这是一个示例程序来说明我的观点:(特别注意'Handle_THREE()')

#include <iostream>
#include <string>
#include <map>


//-----------------------------------------------------------------------------
class Base
{
public:
    ~Base() {}
    virtual void Handler(std::string sItem) = 0;
};

//-----------------------------------------------------------------------------
typedef void (Base::*memfunc)(std::string);

//-----------------------------------------------------------------------------
class Paper : public Base
{
public:
    Paper() {}
    ~Paper() {}
    virtual void Handler(std::string sItem) { std::cout << "Handling paper\n"; }
};

//-----------------------------------------------------------------------------
class Wood : public Base
{
public:
    Wood() {} …
Run Code Online (Sandbox Code Playgroud)

c++ member-functions

13
推荐指数
3
解决办法
2265
查看次数

使用战略模式的好处在哪里?

在维基百科上看过这个解释,特别是C++示例,并且没有认识到只定义3个类,创建实例和调用它们之间的区别,以及那个例子.我看到的只是将其他两个类放入流程中,无法看到哪里会有好处.现在我肯定我错过了一些明显的东西(树木) - 有人可以用一个明确的现实世界的例子来解释它吗?


到目前为止,我可以从答案中得到什么,在我看来,这只是一种更为复杂的方式:

have an abstract class: MoveAlong with a virtual method: DoIt()
have class Car inherit from MoveAlong, 
     implementing DoIt() { ..start-car-and-drive..}
have class HorseCart inherit from MoveAlong, 
     implementing DoIt() { ..hit-horse..}
have class Bicycle inherit from MoveAlong, 
     implementing DoIt() { ..pedal..}
now I can call any function taking MoveAlong as parm 
passing any of the three classes and call DoIt
Isn't this what Strategy intents? (just simpler?)
Run Code Online (Sandbox Code Playgroud)

[编辑 - 更新]我在上面引用的函数被替换为另一个类,其中MoveAlong属于属性,根据需要根据在这个新类中实现的算法设置.(与接受的答案中的内容类似.)


[编辑 - 更新] …

design-patterns strategy-pattern

12
推荐指数
3
解决办法
9820
查看次数

Linux汇编程序错误"'asm'中不可能的约束"

我在Linux下开始使用汇编程序.我已将以下代码保存为testasm.c
并使用以下代码进行编译:gcc testasm.c -otestasm
编译器回复:"'asm'中的不可能约束".

#include <stdio.h>
int main(void)
{
    int foo=10,bar=15;

    __asm__ __volatile__ ("addl %%ebx,%%eax"
        : "=eax"(foo) 
        : "eax"(foo), "ebx"(bar) 
        : "eax" 
    );

    printf("foo = %d", foo);

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

我该如何解决这个问题?(我从这里复制了这个例子.)

Debian Lenny,内核2.6.26-2-amd64
gcc版本4.3.2(Debian 4.3.2-1.1)

解决方案:
查看已接受的答案 - 似乎不再支持'modified'子句.

linux assembly gcc inline-assembly

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

Java初学者web开发工具包/环境

我的任务是使用java和mysql开发一个交互式网站:使用servlet检索和按摩数据,applet对数据客户端进行特殊处理,以及处理来自客户端的不同数据视图请求.

您建议使用java作为Web开发的适当通用工具包/环境.

我需要知道如何使用以下内容:

  • 服务器端(tomcat?/?)
  • CMS
  • 编辑/ IDE
  • 一般工具/实用程序
  • 定向(特殊用途)工具/实用程序
  • 测试和QA工具/实用程序/技术
  • 参考资料(在线和离线)

请评估建议的解决方案并提供替代方案/改进/支持.


建议的Java Web开发工具包/环境

通过cdb:

  • 服务器端:
    Tomcat6
  • CMS:
    Drupal(初步阶段不需要)
  • 编辑器/ IDE:
    NetBeans(适合初学者)
  • 常规工具:(
    几乎所有内容都在NetBeans中......以后再去)
  • 定向(特殊用途):(
    几乎所有内容都在NetBeans中......以后再去)
  • 测试和质量保证:
    JUnit并使用Firebug(首先进行手动测试)
  • 参考资料:
    关于JSP,JavaScript等的HeadFirst系列
    SCRIBD(在线)
    [ 编辑 ]
  • 框架:
    Spring Web MVC 2.5 - (这似乎包含了大多数其他框架)

从答案中提炼出的选项

服务器端

  • Apache Tomcat - "用于运行Java代码的HTTP Web服务器环境"
  • Jetty - "HTTP服务器,HTTP客户端和javax.servlet容器"
  • GlassFish - 应用服务器(基于Tomcat +更多功能)
  • JBoss - 应用程序服务器("基于J2EE的应用程序服务器,以100%纯Java实现")

CMS

编辑/ IDE

一般工具/实用程序

  • Maven - "......现在可用于构建和管理任何基于Java的项目的工具." …

java environment toolkit

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

有没有一种标准方法可以在编译时确定系统是32位还是64位?

我需要设置 #ifdef - 检查条件编译.我想自动化该过程但不能指定目标OS /机器.有没有一种方法可以解析预编译器是在32位还是64位上运行?

(解释)我需要定义一个64位大小的类型.在64位操作系统上它是一个很长的,在大多数情况下它是一个很长的.

我找到了这个答案 - 这是正确的方法吗?

[编辑] 编译器宏方便参考

c++ compilation 32bit-64bit

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