小编pra*_*mer的帖子

带有单引号和双引号的bash alias命令

我有这个命令做我想要的但我无法在我的.bashrc中对其进行别名(注意它使用单引号和双引号):

svn status | awk '$1 =="M"{print $2;}'
Run Code Online (Sandbox Code Playgroud)

我试过了:

alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"
Run Code Online (Sandbox Code Playgroud)

还有其他一些没有运气的常识组合..我知道bash非常挑剔引号..所以什么是别名的正确方法,为什么?谢谢

linux bash quotes double-quotes

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

当一个类实现一个后代接口时,为什么它不会自动计为实现基接口?

这不会编译的原因是什么?

type
  IInterfaceA = interface ['{44F93616-0161-4912-9D63-3E8AA140CA0D}']
    procedure DoA;
  end;

  IInterfaceB = interface(IInterfaceA) ['{80CB6D35-E12F-462A-AAA9-E7C0F6FE0982}']
    procedure DoB;
  end;

  TImplementsAB = class(TSingletonImplementation, IInterfaceB)
    procedure DoA;
    procedure DoB;
  end;

var
  ImplementsAB: TImplementsAB;
  InterfaceA: IInterfaceA;
  InterfaceB: IInterfaceB;
begin
  ImplementsAB := TImplementsAB.Create;
  InterfaceA := ImplementsAB; >> incompatible types
  ...
end
Run Code Online (Sandbox Code Playgroud)

相比之下,这就是我的工作方式:

InterfaceA := ImplementsAB as InterfaceB;
Run Code Online (Sandbox Code Playgroud)

要么

InterfaceA := InterfaceB;
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果IInterfaceB继承自IInterfaceA且TImplementsAB实现了IInterfaceB,那么实现IInterfaceA并且类型兼容也是不合逻辑的?

delphi interface delphi-2010

18
推荐指数
2
解决办法
566
查看次数

使用匿名方法的VCL事件 - 您对此实现有何看法?

由于在Delphi中出现了匿名方法,我想在VCL组件事件中使用它们.显然,为了向后兼容,VCL没有更新,所以我设法做了一个简单的实现,但有几点需要注意.

type
  TNotifyEventDispatcher = class(TComponent)
  protected
    FClosure: TProc<TObject>;

    procedure OnNotifyEvent(Sender: TObject);
  public
    class function Create(Owner: TComponent; Closure: TProc<TObject>): TNotifyEvent; overload;

    function Attach(Closure: TProc<TObject>): TNotifyEvent;
  end;

implementation

class function TNotifyEventDispatcher.Create(Owner: TComponent; Closure: TProc<TObject>): TNotifyEvent;
begin
  Result := TNotifyEventDispatcher.Create(Owner).Attach(Closure)
end;

function TNotifyEventDispatcher.Attach(Closure: TProc<TObject>): TNotifyEvent;
begin
  FClosure := Closure;
  Result := Self.OnNotifyEvent
end;

procedure TNotifyEventDispatcher.OnNotifyEvent(Sender: TObject);
begin
  if Assigned(FClosure) then
    FClosure(Sender)
end;

end.
Run Code Online (Sandbox Code Playgroud)

以下是它的用法:

procedure TForm1.FormCreate(Sender: TObject);
begin    
  Button1.OnClick := TNotifyEventDispatcher.Create(Self,
    procedure (Sender: TObject)
    begin
      Self.Caption := 'DONE!'
    end)
end;
Run Code Online (Sandbox Code Playgroud)

我相信很简单,有两个缺点:

  • 我必须创建一个组件来管理匿名方法的生命周期(我浪费了更多的内存,对于间接方式来说它有点慢,我仍然希望在我的应用程序中更清晰的代码)

  • 我必须为每个事件签名实现一个新类(非常简单).这个有点复杂,VCL仍然有非常常见的事件签名,而且对于我创建类的每一个特殊情况,它都是永远完成的. …

delphi vcl anonymous-methods

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

HTML + CSS现在与生成打印报告有多成熟?

我正在考虑将一系列桌面业务应用程序的所有报告直接创建到html.大多数报告都是表格(可能是复合报告),页眉,页脚等(没有图像,矢量图形等).

在SO中搜索之后,我已经阅读了大量有关分页符等问题的文章(我根本不需要像素定位,但是在分页符时是控件).

例如,假设我有一个带有货币值的大表,我需要每页表格的最后一行显示当时的运行总计..​​这是可行的,或者我会遇到很多麻烦?

哪些技术可以帮助我?

  • HTML5
  • 使用Javascript
  • CSS
  • PHP图书馆
  • JQuery的

一些说明:

  • html将与嵌入的chrome或firefox引擎一起显示,因此浏览器之间的差异对我来说不是问题.
  • 我可以嵌入php预处理器,如果这有助于更容易地生成报告,我只是在寻找手头上最好的技术来使工作顺利进行..
  • 我厌倦了"WYSIWYG"设计师的报告生成器(Crystal Report,FastReport,ReportBuilder等)

谢谢!

html javascript php printing html5

14
推荐指数
2
解决办法
4633
查看次数

Rails + webpacker + vue:"您正在使用Vue的仅运行时构建,其中模板编译器不可用."

我创建了一个新的rails 5.2应用程序并安装了vue:

bundle exec rails webpacker:install:vue
Run Code Online (Sandbox Code Playgroud)

创建一个简单的端点Home#landing并添加<%= javascript_pack_tag 'hello_vue' %>到默认布局后,示例应用程序正在按预期工作.

我做了一些改动:

1)修改了hello_vue.js,

import Vue from 'vue'

document.addEventListener('DOMContentLoaded', () => {
  const app = new Vue({
    el: '#vueapp',
    data: {
      message: "Hello Vue!"
    }
  })
})
Run Code Online (Sandbox Code Playgroud)

