问题列表 - 第46425页

Drupal的模块挂钩呼叫在哪里开始?

在Drupal 7(和Drupal 6?)系统中,什么"开始"钩子调用过程,或"顶级"钩子调用位于何处?

正如我目前了解Drupal模块系统,任何模块都能够为另一个模块创建一个钩子来实现.这意味着Drupal的大部分执行都是为其他模块实现钩子的模块,这反过来又为其他模块提供了钩子来实现.

我不清楚的是,是否有一个初始的顶级钩子在引导程序中调用以启动此过程,或者是否有几个非模块调用启动钩子调用过程,或其他什么(道歉)这是模糊和新的,但就像我说我不明白)

我查看了这个_drupal_bootstrap_full功能,最后有一个很有希望

module_invoke_all('init');
Run Code Online (Sandbox Code Playgroud)

但是,我对该modules/文件夹的搜索只显示了一个"init"钩子函数,这似乎不是一个启动点

system/system.api.php
1737:function hook_init() {

function hook_init() {
  drupal_add_css(drupal_get_path('module', 'book') . '/book.css');
}
Run Code Online (Sandbox Code Playgroud)

所以,这对我说模块系统之外的东西踢掉了这一切.这是发生在一个地方,还是多个地方.这些地方在哪里?

我目前不是一个沉重的Drupal用户.我所有这一切的最终目标是孤立地理解Drupal的模块系统,这样我就可以调查并理解Drupal如何使用它的模块构建大多数人认为是Drupal的应用程序.欢迎任何/所有解释,但我试图从架构的角度理解事物.我知道你不需要这些知识来使用Drupal,但是我的大脑已经坏了,在我知道基本的PHP代码在做什么之前我不会让我前进.

php drupal drupal-hooks drupal-modules

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

TransactionScope和数据库连接

TransactionScope是否与封闭的数据库连接一起使用?

using (var transaction = new TransactionScope(TransactionScopeOption.Required))
{
    // creates a new connection, does stuff, commit trans and close
    repos1.DoSomething(); 

    // creates a new connection, does stuff, commit trans and close
    repos2.DoSomething(); 

    transaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)

.net transactionscope

5
推荐指数
2
解决办法
2335
查看次数

从异常捕获中重新抛出异常

捕获异常然后抛出另一个异常是一个好主意吗?

像这样:

Try
    ' Do operation xxx
Catch ex As Exception
    ' Operation xxx failed, need to execute cleanup
    ' But now I've caught this exception outside of my main control logic, 
    ' so I would like to re-throw it
    Throw New ApplicationException("XXX failed")
End Try
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,当我在更高级别的逻辑上捕获异常时(为了确保我可以正确记录它),我需要在异常情况下执行一些操作,我只能在我的类/函数中执行.

你能想出为什么这会是一个坏主意的原因/场景吗?

.net vb.net exception-handling

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

WPF自动完成框和回车键

当我按下回车键时,我试图让WPF AutoCompleteBox引发KeyDown事件.我正在使用普通的KeyDown钩子,它适用于除了输入键之外的所有内容.有谁知道我怎么解决这个问题?

wpf autocomplete

7
推荐指数
2
解决办法
7288
查看次数

UML序列图中的空缺返回函数

我在下图中看到的序列模型有问题,特别是System对象正在创建一个新的Number.在这种情况下,不需要返回消息,因为系统和数字中的函数SaveInput(n)是该部分程序的行的结尾,但除非我包含一个,否则建模者重新构建了我的图表进入我在这里上传的另一个,我无法看到如何安排消息,以便我的程序将按照我打算的方式工作,而不包括从Number到System的返回消息(没有名称的那个),因为函数SaveInput()都返回一个void.

如何在序列图中处理void返回函数,以使它们正常运行?我打开了消息属性并明确将其定义为返回void,但这没有帮助.

在此输入图像描述 在此输入图像描述

oop uml sequence-diagram

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

省略一组名称

好吧,我确定某个人,某个地方必须已经为此提出了一个算法,所以我想在我开始(重新)发明它之前我会问.

我有一个任意(用户输入)非空文本字符串的列表.每个字符串可以是任意长度(0除外),它们都是唯一的.我想将它们显示给用户,但我想将它们修剪为我决定的固定长度,并用省略号(...)替换它们中的一部分.问题是我希望所有输出字符串都是唯一的.

例如,如果我有字符串:

  • Microsoft Internet Explorer 6
  • Microsoft Internet Explorer 7
  • Microsoft Internet Explorer 8
  • Mozilla Firefox 3
  • Mozilla Firefox 4
  • 谷歌Chrome 14

然后我不想修剪字符串的末尾,因为这是独特的部分(不想显示"Microsoft Internet ..."3次),但是切出中间部分是可以的:

  • 微软... rer 6
  • 微软...... rer 7
  • 微软... rer 8
  • Mozilla Firefox 3
  • Mozilla Firefox 4
  • 谷歌Chrome 14

其他时候,中间部分可能是唯一的,我想修剪结束:

  • 公司会议纪要,2010年5月25日 - 仅供内部使用
  • 公司会议纪要,2010年6月24日 - 仅供内部使用
  • 公司会议纪要,2010年7月23日 - 仅供内部使用

可能成为:

  • 公司会议纪要,2010年5月25日......
  • 公司会议纪要,2010年6月24日......
  • 公司会议纪要,2010年7月23日......

我想它应该永远不会在字符串的开头进行椭圆化,即使这样也是允许的,因为这看起来很奇怪.而且我猜它可能会在字符串中超过一个位置,但在合理范围内 - 可能2次就可以了,但是3次或更多似乎过多了.或者可能的次数不如剩余的块的大小重要:椭圆之间少于约5个字符将是毫无意义的.

输入(数量和大小)都不会非常大,因此性能不是主要问题(好吧,只要算法不会尝试愚蠢的事情,就像枚举所有可能的字符串一样,直到它找到一个有效的集合!) .

我想这些要求看起来非常具体,但我实际上相当宽松 - 我只是想描述一下我的想法.

之前有过这样的事吗?是否有一些现有的算法或库可以做到这一点?我用Google搜索了一些但到目前为止没有发现任何类似的内容(但也许我只是在谷歌上搜索).我不得不相信某个人已经想要解决这个问题了!

algorithm ellipsis

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

通过Linux FrameBuffer将像素绘制到屏幕上

我最近对一个奇怪的想法感到震惊,即从/ dev/urandom获取输入,将相关字符转换为随机整数,并使用这些整数作为像素的rgb/xy值绘制到屏幕上.

我做了一些研究(这里是关于StackOverflow和其他地方),许多人建议您可以直接写入/ dev/fb0,因为它是设备的文件表示.不幸的是,这似乎没有产生任何视觉上明显的结果.

我发现了一个示例C程序来自QT教程(不再可用),它使用mmap写入缓冲区.程序成功运行,但同样没有输出到屏幕.有趣的是,当我将我的笔记本电脑放入Suspend并稍后恢复时,我看到了一个瞬间闪现的图像(一个红色正方形),它被更早地写入帧缓冲区.写入帧缓冲区是否在Linux中用于绘制屏幕?理想情况下,我想写一个(ba)sh脚本,但C或类似的也可以.谢谢!

编辑:这是示例程序...兽医可能看起来很熟悉.

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>

int main()
{
    int fbfd = 0;
    struct fb_var_screeninfo vinfo;
    struct fb_fix_screeninfo finfo;
    long int screensize = 0;
    char *fbp = 0;
    int x = 0, y = 0;
    long int location = 0;

    // Open the file for reading and writing
    fbfd = open("/dev/fb0", O_RDWR);
    if (fbfd == -1) {
        perror("Error: cannot open framebuffer device");
        exit(1);
    }
    printf("The framebuffer …
Run Code Online (Sandbox Code Playgroud)

c linux framebuffer

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

狮身人面像和"你的意思是......?" 建议的想法.它有用吗?

我正在尝试提出最快的搜索建议方法.起初我认为Levenstein UDF函数结合mysql表可以完成这项工作.但是使用levenshtein,mysql必须遍历表中的每一行(大量的单词),这会使查询真的变慢.

现在我最近安装并开始使用Sphinx(http://sphinxsearch.com/)进行全文搜索,主要是因为它的性能和与SphinxSE的紧密mysql集成.

所以我问自己是否可以使用sphinx以某种方式实现"你的意思"算法来提升性能,我想我发现了一个简单的算法.基本上我采取我想要纠正的所有关键字,在每个字母之间放一个空格,然后将它放在sphinx索引中.如果单词是'keyword',它就变成'keywor d'.现在,当用户输入一个单词时,我将其拆分为字母,并在sphinx索引中搜索与所提供的任何字母匹配的记录(我只需要一个).最好的部分是狮身人面像非常适合计算匹配行的相关性(权重),因此最佳匹配总是具有最大权重(我认为).它还会考虑单词(我的情况下的字母)位置,因此最佳匹配将按此顺序排列.

通过sphinx查询,我在关键字列表中得到了最相似的单词.然后我使用扩展的Levenshtain距离检查它,它考虑了重新排列的字母http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance.如果字符串距离小于2(和!= 0),则建议单词.否则不建议任何事情.

我的想法有问题吗?我没想到的东西?任何预期的sphinx查询故障,以及与sphinx相关性计算的怪癖都没有给出最佳匹配?如果我在某处误会,请纠正我.

mysql sphinx keyword levenshtein-distance search-suggestion

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

C#如何循环用户输入,直到输入的数据类型正确?

如何使这段代码循环请求用户输入直到int.TryParse()

成功了吗?

//setX
    public void setX()
    {
        //take the input from the user
        string temp;
        int temp2;
        System.Console.WriteLine("Enter a value for X:");
        temp = System.Console.ReadLine();
        if (int.TryParse(temp, out temp2))
            x = temp2;
        else
            System.Console.WriteLine("You must enter an integer type value"); 'need to make it ask user for another input if first one was of invalid type'
    }
Run Code Online (Sandbox Code Playgroud)

有用答案之后的代码版本:

 //setX
    public void setX()
    {
        //take the input from the user
        string temp;
        int temp2;
        System.Console.WriteLine("Enter a value for X:");
        temp …
Run Code Online (Sandbox Code Playgroud)

c# console loops input

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

如何在解决冲突的过程中提交长Git合并

我与300多个冲突的文件进行了大规模的合并.我想使用mergetool来解决这些问题,但是我无法一次性完成所有这些工作.我怎样才能提交合并然后再回来并继续相同的合并?通常,如果索引中存在冲突,git似乎不允许您提交.

git merge conflict commit

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