问题列表 - 第28397页

is_dir无法识别文件夹

我正在尝试创建一个扫描文件夹以查找子文件夹的函数,然后返回一个包含这些文件夹名称的数字数组.

这是我用于测试的代码.一旦我得到它打印出文件夹名称而不仅仅是"." 对于当前和以上文件夹的".."都会很好,我可以完成这个功能.

<?php
function super_l_getthemes($dir="themes")
{

if ($handle = opendir($dir)) {
    echo "Handle: {$handle}\n";
    echo "Files:\n";


    while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }

    closedir($handle);
}
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,并打印出文件夹的所有内容:文件,子文件夹和"." 和"......"

但如果我更换:

  while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }
Run Code Online (Sandbox Code Playgroud)

有:

while (false !== ($file = readdir($handle))) {
        if(file_exists($file) && is_dir($file)){echo "{$file}";}
    }
Run Code Online (Sandbox Code Playgroud)

该功能仅打印"." 和"..",而不是我想要打印的两个文件夹名称.

任何帮助表示赞赏.

php directory

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

扩展EF4 SQL生成

我们在一个相当大的系统中使用EF4,偶尔会遇到问题,因为EF4无法将某些表达式转换为SQL.目前,我们要么需要做一些花哨的步法(DB/Code),要么只接受性能命中并允许查询在内存中执行.

毋庸置疑,这些都不是理想的,我们有时不得不使用的黑客降低了可读性/可维护性.

