问题列表 - 第25585页

使用哈希默认值时出现奇怪的,意外的行为(消失/更改值),例如Hash.new([])

考虑以下代码:

h = Hash.new(0)  # New hash pairs will by default have 0 as values
h[1] += 1  #=> {1=>1}
h[2] += 2  #=> {2=>2}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但是:

h = Hash.new([])  # Empty array as default value
h[1] <<= 1  #=> {1=>[1]}                  ? Ok
h[2] <<= 2  #=> {1=>[1,2], 2=>[1,2]}      ? Why did `1` change?
h[3] << 3   #=> {1=>[1,2,3], 2=>[1,2,3]}  ? Where is `3`?
Run Code Online (Sandbox Code Playgroud)

在这一点上,我希望哈希是:

{1=>[1], 2=>[2], 3=>[3]}
Run Code Online (Sandbox Code Playgroud)

但它远非如此.发生了什么,我怎样才能得到我期望的行为?

ruby hash

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

如何通过ioctl调用或其他方式查明SCSI设备(例如/ etc/sda)是否为磁盘?

如何通过ioctl调用或其他方式查明SCSI设备(例如/ dev/sda)是否为磁盘?我尝试过以下但是ioctl呼叫失败了.我的/ dev/sda是​​一个USB闪存盘.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <scsi/scsi.h>
#include <scsi/sg.h>
#include <sys/ioctl.h>

