问题列表 - 第30476页

为什么在Django中使用线程本地不好?

我正在使用线程本地来存储当前用户和请求对象.通过这种方式,我可以轻松访问程序中任何位置的请求(例如动态表单),而无需传递它们.

为了在中间件中实现线程本地存储,我遵循了Django站点上的教程:http: //code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version = 18

此文档已经过修改,建议避免使用此技术:http: //code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version = 20

来自文章:

从设计的角度来看,threadlocals本质上是全局变量,并且受到全局变量通常需要的所有常见的可移植性和可预测性问题的影响.

更重要的是,从安全角度来看,threadlocals构成了巨大的风险.通过提供公开其他线程状态的数据存储,您可以为Web服务器中的一个线程提供一种方法来潜在地修改系统中另一个线程的状态.如果线程本地数据包含用户或其他与身份验证相关的数据的描述,则该数据可以用作授予对未授权用户的访问权的攻击的基础,或者暴露用户的私有细节.虽然有可能建立一个可以抵御这种攻击的线程局域系统,但是防御起来要容易得多,并且建立一个不受任何此类漏洞影响的系统.

我理解为什么全局变量可能很糟糕,但在这种情况下,我在自己的服务器上运行自己的代码,所以我看不出两个全局变量带来的危险.

有人可以解释涉及的安全问题吗?我问过很多人,如果他们阅读这篇文章并知道我正在使用线程本地人,他们会如何破解我的应用程序,但没有人能告诉我.我开始怀疑这是一个由分裂的纯粹主义者所持的观点,他们喜欢明确地传递物品.

python django thread-local

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

Android为ListView添加页脚addFooterView()?

我有一个ListView活动需要一个页脚到项目列表,以便您可以单击它,它会将更多项目加载到列表中.该列表支持我的字符串映射支持的SimpleAdapter,在设置适配器之前我这样做是为了添加页脚:

mInflater.inflate(R.layout.list_load_more_row, null);

TextView footer = (TextView) findViewById(R.id.loadMore);

getListView().addFooterView(footer);

setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
Run Code Online (Sandbox Code Playgroud)

但是我在调​​试器中得到了这个例外

java.lang.NullPointerException android.widget.ListView.clearRecycledState(ListView.java:489)android.widget.ListView.resetList(ListView.java:476)android.widget.ListView.setAdapter(ListView.java:417)

什么是错的,如何将我的页脚添加到列表中?

[编辑]活动正在使用list_load_more_row.xml:

  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/loadMore"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="17sp"
        android:textStyle="bold"
        android:textColor="#000000"  
        android:ellipsize="marquee"  
        android:marqueeRepeatLimit="marquee_forever"
        android:gravity="center_horizontal|center_vertical"
        android:text="@string/hello" />
Run Code Online (Sandbox Code Playgroud)

java xml user-interface android listview

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

JavaScript函数重新定义

是否可以从自己的体内重新定义JavaScript函数.例如,我可以执行以下操作吗?

function never_called_again(args) {
  // Do some stuff
  never_called_again = function (new_args) {
    // Do some new stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

以上是否有效且是否具有正确的语义?我不想用旧的函数名创建一个新的全局变量,因为我试图在全局范围内做这种事情,但是从各种对象范围开始,我不希望当我发生名字冲突时在这些本地范围内重新定义函数.

javascript

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

php有什么标准框架吗?

有许多PHP框架,但我想知道是否有一个标准的Objective框架,它具有类似J2SE或.NET Framework的优秀架构?

我看到很多类似的问题,但大多数都是关于初学者或特殊编程的.

php frameworks

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

导入更多名称空间是否会影响性能?

导入大量命名空间是否会影响性能?

特别是在C#.NET或一般情况下?

显然我不会导入一个我不打算使用的命名空间,而且我可能永远不必导入那么多担心性能的命名空间,但这比我面临的实际,实际问题更为普遍. .

.net performance namespaces

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

如何在.NET 3.5中再次使StringBuilder空?

我有一个循环,我根据某些条件创建一些字符串值.我确实将StringBuilder对象放在循环之外,每次我在循环中有新行时,我需要清除此行的StringBuilder附加值.

我如何清除这些?

        StringBuilder sb = new StringBuilder();

        foreach (DataRow row in recipientsList.Rows)
        {
            sb.Length = 0;
            sb.Append("<ul>");
            if (row["needsToActivate"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutActivationTemplate());
            }
            if (row["needsToEnterSite"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutEnteringWebsiteForTwoWeeksTemplate());
            }
            if (row["needsPicture"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutPicturesTemplate());
            }
            if (row["needsText"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutTextTemplate());
            }
            if (row["needsCharacteristic"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutCharateristicsTemplate());
            }
            if (row["needsHobby"] == "1")
            {
                sb.AppendFormat("<li>{0}</li>", getUsersWithoutHobbiesTemplate());
            }
            sb.Append("</ul>");
}
Run Code Online (Sandbox Code Playgroud)

代码接受答案;

c# asp.net .net-3.5

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

如何将 wchar_t** 转换为 char**?

我得到 argv 作为 wchar_t** (见下文),因为我需要使用 unicode,但我需要将其转换为 char **。我怎样才能做到这一点?

int wmain(int argc, wchar_t** argv) 
{ 
Run Code Online (Sandbox Code Playgroud)

c++ wchar-t char

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

iPhone Mobile Safari:强制打开键盘

这是一个HTML/CSS/JS(jQuery)iPad应用程序.我有一个按钮,可以在输入表格中滑动.我想将用户集中在输入上,然后启动键盘.

这是我正在使用的,但不起作用:

$('#myFormField').focus();
Run Code Online (Sandbox Code Playgroud)

这确实集中了输入,但无法启动键盘.这是不可能的(出于安全原因或其他原因)?

有没有办法强制或模拟用户点击输入(或任何事情)?

iphone safari mobile jquery ipad

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

PHP - 在if语句中分配值

前几天我读到在if语句中分配值并不是一个好主意.说实话,我实际上使用了很多,例如

if(isset($_POST) && $post = $_POST) {
  print_r($post)
}
Run Code Online (Sandbox Code Playgroud)

知道为什么那不是最优的吗?

php

4
推荐指数
3
解决办法
7266
查看次数

如何在TeamCity上停止"无法停止"构建

在尝试停止TeamCity上的构建后,偶尔会出现"无法停止"状态.我希望在构建代理上杀死我的构建过程可以解决问题,但它不起作用.在构建计算机上停止TeamCity代理程序也无济于事.重新启动构建代理(即计算机)可以解决问题,但在机器启动后需要2-3分钟.看起来TeamCity服务器本身认为我的构建仍在运行.

有没有更好的方法来阻止这些构建?或者也许有某些信息可以解释这个逻辑?

teamcity build-agent

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