我正在寻找一本编译器设计书.我在大学里学习; 但讲座对我来说从未意味着什么.而且,在我的大学里,他们并没有做太多实际的工作,我相信即使我真诚地完成有限自动机和编译器设计的课程,我也不知道如何实现编译器.所以,我正在寻找有关实现编译器的书籍.我发现"现代编译器实现"很好.它有三种语言选择,我选择了C书,因为C是一种小语言,我会做更多的事情,在做的过程中学习更多.但是,我想学习为Lisp或python设计编译器的课程[也可能使用相同的语言]; 但我找不到太多可用的资料.Lisp是一种古老的语言,应该有一些关于为它设计编译器的文档.
谢谢.
我有一个pdf文件.我想将其所有页面向右旋转90度.如何使用Prawn gem实现这一目标?当我尝试使用现有的pdf作为模板并尝试旋转它时,它不起作用.我徒劳地尝试了下面的事情.
require 'prawn/core'
require 'prawn/layout'
require 'prawn/measurement_extensions'
pdf = Prawn::Document.new(:page_size => [4.in, 6.in], :template => 'orig.pdf', :layout => 'potrait') do |p|
p.rotate(90)
end
pdf.render_file("./test1.pdf")
pdf = Prawn::Document.new(:page_size => [4.in, 6.in], :template => 'orig.pdf', :layout => 'potrait', :rotate => 90)
pdf.render_file("./test2.pdf")
Run Code Online (Sandbox Code Playgroud) 我正在设计一个RESTful Web服务.它将包括一些GET和POST请求.我对Web服务是否可以从SPDY协议中受益感到困惑.我打算使用Ruby on Rails来实现.有没有支持SPDY的宝石?
我设计了一个电子邮件程序,SMTP网关具有代码中的身份验证ID和密码.现在,我想将它们提交给heroku而不是github.该项目有多个合作者.因此,我可以创建一个新分支并将密钥保存在那里并将其部署到heroku.这个分支只保留在本地,而不是github.但是,如果我遵循此方法,则所有协作者都必须为heroku维护本地分支,并始终按照以下过程进行部署:1.在master上提交更改2. merge master和heroku branches 3. deploy heroku branch
这似乎容易出错并且具有重复性.不优雅.
我遇到的另一种方法是使用身份验证值进行提交,推送到heroku然后恢复提交.但是,我认为如果我这样做,身份验证值仍会使它成为github.即使github没有身份验证值,每次协作者推送任何新功能时都必须执行此操作.
请建议.
我有以下父 POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_group</groupId>
<artifactId>my_artifact</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<modules>
<module>../common-module</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<https.website>http://intosimple.blogspot.com</https.website>
<snapshot.version>0.0.1</snapshot.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
对应的子POM如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>My_group1</groupId>
<artifactId>my_artifact_1</artifactId>
<version>0.0.1-</version>
<relativePath>../base/pom.xml</relativePath>
</parent>
<artifactId>some_module</artifactId>
<properties>
<jdk.version>1.8</jdk.version>
<jacoco.version>0.7.5.201505241946</jacoco.version>
</properties>
<dependencies>
<!-- some packages here-->
</dependencies>
<build>
<finalName>my_artifact_1</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals> …Run Code Online (Sandbox Code Playgroud) 我安装了jenv。的输出which java最初是/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java. 我发出以下命令:
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
eval "$(jenv init -)"
Run Code Online (Sandbox Code Playgroud)
现在,输出which java是
/Users/my_username/.jenv/shims/java
Run Code Online (Sandbox Code Playgroud)
java -version前后的输出是一样的。但是,mvn clean install抛出错误:
Error: JAVA_HOME is not defined correctly.
We cannot execute /Users/my_username/.jenv/versions/system/bin/java
Run Code Online (Sandbox Code Playgroud)
为什么 Maven 没有选择正确的 java?