int main(int argc, char** argv) {
    char *dev = "/dev/sda";
    struct sg_scsi_id m_id;
    int rc;
    int fd;

    fd = open(dev, O_RDONLY | O_NONBLOCK);
    if (fd < 0) {
        perror(dev);
    }
    memset(&m_id, 0, sizeof (m_id));
    rc = ioctl(fd, SG_GET_SCSI_ID, &m_id);
    if (rc < 0) {
        close(fd);
        printf("FAIL: ioctl SG_GET_SCSI_ID, rc=%d, errno=%d\n", rc, errno);
    } else {
        if (m_id.scsi_type …
Run Code Online (Sandbox Code Playgroud)

c linux ioctl scsi driver

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

STL中使用的设计模式(标准模板库)

我正在学习STL和设计模式.我想知道是否有任何文档或链接解释如何在STL中实现设计模式我做谷歌但无法获得太多数据

c++ design-patterns stl

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

在迭代期间从SortedList中删除是否安全

我的问题是枚举器从SortedList中删除项目是否安全?

SortedList<decimal, string> myDictionary;
// omitted code

IEnumerator<decimal, string> enum = myDictionary.GetEnumerator();

while(enum.MoveNext)
{
  // is it ok to remove here?
  myDictionary.Remove(enum.Current.Key);
}
Run Code Online (Sandbox Code Playgroud)

.net c# ienumerator

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

如何使用Fluent NHibernate和多个数据库识别特定实体的会话工厂

问题接着来自Fluent NHibernate +多个数据库(不需要关注此链接,这里应该有足够的背景).

我的问题是:

我正在使用Fluent NHibernate.我的应用使用多个数据库.每个数据库都有自己的实体注册(映射)它.结果是具有多个会话工厂,每个工厂与单个DB相关,并且每个会议工厂"包含"其自己的一组映射实体.

对于加载实体,我创建了一个通用的Factory类,它提供了一些可用于任何注册实体(在任何DB中)的标准加载方法.问题是:加载方法需要为我正忙着处理的实体类使用正确的会话工厂.我如何确定需要使用哪个会话工厂?我手头有所有的Session Factories(并且由数据库名称索引),我只需要一种方法,只知道我要加载的实体的类型,选择正确的Session Factory来使用.

例如:

public IBaseBusinessObject CreatePopulatedInstance(Type boType, Guid instanceKey)
{
  IBaseBusinessObject result = null;
  ISessionFactory sessionFactory = GetSessionFactory(boType);
  using (ISession session = sessionFactory.OpenSession())
  {
    using (session.BeginTransaction())
    {
      result = (IBaseBusinessObject)session.Get(boType, instanceKey);
    }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

需要在GetSessionFactory(boType)中进行什么?

谢谢阅读!

c# fluent-nhibernate multiple-databases

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

如何使用Enterprise Library Logging登录到用户的ApplicationData文件夹?

我正在使用MS EnterpriseLibrary.Logging并且工作正常但日志文件放在程序可执行文件目录中.

如何将我的日志文件放在单个用户的applicationData文件夹中?

我正在谈论的文件夹是你通过调用获得的文件夹:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)

.net logging enterprise-library

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

从varchar(36)到UNIQUEIDENTIFIER

我想投一个AuctionId这是一个UNIQUEIDENTIFIERvarchar(36),然后回到一个UNIQUEIDENTIFIER.请帮我.

CAST((SUBSTRING(CAST([AuctionId] as VARCHAR(36)), 0, 35) + '1') AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误:

消息8169,级别16,状态2,行647从字符串转换为uniqueidentifier时转换失败.

提前致谢

sql sql-server varchar casting uniqueidentifier

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

如何让我的代码更容易让下一个开发人员理解?

我已经在我的第一个编程工作大约8个月了,到目前为止我已经学到了不可思议的数量.

不幸的是,我是一家内部应用程序的小型初创公司的唯一开发人员.

有史以来第一次,当我离开这份工作时,我会把我的一些项目交给其他人.我已经彻底记录了我的所有项目(至少我是这么认为的),但我仍然对其他人阅读我的代码感到紧张.

例如,我总是做这种事情.

for (int i = 0; i < blah.length; i++)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我应该将'i'命名为描述性的吗?它只是一个临时变量,并且只存在于该循环中,并且看起来循环对"i"的作用非常明显.

这只是一个例子.另一个是我以不同的方式命名变量...除了使用下划线启动所有私有成员之外,我并不真正符合命名标准.

是否有任何资源可以告诉我如何让下一个开发人员更容易?这种类型的东西有标准吗?

c# coding-style readability

56
推荐指数
6
解决办法
3455
查看次数

Gtk:如何使用与完整文件相关的滚动条在文本视图中获取文件的一部分

我正在尝试创建一个非常大的文件编辑器(编辑器一次只在内存中存储缓冲区的一部分),但是在构建textview对象时我遇到了困难.基本上 - 我知道我必须能够动态更新文本视图缓冲区,并且我不知道如何让滚动条与完整文件相关联,而textview只包含文件的一个小缓冲区.

我在Gtk.ScrolledWindow和ScrollBars上使用了Gtk.Adjustment,但是虽然我可以扩展滚动条的范围,但它们仍然适用于缓冲区的范围而不是文件大小(我尝试通过Gtk.Adjustment设置)当我加载到textview时.我需要一个"知道"它正在查看文件的一部分的小部件,并且可以根据需要加载/卸载缓冲区以查看文件的不同部分.到目前为止,我相信我会响应"change_view"来计算我何时关闭,或者即将离开当前缓冲区并需要加载下一个,但我不知道如何让滚动条有top与文件的开头相关,而bottom与文件的结尾相关,而不是与textview中的加载缓冲区相关.

任何帮助将不胜感激,谢谢!

python gtk pygtk

5
推荐指数
0
解决办法
474
查看次数

ASP.NET:用户控件中的按钮未回发

我有一个简单的用户控件与此代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="Pager" %>
<table style="width: 100%;">
    <tr>
        <td runat="server" id="PageControls">
            <!-- This button has the problem: -->
            <asp:Button ID="btnPrevPage" runat="server" Text="&larr;" OnClick="btnPrevPage_Click" />
            Page
            <asp:DropDownList runat="server" ID="ddlPage" AutoPostBack="true" OnSelectedIndexChanged="ddlPage_SelectedIndexChanged" />
            of
            <asp:Label ID="lblTotalPages" runat="server" />
            <!-- This button has the problem: -->
            <asp:Button ID="btnNextPage" runat="server" Text="&rarr;" OnClick="btnNextPage_Click" />
        </td>
        <td align="right" runat="server" id="itemsPerPageControls">
            <asp:Literal ID="perPageText1" runat="server" />
            <asp:DropDownList ID="ddlItemsPerPage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlItemsPerPage_SelectedIndexChanged" />
            <asp:Literal ID="perPageText2" runat="server" />
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

如您所见,2个按钮连接到单击事件,这些事件在代码隐藏中正确定义.

现在,这是我在页面上包含控件实例的方法:

 <uc:Pager ID="Pager1" runat="server" …
Run Code Online (Sandbox Code Playgroud)

.net javascript c# asp.net postback

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