小编Aus*_*yde的帖子

使用私人关键字

我是编程新手.我现在正在学习Java,有些东西我不太确定,那就是使用私有.为什么程序员将变量设置为私有,然后将write,getter和setter设置为访问它.无论如何,为什么不把所有东西都公之于众.

public class BadOO {
    public int size;

    public int weight;
    ...
}

public class ExploitBadOO {
    public static void main (String [] args) {
        BadOO b = new BadOO();
        b.size = -5; // Legal but bad!!
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现了一些像这样的代码,我看到评论合法但很糟糕.我不明白为什么,请解释一下.

java oop visibility

20
推荐指数
3
解决办法
8953
查看次数

Subversion,标记文件被删除或移动后的事实

假设我在Subversion仓库中有两个文件:

workingcopy/
  file1.txt
  file2.txt
Run Code Online (Sandbox Code Playgroud)

然后我重命名一个SVN外部:

$ mv file1.txt fileA.txt
Run Code Online (Sandbox Code Playgroud)

现在,SVN将file1.txt标记为缺失,fileA.txt为无版本

$ svn st
!   file1.txt
?   fileA.txt
Run Code Online (Sandbox Code Playgroud)

据SVN所知,我删除file1.txt并创建了一个完全不同的文件fileA.txt,因此它不知道跟踪文件之间的变化.


编辑:这确实有效,我只是不能正确拼写文件名:)

同样,如果删除文件

$ rm file2.txt
$ svn st
!   file2.txt
Run Code Online (Sandbox Code Playgroud)

SVN只知道文件丢失,并尝试将其删除不起作用:

$ svn remove file2.txt
svn: 'file2.txt' does not exist
Run Code Online (Sandbox Code Playgroud)

我知道在Mercurial中,--after无论Mercurial在工作副本中看到什么,您都可以在标记之后将文件标记为移动,复制,删除等.

SVN中有类似的技巧吗?

svn

17
推荐指数
2
解决办法
6570
查看次数

SQLalchemy AttributeError:'str'对象没有属性'_sa_instance_state'

我正在尝试使用SQLAlchemy + Python向我的数据库添加一个项目,但不断收到错误.

我的database_setup.py:

class company(Base):
    __tablename__ = 'company'
    compID = Column(Integer, primary_key = True)
    name = Column(String(80), nullable = False)

class item(Base):
    __tablename__ = 'items'
    itemID = Column(Integer, primary_key = True)
    name = Column(String(80), nullable = False)
    category = Column(String(250))
    description = Column(String(250))
    price = Column(String(8))
    compID = Column(Integer, ForeignKey('company.compID'))
    company = relationship(company)
Run Code Online (Sandbox Code Playgroud)

将sqlalchemy导入终端后,我定义了一个要插入的项目:

JawboneUP3 = item(
    itemID="1",
    name="Jawbone UP3",
    description="The latest UP!", 
    category="tracker",
    price="$174.99",
    company="Jawbone"
)
Run Code Online (Sandbox Code Playgroud)

并绘制一个会话来添加和提交:

session.add(JawboneUP3)
session.commit()
Run Code Online (Sandbox Code Playgroud)

当我提交时,我不断收到此错误:

Traceback (most recent call last):
  File "<stdin>", line …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy

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

MooTools的Function.prototype.overloadSetter()有什么作用?

我正在浏览MooTools源代码,试图了解它.implement().extend()实用程序.

每个的定义指的是这样定义的函数:

var enumerables = true;
for (var i in {toString: 1}) enumerables = null;
if (enumerables) enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];

