我是一个嵌入式软件公司的六人组建和发布团队的一员.我们还支持许多开发人员工具,例如Atlassian的Fisheye,Jira等,Perforce,Bugzilla,AnthillPro和一些自制工具(比如我的Django发行说明生成器).
大多数时候,我们的团队只为大型应用程序编写小插件(例如:在Anthill中自定义工作流程),长期实用程序脚本(打包QA版本)或Perforce触发器之类的东西(不要让人们检查特定分支,除非其更改说明包含错误编号;针对Active Directory而不是Perforce的内部密码进行身份验证).这是关于我们问题的规模,尽管我们有时会处理稍微大一些的问题.
我的老板,技术合理,已经要求我们对一种或两种语言进行标准化,以便我们可以更容易地相互替代.由于它们的普遍性和简单性,他主张bash脚本和Perl.我可以看出他的观点 - 我们主要做"胶水",那么为什么不使用"胶水"语言而不是为更大的项目设计的东西呢?由于我们使用的一些工具是基于Java的,我们确实需要使用有时会说JVM的东西.(这些项目阻力最小的路径是BeanShell和Groovy.)我对语言倡导感到非常惊讶,但我试图避免说"我们应该使用Python",因为我喜欢它而且Perl很糟糕.
相反,我正在努力想出一个很好的方法来定义我们的问题集:我们用脚本解决了什么问题?我们的团队可以从常用功能库中受益,还是我们的大多数项目更加孤立?期望我的同事学习有什么理由?哪些语言最容易开发和易于修改?
你们能否提出一些有用的方法来解决这个问题,既可以用于我自己的思考过程,也可以帮助我在同事之间进行一些头脑风暴?
经过多年的嵌入式编程,我必须开发一个Windows应用程序.我挖出了旧的C++ Builder和Delphi.这些都很棒,最新版本价格超过1美元,所以我不会去那里.
我特别喜欢的是VCL(可视化组件库),它让我编写自己的组件并与其他组件共享,以及数千个现有的第三方组件.我注意到现在还有来自Borland的RAD PHP.
我意识到MSVC,QT,NetBeans等对于RAD来说是足够好的IDE,但BUT做了什么提供了Borland产品用于开发其他组件的简易性 - 还有其他任何东西有数千种可供选择吗?
基于PC?跨平台很好.浏览器基于?自由总是好的;-)
我并不特别关心编程语言.
我和Lazarus一起去了,我很高兴.我不能只重新编译我的代码并期望它运行,但它涵盖了我现有的Delphi代码的90%.我建议在为Delphi花费1美元之前给它一个旋转
我有一段时间在包含主题标签的推文中获取信息,并使用Python将每个主题标签拉入数组.到目前为止,我甚至把我一直在努力的东西都搞砸了.
例如,"我喜欢#stackoverflow因为#people非常#helpful!"
这应该将3个主题标签拉入数组.
到目前为止,我只是一名iPhone开发人员,现在我决定给Android一个旋转.我在Android上无法弄清楚的是如何以编程方式阻止滚动WebView?
类似于iPhone预防onTouchMove活动的东西会很棒!
我想使用占位符,如下例所示:
cursor.execute ("""
UPDATE animal SET name = %s
WHERE name = %s
""", ("snake", "turtle"))
Run Code Online (Sandbox Code Playgroud)
除了我想让查询成为它自己的变量,因为我需要将查询插入到多个数据库中,如下所示:
query = """UPDATE animal SET name = %s
WHERE name = %s
""", ("snake", "turtle"))
cursor.execute(query)
cursor2.execute(query)
cursor3.execute(query)
Run Code Online (Sandbox Code Playgroud)
执行此类操作的正确语法是什么?
selectorgadget.com如何运作?是否有任何链接/页面解释了selectorgadget背后的算法?
谢谢
我在一个具有回调的类中有一个成员函数,但回调并不是严格必要的,所以它有一个默认的回调,它是空的.它似乎工作正常,但我得到一个恼人的警告:
warning: converting from ‘void (ClassName::*)()’ to ‘void (*)()’
Run Code Online (Sandbox Code Playgroud)
我试图找出它意味着什么以及如何将其关闭(或者如果我真的做错了就修复它).这是一些简单的代码:
class ClassName{
public:
void doSomething(void (*callbackFunction)() = (void(*)()) &ClassName::doNothing){
callbackFunction();
}
void doNothing(){}
};
int main(){
ClassName x;
x.doSomething();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:如果我这样做(没有明确地将其作为a void(*)()):
void doSomething(void (*callbackFunction)() = &ClassName::doNothing)
Run Code Online (Sandbox Code Playgroud)
我明白了:
main.cpp:3: error: default argument for parameter of type ‘void (*)()’ has type ‘void (ClassName::*)()’
Run Code Online (Sandbox Code Playgroud) 所以我知道这是一个相当大的挑战,但我想使用FFmpeg库在c#中编写一个基本的电影播放器/转换器.但是,我需要克服的第一个障碍是将FFmpeg库包装在c#中.我已经下载了ffmpeg但无法在Windows上编译它,所以我为我下载了一个预编译版本.太棒了.然后我开始寻找C#包装器.
我环顾四周,发现了一些包装器,如SharpFFmpeg(http://sourceforge.net/projects/sharpffmpeg/)和ffmpeg-sharp(http://code.google.com/p/ffmpeg-sharp/).首先,我想使用ffmpeg-sharp作为其LGPL而SharpFFmpeg是GPL.但是,它有很多编译错误.事实证明它是为单声道编译器编写的,我尝试用单声道编译它但无法弄清楚如何.然后我开始自己手动修复编译器错误,但遇到了一些可怕的错误,并认为我最好不要单独留下它们.所以我放弃了ffmpeg-sharp.
然后我看着SharpFFmpeg,它看起来像我想要的,所有P/Invoked函数.不过它的GPL?AVCodec.cs和AVFormat.cs文件看起来像avcodec.c和avformat.c的端口,我估计我可以移植自己?然后不必担心许可.
但是我想在开始编码之前做到这一点.我是不是该:
要么
首先要考虑的是我在C++方面并不擅长,因为我很少使用它,但我知道它足以绕过它.我认为#1的原因可能是更好的选择,因为大多数FFmpeg教程都是用C++编写的,而且我对内存管理的控制也比我在c#中做的要多.
你怎么看?您是否也碰巧使用FFmpeg有任何有用的链接(也许是教程)?
我有一个带有“SortID”列的表,该列使用连续数字进行编号。每当删除一行时,就会留下一个空白。有没有办法使用纯 SQL 用行号更新行?像这样的东西:
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
Run Code Online (Sandbox Code Playgroud)
(我意识到这不是有效的 SQL,这就是我寻求帮助的原因)
这应该将第一行设置为#1,第二行设置为#2...等等。这可以使用 SQL 吗?请原谅措辞不佳的问题,我不确定问这个问题的最佳方式。:)
我可以得到MouseEnter,MouseLeave和Click事件发生,但不是MouseLeftButtonDown或MouseLeftButtonUp.
这是我的XAML
<UserControl x:Class="Dive.Map.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Canvas x:Name="LayoutRoot" MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown">
<Button x:Name="btnTest" Content="asdf" Background="Transparent" MouseLeftButtonDown="btnTest_MouseLeftButtonDown"></Button>
</Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
这是我的代码
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void btnTest_MouseLeftButtonDown( object sender, MouseButtonEventArgs e )
{
btnTest.Content = DateTime.Now.ToString();
}
private void LayoutRoot_MouseLeftButtonDown( object sender, MouseButtonEventArgs e )
{
e.Handled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?