我有这个命令做我想要的但我无法在我的.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非常挑剔引号..所以什么是别名的正确方法,为什么?谢谢
这不会编译的原因是什么?
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中出现了匿名方法,我想在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仍然有非常常见的事件签名,而且对于我创建类的每一个特殊情况,它都是永远完成的. …
我正在考虑将一系列桌面业务应用程序的所有报告直接创建到html.大多数报告都是表格(可能是复合报告),页眉,页脚等(没有图像,矢量图形等).
在SO中搜索之后,我已经阅读了大量有关分页符等问题的文章(我根本不需要像素定位,但是在分页符时是控件).
例如,假设我有一个带有货币值的大表,我需要每页表格的最后一行显示当时的运行总计..这是可行的,或者我会遇到很多麻烦?
哪些技术可以帮助我?
一些说明:
谢谢!
我创建了一个新的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的仅运行时版本,其中模板编译器不可用.将模板预编译为渲染函数,或使用包含编译器的构建.
我不能完全理解发生了什么或为什么失败,因为没有任何组件或模板可以在我的应用程序中编译.
我想在DataSet(而不是ClientDataSet)中创建一个'假'数据字段:
我知道我可以有一个简单的无dbaware控件,捕获它的OnChange事件并在那里执行计算(或调用DataSet所在的DataModule函数)但我认为如果我可以重新利用数据集自动绑定db-更干净ware控件和数据集事件..
这样,Form(Presentation)和DataModule(Model)之间的唯一连接就是DataSet(更少耦合).
PD:我正在使用fibplus,我认为解决方案(如果有的话)将处于VCL级别.
谢谢!
我正在为业务对象编写一个框架.由于以下原因,我大量使用接口:
1)自动内存管理
2)关注点分离
通常构造函数有一些参数是框架的对象,但我不能将它们放在接口中.
我的问题是,如果我使用接口来分离实现它们的类的关注,为什么我的代码最终仍然绑定到实现接口以调用构造函数及其参数的具体类.
将创建者代码放在工厂方法中的优点是什么?(我还没有使用的东西..)
谢谢!
===编辑===
我的问题中的一点是构造函数的参数..在框架中很多对象需要一些其他工作..答案很好地解决了关注点,但我仍然没有看到如何解决参数问题..
如果我不采用构造函数的方式,我应该在对象的每个方法中使用"过程初始化"方式(在界面中)和"CheckObjectInitialized"(受保护).这怎么会更干净?
有没有人通过互联网真实体验火鸟数据库?
我有一个典型的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.
可以注册一个具有预期从创建点传递的参数的类吗?
我知道可以这样做:
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的拥护者拥有非常简单的构造函数,但有时候构造函数参数看起来很清楚:
构造的对象需要使用object参数,因此必须满足引用.该参数还使得该约束在类中更加明显.
你可以在方法或属性中分配引用,如果在没有先完成赋值的情况下尝试使用该对象,则可以在每个其他方法中引发和异常.我不喜欢编写这种类型的代码,这只是浪费时间,只是使用构造函数参数并检查那里.代码越少,IMO越好.
此外,对象被传递给使用容器(例如Transaction对象)构造新对象的对象本地,并且具有一些状态(它不是我可以通过容器获得的新对象).
我在项目中使用https://github.com/brianreavis/selectize.js,我无法自定义选择输入的高度和宽度:
问题更加严重,因为标准的选择/文本输入(使用引导程序2)高度为30px,使用此插件时,它增长到37px并且打破了我的用户界面的视觉效果(将所有输入增加到37px肯定不是选项).
我还包括selectize.bootstrap2.css文件,没有运气.
css user-interface jquery-plugins twitter-bootstrap selectize.js
delphi ×6
interface ×2
bash ×1
constructor ×1
css ×1
dataset ×1
delphi-2010 ×1
delphi-xe2 ×1
firebird ×1
html ×1
html5 ×1
javascript ×1
linux ×1
php ×1
printing ×1
quotes ×1
security ×1
selectize.js ×1
spring4d ×1
vcl ×1
vue.js ×1
webpack ×1
webpacker ×1