Function.prototype.overloadSetter = function(usePlural){
    var self = this;
    return function(a, b){
        if (a == null) return this;
        if (usePlural || typeof a != 'string'){
            for (var k in a) self.call(this, k, a[k]);
            if (enumerables) for (var i = enumerables.length; i--;){
                k = enumerables[i];
                if (a.hasOwnProperty(k)) self.call(this, k, a[k]);
            }
        } else …
Run Code Online (Sandbox Code Playgroud)

javascript mootools

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

CSS不适用于IE 7中动态创建的元素?

还在寻找答案.

更改或重新分配到过滤器innerHTML成功重绘元素,但会破坏我的脚本,所以就这样了.

添加其他子节点(包括文本节点)不会强制重绘.删除添加的节点不会强制重绘.

使用ie7.js系列脚本不起作用.


在我正在开发的项目中,我动态生成(使用javascript)过滤器,如下所示:

<div class="filter">
    <a ... class="filter_delete_link">Delete</a>
    <div class="filter_field">
        ...
    </div>
    <div class="filter_compare">
        ...
    </div>
    <div class="filter_constraint">
        ...
    </div>
    <div class="filter_logic">
        ...
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有适用于每个过滤器的CSS(例如):

.filter a.filter_delete_link{
    display:block;
    height:16px;
    background: url('../images/remove_16.gif') no-repeat;
    padding-left:20px;
}
Run Code Online (Sandbox Code Playgroud)

但是,它似乎在IE 7中(可能只有6个),这些样式不适用于新的过滤器.

一切都在Firefox/Chrome/IE8中完美运行.

使用IE8开发人员工具,设置为IE7模式,浏览器可以看到新元素,并且可以看到CSS,但只是没有应用CSS.

有没有办法强制IE重新加载样式,或者是否有更好的方法来解决这个问题?


JavaScript :(简化)

var builder = {
    ...
    createNewFilter: function() {
        var newFilter = document.createElement('div');

        var deleteLink = document.createElement('a');
        deleteLink.href = '#';
        deleteLink.setAttribute('class','filter_delete_link');
        deleteLink.title = 'Delete Condition';
        deleteLink.innerHTML = "Delete";
        newFilter.appendChild(deleteLink);

        var field = document.createElement('div');
        field.setAttribute('class','filter_field'); …
Run Code Online (Sandbox Code Playgroud)

html javascript css internet-explorer-7 internet-explorer-6

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

实现PHP单例:静态类属性还是静态方法变量?

所以,我总是像这样实现一个单例:

class Singleton {
    private static $_instance = null;
    public static function getInstance() {
        if (self::$_instance === null) self::$_instance = new Singleton();
        return self::$_instance;
    }
    private function __construct() { }
}
Run Code Online (Sandbox Code Playgroud)

但是,它最近让我感到震惊,我也可以使用成员方式的静态变量来实现它:

class Singleton {
    public static function getInstance() {
        //oops - can't assign expression here!
        static $instance = null; // = new Singleton();
        if ($instance === null) $instance = new Singleton();
        return $instance;
    }
    private function __construct() { }
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这是更清洁,因为它不会使类混乱,我不需要做任何明确的存在检查,但因为我从来没有在其他任何地方见过这个实现,我想知道:

使用第二个实现比第一个实现有什么问题吗?

php singleton design-patterns

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

Swing:链接切换按钮以及按钮组以及相应的菜单项

对于学校项目,我需要制作一个简单的绘画应用程序,可以绘制线条,椭圆和矩形.

赋值指定我需要每种类型的形状的工具栏按钮菜单项.

通过制作JToggleButtons工具栏和菜单项中的按钮,我想稍微超越一点JRadioButtonMenuItems.此外,我想要它,以便当您选择其中一个工具栏按钮时,它取消选择其他按钮,选择适当的菜单项,并取消选择其他菜单项.同样用于选择其中一个菜单项.

我知道我可以组的任何AbstractButton一个ButtonGroup,但我不知道这是正确的道路要走,是因为虽然它处理一个按钮的"组"就好了,我不知道它可以处理两个并行组.

如果没有ButtonGroup意味着在6个事件监听器中的每一个中,我将不得不手动取消选择其他按钮,并且每对将调用相同的代码来设置形状类型.

我也可以制作两个ButtonGroup,一个用于菜单,一个用于工具栏,但是我还必须复制形状类型设置代码.

在任何一种情况下,我都冒着菜单设置按钮的风险,该按钮设置了一个设置按钮的菜单项,ad adintum.

解决这个问题的最佳方法是什么?

(能够通过Netbeans GUI设计器解决问题的好处;它更容易)

java user-interface swing

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

用于Web开发的脚本语言与编译语言

虽然我来自编程的Web开发方面的纯PHP背景,但我也花了很多时间在桌面上使用C#和C++.

我真的不想引发任何火焰战争,但是:

什么时候应该使用脚本语言而不是编译语言进行网站开发?
(反之亦然)

为了澄清,为了这个问题,我将"脚本语言"定义为PHP,Python或Ruby等解释性语言,并将"编译语言"定义为强类型编译语言,如C#,C++, Java或VB.

language-agnostic

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

使用PHP解析"高级"INI文件

基本上,我想要一个简单,简单,单文件的方法来解析具有"高级"功能的INI文件,如部分继承和属性嵌套,如Zend_Config_Ini.

例如:

[foo]
a = 1
b.a = 2
b.b = 3
b.c = 4
c = 5

[bar : foo]
b.b = 17
c = 42
Run Code Online (Sandbox Code Playgroud)

会解析

array(
  'foo'=>array(
    'a'=>'1',
    'b'=>array(
      'a'=>'2',
      'b'=>'3',
      'c'=>'4'
    ),
    'c'=>'5'
  ),
  'bar'=>array(
    'a'=>'1',
    'b'=>array(
      'a'=>'2',
      'b'=>'17',
      'c'=>'4'
    ),
    'c'=>'42'
  )
)
Run Code Online (Sandbox Code Playgroud)

PHP的内置功能parse_ini_file除了简单的部分和简单的键之外,不会处理简单的INI.

我使用的问题Zend_Config_Ini是我必须包含几乎整个Zend_Config子包,并且是超级膨胀和可配置的.

是否有一个简单的库可以解析它?
如果没有,是否有一个我没有看到的简单实现?

小而简单,我的意思是像INI文件的sfYaml.

我的(非常缺乏经验)的眼睛,我将不得不通过与一次解析parse_ini_file,然后回来解决继承,然后通过各部分运行和递归扩展键...

更新:由于这似乎是一个流行的问题,我想指出,我有一个简单的类GitHub上实现这个,随时发送引入请求,问题等.

php ini parsing

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

在php中取消设置变量

我刚刚通过php手册阅读了未设置的变量.

php手册说 "unset()破坏了指定的变量"

这个def看起来很完美,直到我遇到静态变量...... "如果一个静态变量在函数内部未设置(),unset()仅在函数的其余部分的上下文中销毁变量.以下调用将恢复之前的变量的值."

至少,这个定义对我来说似乎不是一个好的定义,因为"销毁变量"意味着变量不再与该内存位置相关联.

是否还有其他人认为更好的定义是"unset()使变量超出当前范围"?我的意思是,不是指向终生,而是在这里使用单词范围更好?

php static unset

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