我是哈斯克尔的新手,我读完并消化了" 了解你是一件好事",并尝试了一些事情.对于我的第一个项目,我想尝试经典:FizzBuzz.所以我想出了以下代码:
import System.IO
fizzBuzz :: (Integral a) => a -> String
fizzBuzz num
| fizz && buzz = "FizzBuzz"
| fizz = "Fizz"
| buzz = "Buzz"
| otherwise = show num
where fizz = num `mod` 3 == 0
buzz = num `mod` 5 == 0
main = print $ map fizzBuzz [1..100]
Run Code Online (Sandbox Code Playgroud)
工作得很好,除了我有一个很难读的相当密集的列表.所以我尝试了这个主要功能:
main = map putStrLn $ map fizzBuzz [1..100]
Run Code Online (Sandbox Code Playgroud)
这给了我错误Couldn't match expected type 'IO t' against inferred type '[IO ()]'.我尝试了六件事,似乎没有任何帮助.做我想做的事情的正确方法是什么?
我是一名学生开发人员,我为我现在正在合作的公司建立了几个安装程序.所以我对WIX非常熟悉.我们最近决定使用Build服务器自动构建我们的解决方案.它构建了调试和发布,以及混淆(和非混淆)项目.你真的不需要了解这一点.您需要了解的是,我有相同的Wix项目动态构建不同的MSI.所以我们构建它们的方式是我们用几个参数调用MSBuild.exe.wix项目所依赖的参数.
所以我们假设我们进入命令提示符并写入
C:\>\windows\Microsoft.NET\Framework\v3.5\MSBuild.exe MyApp.Install\MyApp.Install.wixproj /p:Configuration=Release /p:SpecialPath=Obfuscated /t:Build
Run Code Online (Sandbox Code Playgroud)
想法是wix看到"SpecialPath"参数被分配为"混淆"; 并且在安装程序路径中,其源代码
在构建时..\myApp\bin\$(var.SpecialPath)\myApp.exe转换为..\myApp\bin\Obfuscated\myApp.exe.
如何创建这些自定义构建参数并将它们传递给我的.wxs文件.截至目前这个设置,$(var.SpecialPath)没有定义和构建CrashSplosions.
出于明显的法律原因,我不得不削减90%的project.wxs文件并重命名一些东西,但是就所有意图和目的而言,这就是我所拥有的.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="myApp" Language="1033" Version="$(var.Version)" Manufacturer="myApp" UpgradeCode="$(var.UpgradeCode)">
<Package Id="*" InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir" >
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="myApp">
<Component Id="myAppEXE" Guid="FD5EBC02-MY29-GUID-ACCA-61324C5F1B68">
<RegistryKey Root="HKLM" Key="Software\MyApp">
<RegistryValue Value="0" Type="string" KeyPath="yes"/>
</RegistryKey>
<File Id="MYAPPEXE" Name='myApp.exe' Source="..\myApp\bin\$(var.SpecialPath)\myApp.exe" />
</Component>
<Component Id="EngineDLL" Guid="*">
<File Id="ENGINEDLL" Name='Engine.dll' Source="..\myApp\bin\$(var.Configuration)\Engine.dll" />
</Component>
<Component Id="CommonDLL" …Run Code Online (Sandbox Code Playgroud) 我有一个TT插件,可以完成琐碎的独特ID:
sub get_unique_uid_tt {
my ( $classname, $o ) = @_;
my %h;
foreach my $item ( @{$o} ) {
unless ( exists $h{ $item->id } ) {
$h{ $item->id } = 1;
}
}
return keys %h;
}
Run Code Online (Sandbox Code Playgroud)
模板调用只是:
[% Namespace.get_unique_uid_tt( data.users ) %]
Run Code Online (Sandbox Code Playgroud)
"data"是一个RDB对象,用户是其关系之一.我已经验证".users"直接在Perl中返回一个列表,无论该关系是否有一个或多个元素.
但是,TT似乎返回单元素列表的元素,同时正确返回多个元素的列表.
我查了一下,发现你可以用".list"强制列表上下文:
[% Namespace.get_unique_uid_tt( data.users.list ) %]
Run Code Online (Sandbox Code Playgroud)
对于单元素列表,这不起作用,因为Data :: Dumper显示:
$VAR1 = [
{
'value' => 1,
'key' => '__xrdbopriv_in_db'
},
{
'value' => bless(
... snip ...
),
'key' => 'db'
},
{ …Run Code Online (Sandbox Code Playgroud) 为了简化类的调试时内省,我想在基类中为相关对象创建一个通用的toString方法.由于它不是性能关键代码,我想使用Reflection来打印字段名称/值对("x = 1,y = 2"等).
是否有捷径可寻?我尝试了几种可能的解决方案,并遇到了安全访问问题等问题.
要明确的是,基类中的toString()方法应该反复迭代从它继承的任何类中的公共val,以及混合的任何特征.
背景: 我们正在开发一个包含图表的Web应用程序.目前,可以左键单击图表点以缩放/深入查看数据的该部分.我们正在添加一些其他功能,允许用户将元数据添加到数据点.我知道用户将专门使用Mozilla,尽管我回避限制单个浏览器的任何事情.请不要js库.
问题: 我应该使用什么类型的"点击"将元数据添加到已经左键单击的元素(超链接)?
我头脑风暴的一些选择:
这些是否有任何约定?你觉得最直观的是什么?
以下是ArrayList在多线程环境中同步工作的代码片段吗?
class MyList {
private final ArrayList<String> internalList = new ArrayList<String>();
void add(String newValue) {
synchronized (internalList) {
internalList.add(newValue);
}
}
boolean find(String match) {
synchronized (internalList) {
for (String value : internalList) {
if (value.equals(match)) {
return true;
}
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我担心一个线程无法通过另一个线程看到更改.
我有一个看起来像:
User user = userDao.Get(1);
do
{
// processing
// get the next user
//
user = UserDao.GetNext(user.Id);
if(user == null)
continue; // will this work?????????????
}
while ( user != null)
Run Code Online (Sandbox Code Playgroud)
如果它确实有效,它会转到do语句的顶部,而user是null,所以事情会破坏?
也许我应该将循环重写为while语句?
刚才我承诺并推送了一些东西(是的,我在推动时的错误),我认为我应该'还原'或'撤消'.因此我被告知要git reset --soft HEAD^在我的结尾发布,并且我认为这会以某种方式创建一个"恢复"提交,一旦提交将使它好像改变从未发生过.我不介意改变的历史是否存在,这正是我想象的那样.
无论如何,完成后我再次提交,然后当我试图推动时,我得到了非快进错误.现在,我知道我搞砸了重置,我的树和起源树的线条现在"不匹配",但我想知道如何解决这个问题.现在我只想回到我发出重置之前的时间,这样我就可以通过手动取出它们然后提交来手动恢复更改,除非其他人可以推荐恢复推送提交的正确方法,并且我并不是说历史必须从日志或其他东西中消失.
我一直在用我的头撞墙两天,希望有人可以帮我一把.我所拥有的是使用WCF编写的RESTful Web服务; 实际上只有两个接受单个字符串参数并返回字符串的方法.参数和返回值都是直接的XML.
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet(UriTemplate = "/method1/{data}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
string Method1(string data);
[OperationContract]
[WebGet(UriTemplate = "/method2/{data}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
string Method2(string data);
}
Run Code Online (Sandbox Code Playgroud)
为了论证,我们可以说这两种方法的实现如下所示:
public string Method1(string data)
{
return string.Format("You entered: {0}", data);
}
Run Code Online (Sandbox Code Playgroud)
如果我转到http://myuri.com/service.svc/method1/foo,则会向浏览器写入以下内容:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">You
entered: foo</string>
Run Code Online (Sandbox Code Playgroud)
这很好用,但如果我将网址更改为:http://myuri.com/service.svc/method1/ <foo>我收到400(错误请求).所以我使用以下代码启用了一些跟踪器以查看发生了什么:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Traces.svclog" />
</listeners>
</source>
</sources>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用切换值'All'来捕获在执行此服务期间发生的每个事件.我使用URL格式跑回了几次,这种格式可以验证跟踪器是否正常工作.然后我转到包含XML标记foo的URL并按预期收到400错误,但是当我回到日志文件时,没有附加信息附加到它的末尾.这使我相信在调用WCF服务之前显示400错误.
最后,我将方法从'GET'方法切换到'POST'方法,使用WebRequest/WebResponse写了一些具有相同结果的代码.现在我已经阅读了一些帖子,谈论在客户端使用XmlSerializer将数据发送到服务但是这违背了这项服务的目的.当我使用.NET编写服务时,很可能PHP或经典ASP脚本将连接到此服务,显然,他们无法访问XmlSerializer.
所以我的百万美元问题是:是否可以向WCF中开发的RESTful Web服务发送"原始"XML请求,如果是,如何?
PS进入和退出服务的XML不是基于任何有形对象,它只是我创建的用于此服务的结构.进入的XML通过XPath进行解析,将值放入更大的XML字符串中,并传递给外部API.该API的结果将被处理,然后由我的RESTful服务返回. …
我现在正在考虑开发一个反汇编程序,但是我知道构建反汇编程序非常困难,我想知道将我的梦想变为现实的最佳/最简单的语言,同样,教程建议也很好; - )
java ×2
build ×1
c# ×1
concurrency ×1
disassembly ×1
do-while ×1
dynamic ×1
fizzbuzz ×1
git ×1
haskell ×1
hex ×1
loops ×1
parameters ×1
path ×1
perl ×1
pretty-print ×1
reflection ×1
rest ×1
revert ×1
scala ×1
tostring ×1
wcf ×1
wix ×1