我们理想的是一种扩展EF4 SQL提供程序的SQL生成功能的方法.显然有一些像.Net方法调用这样的东西总是必须是客户端的,但是像日期比较这样的一些功能(例如[Linq to Entities中的分组周数]应该是可行的.

我用Google搜索了,但也许我使用了错误的术语,因为我得到的是有关EF4 SQL生成新功能的信息.

对于这样一个灵活且可扩展的框架,如果不可能,我会感到惊讶.在我的脑海中,我想象从[SQL 2008]提供程序继承并扩展它以处理表达式树中的其他表达式/类似,它被赋予转换为SQL.

任何帮助/指针赞赏.

我们使用的是VS2010 Ultimate,.Net 4(非客户端配置文件)和EF4.该应用程序在ASP.Net中,并在64位环境中运行,以防它有所作为.

更新:回应一些澄清要求;

我们使用的是代码优先方法,并有一个控制台应用程序,可以创建数据库并填充一些参考表.

我宁愿远离存储过程,除非它们也可以以类似的方式生成 - 目前,根据需要生成新版本的数据库,并且单独的进程迁移/同步数据.我们目前关于数据库的所有事情都使用实体.我承认我无法给出一个很好的理由,但在这种情况下运行SQL脚本来生成存储过程感觉不对 - 但如果我弄错了,请纠正我.

关于特定的场景,我担心如果不经过长时间的繁文缛节练习,我就无法从代码中提供一个 - 上面提到链接就是我们想要完成的事情的一个很好的例子.在此示例中,实现允许日期算术的机制:

DateTime firstDay = GetFirstDayOfFirstWeekOfYear();
var userTimes = from t in context.TrackedTimes
                group t by new {t.User.UserName, WeekNumber = (t.TargetDate - firstDay).Days / 7} into ut
                select new
                {
                    UserName = ut.Key.UserName,
                    WeekNumber = ut.Key.WeekNumber,
                    Minutes = ut.Sum(t => t.Minutes)
                };
Run Code Online (Sandbox Code Playgroud)

我可以看到一种方法,这可以使用SQL单独完成,但不能使用LINQ-To-Entities(服务器端)来完成.

.net extension-methods entity-framework entity-framework-4

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

正则表达式用于删除空格但不包括""

我有以下输入字符串:

key1 = "test string1" ; key2 = "test string 2"
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为以下内容而不进行标记化

key1="test string1";key2="test string 2"
Run Code Online (Sandbox Code Playgroud)

regex

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

适用于iPad的Three20

我需要在我的iPad项目中使用Three20.我想知道iPhone版的Three20项目是否可以在iPad上直接使用,还是我们应该等待这个时间线完成:

http://three20.info/timeline/roadmap

OS 3.2中是否有Three20的替代品?

谢谢,拉吉

iphone three20 ipad

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

Silverlight组合框性能问题

我面临一个拥挤的组合框(5000件)的性能问题.下拉列表的渲染非常慢(就像在显示任何项目之前计算所有项目一样).

你有什么技巧可以让这个下拉显示变得懒惰吗?

Xaml代码:

  <Grid x:Name="LayoutRoot">
        <StackPanel Orientation="Horizontal" Width="200" Height="20">
            <TextBlock>Test Combo </TextBlock>
            <ComboBox x:Name="fooCombo" Margin="5,0,0,0"></ComboBox>
        </StackPanel>
    </Grid>
Run Code Online (Sandbox Code Playgroud)

代码背后:

public MainPage(){InitializeComponent();

    List<string> li = new List<string>();

    int Max = 5000;
    for (int i = 0; i < Max; ++i)
        li.Add("Item - " + i);

    fooCombo.ItemsSource = li;
}
Run Code Online (Sandbox Code Playgroud)

好吧,Combobox UI虚拟化中似乎存在一个错误,因此自动完成框应该是可行的方法.

silverlight performance

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

如何组合xsl:attribute和xsl:use-attribute-sets以有条件地使用属性集?

我们有一个xml节点"item",其属性为"style",即"Header1".但是这种风格可以改变.我们有一个名为Header1的属性集,它定义了在xsl:fo生成的PDF中的外观.

这是有效的(在fo:table-cell节点中内联提到了use-attribute-sets):

<xsl:template match="item[@type='label']">
    <fo:table-row>
        <fo:table-cell xsl:use-attribute-sets="Header1">            
             <fo:block>
                 <fo:inline font-size="8pt" >
                    <xsl:value-of select="." />
                </fo:inline>
            </fo:block>
        </fo:table-cell>
    </fo:table-row>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但这不是(使用xsl:属性,因为@style属性也可以是Header2).它不会生成错误,会创建PDF,但不会应用属性.

<xsl:template match="item[@type='label']">
    <fo:table-row>
        <fo:table-cell>         
             <xsl:attribute name="xsl:use-attribute-sets">
                 <xsl:value-of select="@style" />
             </xsl:attribute>
             <fo:block>
                 <fo:inline font-size="8pt" >
                    <xsl:value-of select="." />
                </fo:inline>
            </fo:block>
        </fo:table-cell>
    </fo:table-row>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?我们如何实现这一目标,最好不要长xsl:if或xsl:什么时候?

xml xslt xsl-fo

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

针对特定情况的最快排序算法

什么是大量(数万)9个正双精度值组的最快排序算法,其中每个组必须单独排序?因此,它必须连续多次快速排序少量可能重复的双精度值.值在[0..1]间隔内.我不关心空间复杂性或稳定性,只关心速度.

language-agnostic sorting algorithm performance

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

java:为自定义序列化分配对象引用ID

由于各种原因,我有一个自定义序列化,我将一些相当简单的对象转储到数据文件.可能有5-10个类,并且结果的对象图是非循环的并且非常简单(每个序列化对象具有1或2个对序列化的引用).例如:

class Foo
{
    final private long id;
    public Foo(long id, /* other stuff */) { ... }
}

class Bar
{
    final private long id;
    final private Foo foo;
    public Bar(long id, Foo foo, /* other stuff */) { ... }
}

class Baz
{
    final private long id;
    final private List<Bar> barList;
    public Baz(long id, List<Bar> barList, /* other stuff */) { ... }
}
Run Code Online (Sandbox Code Playgroud)

id字段仅用于序列化,因此当我序列化到文件时,我可以通过保存到目前为止序列化了哪些ID的记录来编写对象,然后为每个对象检查其子对象是否已被序列化并写入那些没有的,最后通过编写数据字段和与其子对象相对应的ID来编写对象本身.

令我困惑的是如何分配id.我想到了,似乎有三种情况可以分配ID:

  • 动态创建的对象 - 从递增的计数器分配id
  • 从磁盘读取对象 - 从磁盘文件中存储的编号分配id
  • singleton对象 - 在任何动态创建的对象之前创建对象,以表示始终存在的单个对象.

我该如何妥善处理?我觉得我正在重新发明轮子,必须有一套完善的技术来处理所有情况.


澄清: …

java serialization object-graph

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

是否可以在iOS中将UIActivityIndi​​catorView颜色更改为黑色?

我想将活动指示器颜色灰色/白色更改为黑色.是否可以将颜色更改为黑色?如果是,请指导我或提供一些示例代码.

iphone uiactivityindicatorview ios

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

log4net自定义属性不起作用

我正在尝试实现自定义log4net logger/logmanager,以便我可以添加一个新级别.我还想让目标表的模式(我使用AdoNetAppender和SQL Server 2008)有一些可选字段; 例如,我添加的级别用于跟踪使用情况,其中一个字段需要是持续时间(告诉我们需要多长时间).但是,其他级别(INFO,DEBUG,FATAL等)对于Duration不具有任何值.所以我需要能够插入表中并不是所有具有值的字段 - 最好不必重新实现所有标准级别的日志记录,以便为不相关的字段传递空值.理想情况下,对于特定日志记录事件无法找到的属性值,log4net会自动传递NULL.

我的自定义记录器中的代码如下:

public void Usage(TimeSpan? duration, DateTime? startTime, DateTime? endTime, string message)
    {
        if (IsUsageEnabled)
        {
            LoggingEvent loggingEvent = new LoggingEvent(GetType(), Logger.Repository, Logger.Name, _currentUsageLevel,
                message, null);
            if (startTime.HasValue)
            {
                loggingEvent.Properties["StartTime"] = startTime.Value;
            }
            else
            {
                loggingEvent.Properties["StartTime"] = DBNull.Value;
            }

            if (endTime.HasValue)
            {
                loggingEvent.Properties["EndTime"] = endTime.Value;
            }
            else
            {
                loggingEvent.Properties["EndTime"] = DBNull.Value;
            }

            if (duration.HasValue)
            {
                loggingEvent.Properties["Duration"] = duration.Value.TotalMilliseconds;
            }
            else
            {
                loggingEvent.Properties["Duration"] = DBNull.Value;
            }

            Logger.Log(loggingEvent);
        }
    }
Run Code Online (Sandbox Code Playgroud)

(添加了对DBNull.Value的赋值,希望这可以帮助log4net在未传递值时传递空值,但我希望它们可以被删除).

appender配置如下:

<appender name="SQLAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize …
Run Code Online (Sandbox Code Playgroud)

log4net-configuration

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