2)<div id="vueapp"> {{ message }} </div>在我拥有的唯一视图中创建并清空.

3)从app/javascripts中删除了app.vue.

据我所知,这也应该工作(我们是如何处理与链轮一起运行的vue-rails gem).现在失败了:

[Vue警告]:您正在使用Vue的仅运行时版本,其中模板编译器不可用.将模板预编译为渲染函数,或使用包含编译器的构建.

我不能完全理解发生了什么或为什么失败,因为没有任何组件或模板可以在我的应用程序中编译.

ruby-on-rails webpack vue.js webpacker

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

可以在delphi数据集中创建虚假数据字段吗?

我想在DataSet(而不是ClientDataSet)中创建一个'假'数据字段:

  • 该字段不应存储在db中
  • 它不是计算字段(应允许用户输入输入数据)
  • 该字段具有业务逻辑含义,因此在用户更新其值后,它应更新其他字段(使用OnFieldChange事件)

我知道我可以有一个简单的无dbaware控件,捕获它的OnChange事件并在那里执行计算(或调用DataSet所在的DataModule函数)但我认为如果我可以重新利用数据集自动绑定db-更干净ware控件和数据集事件..

这样,Form(Presentation)和DataModule(Model)之间的唯一连接就是DataSet(更少耦合).

PD:我正在使用fibplus,我认为解决方案(如果有的话)将处于VCL级别.

谢谢!

delphi dataset

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

delphi中的接口和构造函数

我正在为业务对象编写一个框架.由于以下原因,我大量使用接口:

1)自动内存管理
2)关注点分离

通常构造函数有一些参数是框架的对象,但我不能将它们放在接口中.

我的问题是,如果我使用接口来分离实现它们的类的关注,为什么我的代码最终仍然绑定到实现接口以调用构造函数及其参数的具体类.

将创建者代码放在工厂方法中的优点是什么?(我还没有使用的东西..)

谢谢!

===编辑===

我的问题中的一点是构造函数的参数..在框架中很多对象需要一些其他工作..答案很好地解决了关注点,但我仍然没有看到如何解决参数问题..

如果我不采用构造函数的方式,我应该在对象的每个方法中使用"过程初始化"方式(在界面中)和"CheckObjectInitialized"(受保护).这怎么会更干净?

delphi constructor interface

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

使用多个客户端在互联网上使用firebird服务器的经历?

有没有人通过互联网真实体验火鸟数据库?

我有一个典型的Windows会计/ ERP软件(用Delphi完成),与Firebird数据库服务器工作得很好.现在我的网友(300 aprox的.现在,而是应该增加)也希望"在云中"的工作(从连接办公室,从笔记本电脑,从房子等).将标准Web应用程序的所有内容重新创建是很多工作(例如,HTML + CSS + JS + PHP + MYSQL),所以我正在考虑保留win客户端(我不关心其他操作系统)但不是生活在客户端局域网中的服务器将其移动到我将收缩的一对专用服务器(一个主服务器和一个辅助服务器再次启动失败).

搜索我遇到了这个常见问题解答http://www.firebirdfaq.org/faq53/,它解释了fb协议,它不适合在互联网上工作,但今天我的所有用户仍然至少有1MBbit /秒ADSL互联网连接(我认为这不像faq那样慢).

有人这样做过吗?经历是什么?fb服务器对互联网开放有多安全?他们的规模如何?

我知道,建立一个"中间件"与SOAP例如将是比较正常的,但我依然评估这里的解决方案是更加快速和容易的(我仍然有与复制,备份,hearbreath服务的一些工作,但它的很多不到为网络重做一切).

谢谢!编辑:FB版本:2.5.

delphi security firebird

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

delphi - 如何将参数从实例化器传递给spring4d依赖注入框架中的构造函数?

可以注册一个具有预期从创建点传递的参数的类吗?

我知道可以这样做:

GlobalContainer.RegisterType<TUserProcessor>.Implements<IUserUpgrader>.
AsTransient.DelegateTo(
    function: TUserProcessor
    begin
      Result := TUserProcessor.Create(GetCurrentUser);
    end
  );
Run Code Online (Sandbox Code Playgroud)

但是参数被绑定到容器被注册的执行上下文,而不是对象获取的地方.

这样的事情可能就是这样吗?

GlobalContainer.Resolve<IMathService>([FCurrentUser]);
Run Code Online (Sandbox Code Playgroud)

我知道一些peoble的拥护者拥有非常简单的构造函数,但有时候构造函数参数看起来很清楚:

  1. 构造的对象需要使用object参数,因此必须满足引用.该参数还使得该约束在类中更加明显.

  2. 你可以在方法或属性中分配引用,如果在没有先完成赋值的情况下尝试使用该对象,则可以在每个其他方法中引发和异常.我不喜欢编写这种类型的代码,这只是浪费时间,只是使用构造函数参数并检查那里.代码越少,IMO越好.

  3. 此外,对象被传递给使用容器(例如Transaction对象)构造新对象的对象本地,并且具有一些状态(它不是我可以通过容器获得的新对象).

delphi dependency-injection delphi-xe2 spring4d

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

如何使用selectize.js jquery插件为select增强设置自定义高度和宽度?

我在项目中使用https://github.com/brianreavis/selectize.js,我无法自定义选择输入的高度和宽度:

问题更加严重,因为标准的选择/文本输入(使用引导程序2)高度为30px,使用此插件时,它增长到37px并且打破了我的用户界面的视觉效果(将所有输入增加到37px肯定不是选项).

我还包括selectize.bootstrap2.css文件,没有运气.

css user-interface jquery-plugins twitter-bootstrap selectize.js

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