我有兴趣将Scala(或其他一些非Java JVM语言)集成到android平台中.我不是指用Scala编写一个Android应用程序,我早期就做过,但实际上是在构建android平台源代码树的构建过程中.我想这将是一个挂入makefile等问题.有没有人对此有所了解?
到目前为止我所拥有的: 平台源代码树来自git://android.git.kernel.org/platform/manifest.git以其处女形式构建,以"[下载并构建Google Android] [1]"为指导
还剩什么:
看起来我快到了!
过去的一些笔记
最新:我找到了编译Java源文件的位置!在definitions.mk中,请参阅'define transform-java-to-classes.jar'.最新的想法是编写一个transform-scala-to-classes定义,然后将它们存储在直接打包的类中.我将在transform-java-to-classes.jar中的这一步之前调用transform-scala-to-class.对eclipse和cygwin的支持现在将被删除,因为它会使代码混乱,因此会增加失败的可能性.
构建过程由运行build/core/main.mk的根Makefile开始构建/ core/main.mk包括build/core/config.mk,其中包括build/core/combo/javac.mk,它设置HOST_JAVAC,TARGET_JAVAC和COMMON_JAVAC.COMMON_JAVAC是"具有公共参数的Java编译器命令",通过它看,其他两个变量默认获取这些值,除非在特殊环境(openjdk或eclipse)中.COMMON_JAVAC不在此文件之外使用.另外两个仅用于build/core/definitions.mk.
build/core/java_library.mk(由config.mk包含)似乎只关心构建jar.这超出了我们关心的范围.与jar的任何交互预先假定类文件,这些类文件预先假定我们已经成功构建了我们的scala文件.
main.mk中有关于java版本的检查.我们将忽略这些并假设我们的scala版本是兼容的.现在(在combo/scalac.mk中)我使用的是javac.mk中使用的相同的--target arg.这应该存储在一个变量中.
main.mk还包括build/core/definitions.mk,它依次定义了一些有用的函数.我们关心的是all-java-files-under和all-subdir-java-files.后者在Android.mk文件中用于查找java文件.前者用于后者的实施.我会写Scala等价物.
为了弄清楚构建过程是如何工作的,我现在用-n和其他人运行make.我从stackoverflow文章"[用于调试makefile的工具] [2]"中得到了这个想法.我也在研究翻拍调试.
build/core/{config.mk,definitions.mk}告诉我们使用哪些make文件/命令来做什么.
作为在每个项目基础上攻击支持的可能方式,可能会将额外的代码添加到项目的Android.mk文件中.从platform/build/core/build-system.html我们读到"Android.mk是控制给定模块构建的makefile片段的标准名称.只有顶层目录应该有一个名为"Makefile"的文件." 您可以创建一个新目标,如"scala-build",并在最终make之前运行(make PackageName scala-build).也许还可以偷偷地将它隐藏在变量赋值中,从而减少了明确调用目标的需要.
另一种方式(远远更加hackish)是劫持用于javac的命令.这在build/core/combo/javac.mk中设置.您的项目的Android.mk必须包含LOCAL_SRC_FILES中的*.scala文件以及*.java文件.
我们现在(全球)在我的公司有一个Excel电子表格,以捕获有关每个国家技术使用情况的各种信息.问题在于它会消失,变化,但它们永远不会显而易见,而且经常会发生冲突 - 然后我们必须将它们粉碎在一起.对我来说,工作簿只不过是一个等待写入的垃圾输入/垃圾输出类型应用程序.
在一个拥有足够的员工和知识专门用于企业项目的公司中,由于某种原因,敏捷和语言/框架(如Rails,Grails等)不受欢迎.也就是说,我不禁认为这几乎完全适合需要,因为脚手架功能非常简单,只需要几次查找(即预定义的类别)即可捕获原始字段.我认为这将被认为是对这些框架的非常恰当的使用.
有没有人在通常大规模,严厉的企业环境中成功地使用这些类型的快速和脏应用程序?有关向非技术管理人员传达这种需要/适当性的任何提示吗?
我非常熟悉Autofac,我非常喜欢Autofac的一个功能是注册模块.有谁知道我怎么能用Unity做到这一点?如果有的话,我很难找到在Google中使用哪些术语来提出相等的统一值.
public class Global : HttpApplication, IContainerProviderAccessor
{
private static IContainerProvider _containerProvider;
protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
builder.RegisterModule(new MyWebModule());
_containerProvider = new ContainerProvider(builder.Build());
}
[...]
public IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
}
public class MyWebModule: Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterModule(new ApplicationModule());
builder.RegisterModule(new DomainModule());
}
}
public class ApplicationModule: Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(c => new ProductPresenter(c.Resolve<IProductView>()))
.As<ProductPresenter>()
.ContainerScoped();
}
}
我的应用程序是一个C#Windows窗体应用程序和.Net以某种方式使我的主菜单栏和工具条按钮的默认行为是你必须先点击我的应用程序的窗口(任何地方),然后才能让你点击菜单或工具条按钮.我怎么能改变这个?
像记事本和写字板这样的旧应用程序不会这样做.但是所有的Microsoft Office应用程序都可以.但这太烦人了!
它变得更糟,因为我的应用程序弹出辅助窗口,每次我更换窗口时,我必须首先激活爆破窗口才能做任何事情.啊!
我希望有一些全局方法来改变这种行为,所以我不必单独覆盖许多控件(我没有尝试过).有人知道吗?
请注意,我的应用程序对话框上的控件不会显示这种愚蠢的行为.他们为什么不同?
我看到另一个线程有点像我的问题:
但我不知道它是否回答了我的问题,因为他正在使用代码隐藏来制作列.我所做的就是在visual studio中插入GridView控件.顺便说一句,数据正在网格中填充,我只想尝试获取格式设置.
我正在使用Microsoft Visual Studio Professional 2010.(也是我的数据库的SQL Management Studio,但可能不需要这些信息,只是试图给予足够的信息以确保我正在做的事情被理解)
我正在使用Visual Basic.net代码在ASP.NET中创建一个网站.
该网站基本上是一个联系人列表网站.
3个文本框字段.名字,姓氏,主要电话#.
添加记录按钮(从文本框中获取信息并插入数据库)
GridView,显示正在填充信息的数据库
我有一个"主要电话号码"列,这会拉出一个电话号码以显示在GridView中.这个数字只有10位数,没有格式化...(即999-999-9999)
我想让GridView取9999999999并制作它(999)999-9999
如果我查看DataFormatString,我尝试了许多"{0:(###)### - ####}"的组合,包含和不包含引号,还包括全零而不是井号.
通过我的研究,似乎如果我想使用DataFormatString,我需要在我的数据库中将我的电话号码设为int.所以我删除了我的表并将其从varchar重新创建为int.我通过单击Gridview任务(GridView右上角的箭头)到达DataFormatString ...然后"编辑列"...然后在"选定的字段"下单击列的名称..."主电话号码"然后在"CommandField属性"下,我向下滚动到"DataFormatString".
我希望我不是太详细.我非常感谢所有的帮助.
我找到了这个:
http://www.tek-tips.com/viewthread.cfm?qid=328173
但我不知道我将如何使用它..看看因为我的代码是由Visual Studio完成的......有些看起来像这样
更新:我最初发布了错误的代码,无论是哪种方式,基于我所说的Kelsey能够为我提出的答案对我有用.
下面是我的新代码以及凯利给出的更正.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="EmpId" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." CellPadding="4"
ForeColor="#333333" GridLines="None" Height="136px" Width="299px"
AllowSorting="True">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="EmpId" HeaderText="EmpId" ReadOnly="True"
SortExpression="EmpId" Visible="False" />
<asp:BoundField DataField="FirstName" HeaderText="First Name"
SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="Last Name"
SortExpression="LastName" /> …Run Code Online (Sandbox Code Playgroud) 请参阅以下声明:
char a[5]="jgkl"; // let's call this Statement A
char *b="jhdfjnfnsfnnkjdf"; // let's call this Statement B , and yes i know this is not an Array
char c[5]={'j','g','k','l','\0'}; // let's call this Statement C
Run Code Online (Sandbox Code Playgroud)
现在,陈述A和C之间有什么区别吗?我的意思是两个都应该在Stack上吗?只有b将位于静态位置.
那么在程序的整个生命周期中,不会使"jgkl"存在于静态位置吗?既然它应该是只读/常数?请澄清.
(这个问题是关于临时和编程地保持两个数据库的新记录同步,具有非常不同的模式,忽略旧的过时和不再需要的记录的最佳方法.)
我在一家为导游,报纸和网站提供电视节目信息的公司工作.
我有一个旧系统,有一些限制,正在被一个新系统取代.
不同的客户端以不同的格式(xml,sql,txt,甚至是打印就绪的PDF)以不同的方式(推送,拉取,部分转储,简单导出,人工辅助导出 - 像PDF版本等)获取数据.一些出口产品每月生产一次,其他出口产品每天生产一次.
问题是几个客户端必须依赖旧系统中的数据,直到新系统完全开发和加载,并且维护数据的人员不能同时使两个数据库同步,因为这需要大量的额外工作,但考虑到项目的规模,过夜切换系统似乎是不可能的.
我们不希望将旧数据库中的数据全部输入到新数据库,因为大部分数据已经没有必要,并且有大量垃圾(即具有不同细节级别的重复记录,旧的空气信息我们只需要作为档案).
我们希望在两个数据库中插入新记录,并将旧编辑的记录复制到新数据库中.
我们即将开始使用Symfony和Doctrine开发新系统,我决定我们可以设计一组ORM"代理"类,它们应该具有与简单的Doctrine ORM类集相同的接口,但保留同步在另外两组类之间(与新系统接口的类和与旧系统接口的类).最终旧数据库应该与代理类一起丢弃,并且直接连接到新数据库的Doctrine ORM类应该占用该位置,就像旧系统永远不存在一样.
这是一个很长的镜头,我对这种方法并不完全有信心.
有没有人有这种项目的经验?
您是否知道这种方法中存在任何常见的陷阱,或者其他一些可能适合这种情况的解决方案?
有时!important是有用的,例如,如果我为站点上的所有链接定义了常用样式(例如,选择器a),但是当我想覆盖某些规则时,我有以下选择:
!important哪种方式更好,可能有一些指导方针?
我有一个PHP MVC框架,在该系统下有多个"应用程序"
\project\apps\app1\
\project\apps\app2\
\project\apps\shared\
Run Code Online (Sandbox Code Playgroud)
每个应用程序都可以拥有自己的一组控制器
\project\apps\app1\controllers\FooContoller.php
\project\apps\app2\controllers\FooContoller.php
\project\apps\shared\controllers\BarContoller.php
Run Code Online (Sandbox Code Playgroud)
我想设置我的PHPUnit测试空间以便能够测试每个应用程序目录,但我希望以"最佳"方式进行测试.
PHPUnit的设置如下:
\project\PHPUnit
\project\PHPUnit\phpunit.xml
\project\PHPUnit\apps\app1\bootstrap.php
\project\PHPUnit\apps\app1\controllers
\project\PHPUnit\apps\app1\controllers\FooControllerTest.php
\project\PHPUnit\apps\app2\bootstrap.php
\project\PHPUnit\apps\app2\controllers
\project\PHPUnit\apps\app2\controllers\FooControllerTest.php
Run Code Online (Sandbox Code Playgroud)
现在问题是:配置我的phpunit.xml文件的"最佳实践"方法是什么?
就目前而言,我试图将这两个应用程序作为自己的测试套件包含在XML文件中,但我很快就遇到了"Can not Redeclare Class:FooController".
在我看来,理想的情况是配置XML,以便为app1运行所有测试,然后"清除"内存,并为app2运行所有测试.
然而,在最佳实践方面,最好有多个XML文件,每个APP一个.(然后可能是批处理/ shellscript文件来运行"全部测试"或测试X)
如果我们查看"典型的"PHPUnit XML配置文件:
<phpunit bootstrap="./apps/app1/bootstrap.php" colors="true">
<testsuite name="App1TestSuite">
<directory>./</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">./apps/app1/controllers/</directory>
<directory suffix=".php">./apps/shared/</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/report.html" charset="UTF-8"
yui="true" highlight="true"
lowUpperBound="50" highLowerBound="80"/>
<log type="testdox-html" target="./log/testdox.html" />
</logging>
</phpunit>
Run Code Online (Sandbox Code Playgroud)
我应该选择其中的许多吗?或者我应该添加 标记并将所有文件设置组合在一个XML配置中.
如果最佳做法是"单一配置"......有没有人知道如何启用多个"bootstraps"?由于每个APP加载的全局变量略有不同,有些会加载略有不同版本的同名类,因此有必要清除所有内容并重新开始.
我有兴趣从一开始就构建用于测试的"最佳"系统,但显然我知道一些漏洞.