有时您需要向PHP说明实际上变量名称是什么.我发现一位同事和我的做法略有不同.假设您有一个变量,$foo
并希望输出_constant_string附加我一直在使用
return "<input type='hidden' name='${foo}_constant_string' value='true' />";
Run Code Online (Sandbox Code Playgroud)
而我的同事正在使用
return "<input type='hidden' name='{$foo}_constant_string' value='true' />";
Run Code Online (Sandbox Code Playgroud)
(稍微做作的例子来简化它).
我的快速测试没有发现明显的差异,但我很好奇:有区别吗?是否有理由偏爱另一个?
编辑:我上面的例子使用了字符串,但我的问题更为笼统 - 我应该明确地这么说.我知道你可以使用花括号进行转义,但是如果在两种使用方式之间存在(在任何情况下)差异,我都没有找到具体的观点.我得到了答案:没有字符串(这是"重复"帖子的内容),但是用于数组和对象(感谢@dragoste).
我有一个ASP MVC 4项目.它起始于MVC 1,因此它使用旧式ASPX/ASCX视图.我希望在构建时编译视图,主要是为了获得编译时错误检查(而且,重要的是,要在Visual Studio中直接显示错误).我正在使用IIS Express作为调试服务器在Visual Studio Pro 2015中进行开发.
按照双方的MSDN,Haacked这里问题,比如这个我已经把我的.vbproj如下:
<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)
并且在我的.vbproj中创建了一个任务
<Target Name="BuildViews" Condition="'$(MvcBuildViews)'=='true'" AfterTargets="Build">
<Message Importance="normal" Text="Precompiling views" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但是,在尝试构建时,这会给我一个错误:
'/ temp'不是有效的IIS应用程序.
作为文件,它只引用ASPNETCOMPILER
我已经尝试了各种替代品作为VirtualPath - 我将项目配置为在dev中作为子目录/本地运行所以我尝试了,并且.vs文件夹中的配置中的站点名称没有任何作用.
我应该更改VirtualPath(如果是这样的话)或者是否有其他配置缺少临时工作?
编辑
此外,我得到运行命令行MSBuild相同的错误.对于我的实际生产系统,我有一个脚本,它使用命令行MSBuild进行构建,然后将构建的包移动到产品服务器并进行部署.因此,在构建时不会有IIS express(或IIS运行).您是否需要连接Web服务器才能编译视图?
编辑2
我对这里对virtulPath的需求以及与Web服务器的明显连接感到困惑.一些建议的解决方案涉及配置IIS.IIS Express(我用于调试)甚至在成功构建之后都不一定会运行,因为我理解它?无论如何,我的应用程序非常愉快地运行在虚拟目录中(在调试模式下为/ local),但使用它作为值不起作用.如果重要,这是我项目中.vs文件夹中applicationhost.config的相关部分(我尝试将相同的路径放入Documents/IIS Express中的applciationhost.config):
<site name="CarWeb-Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\adam.conway\Documents\My Web Sites\CarWeb-Site" />
</application>
<application path="/local" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" …
Run Code Online (Sandbox Code Playgroud) 我们有一项任务是将二进制文件中的某些字符串更改为小写(来自mixed/upper/whatever).相关的字符串是对其他文件的引用(它与升级相关,我们也将Windows作为服务器环境从Windows迁移到Linux,因此案例突然变得很重要).我们编写了一个使用perl循环执行此操作的脚本.我们有一个包含大约300个文件的目录(目录的总大小约为150M)所以它是一些数据但不是很大的数量.
以下perl代码大约需要6分钟才能完成工作:
for file_ref in `ls -1F $forms6_convert_dir/ | grep -v "/" | sed 's/\(.*\)\..*/\1/'`
do
(( updated++ ))
write_line "Converting case of string: $file_ref "
perl -i -pe "s{(?i)$file_ref}{$file_ref}g" $forms6_convert_dir/*
done
Run Code Online (Sandbox Code Playgroud)
而以下perl代码需要3个小时!
for file_ref in `ls -1F $forms6_convert_dir/ | grep -v "/" | sed 's/\(.*\)\..*/\1/'`
do
(( updated++ ))
write_line "Converting case of string: $file_ref "
perl -i -pe 's{(?i)$file_ref}{$file_ref}g' $forms6_convert_dir/*
done
Run Code Online (Sandbox Code Playgroud)
有谁能解释为什么?这是$ file_ref是否作为字符串$ file_ref而不是用单引号版本中的值替换?在这种情况下,在这个版本中它取代了什么?我们想要的是用自己替换任何文件名的所有出现但是小写.如果我们在文件之前和之后运行字符串并搜索文件名,那么两者似乎都做了相同的更改.但是,如果我们对两个循环(diff firstloop/file1 secondloop/file1)生成的文件运行diff,那么它会报告它们不同.
这是在linux上的bash脚本中运行的.
我为 Windows 和 linux 开发。我的 Linux 开发环境是在我的 Windows 主机上运行的虚拟机。我共享了一些目录(实际上是在起诉 samba,而不是内置的虚拟机共享文件夹,所以该目录实际上是在 linux 来宾上并共享给主机)
我们正在从 svn 迁移到 git。我想在我的 Windows 机器上运行 Source Tree(Linux 是无头的)来进行版本控制。但我希望所有文件都有 linux 行尾(LF)。
我尝试按照git repo 和工作副本中的Force LF eol 中的说明进行操作,但它们对我不起作用。
我已将配置设置如下:
[adamc@adamc-centos scripts]$ git config core.autocrlf
input
[adamc@adamc-centos scripts]$ git config core.eol
lf
Run Code Online (Sandbox Code Playgroud)
我的 .gitattributes 中有以下内容(甚至强制 .sh 成为文本文件并再次指定 eol)
* text=auto
*.sh text eol=lf
Run Code Online (Sandbox Code Playgroud)
我已经运行了那里指定的 checkout-index 命令,但我仍然有带有 Windows 行结尾的 .sh 文件!
[adamc@adamc-centos scripts]$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, …
Run Code Online (Sandbox Code Playgroud) 有谁知道键盘快捷方式从开始跳For
/ For Each
(或If
,While
等等)块的它在Visual Studio中结束时,如果你使用vb.net?我发现以下我认为可以工作但不会:在Visual Studio中找到匹配的Brace?
在评论之后,我检查了工具/选项/环境/键盘的Edit.GotoBrace
命令,该命令映射到瑞典语中的Ctrl+ å.
Vb.net本身不使用大括号,但在以下示例中:
For Each Foo in Bar
Do lots of stuff
Next
Run Code Online (Sandbox Code Playgroud)
我本以为同一个命令应该让我从For Each
"下一个" 跳到我,但它什么也没做.是否有另一个命令(或该命令应该工作但是本地有什么问题?)
vb.net for-loop keyboard-shortcuts braces visual-studio-2008
这是Windows更新的后续原因导致MVC3和MVC4停止工作
我还遇到了我的开发机器上的Windows更新导致我的MVC 4项目停止工作的问题.我将程序集引用更改为目标版本4.0.0.1,它开始工作.为了我.
我的问题是该应用程序然后部署在许多Web服务器上.实际上,我们有一个构建服务器,其中构建了客户版本,然后是一些Web服务器.
第一个问题:当我们在生产服务器上运行Windows更新时,旧版本的应用程序将停止工作吗?我猜这个答案是肯定的.我们还没有在构建或生产机器上运行Windows更新.
更改引用意味着它不再可以在构建计算机上构建.我可以通过将Specific Version标志设置为false并将Local Local设置为true来解决此问题.然后它建立在我的开发环境和构建服务器上.
问题:如果我的特定版本为假,检查有多松散? 它允许4.0.0.x吗?4.0.xx?4.xxx?还是xxxx?
但是,它甚至在thsi配置中构建它然后无法在测试Web服务器上运行(无法找到程序集).这里的问题是我的web.config中有以下内容(根据我从MVC 2升级到MVC 4时的微软说明):
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity culture="neutral" name="System.Web.Mvc" publicKeyToken="31BF3856AD364E35"/>
<bindingRedirect newVersion="4.0.0.1" oldVersion="0.0.0.0-4.0.0.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect newVersion="2.0.0.0" oldVersion="1.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect newVersion="4.0.0.0" oldVersion="1.0.0.0-3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect newVersion="2.0.0.0" oldVersion="1.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
Run Code Online (Sandbox Code Playgroud)
问题是这条线
<bindingRedirect newVersion="4.0.0.1" oldVersion="0.0.0.0-4.0.0.1"/>
Run Code Online (Sandbox Code Playgroud)
用于System.Web.Mvc程序集.(当然,它4.0.0.0
不是说4.0.0.1
那一行.)如果我改回4.0.0.0
测试服务器那么它就可以了.
我的问题是双重的.部分原因是我希望能够在本地和我们的构建/生产服务器上构建和运行.但是,我们遇到一些情况,我们在同一台服务器上托管了许多运行不同版本应用程序的客户.我们不能强迫所有客户立即升级到最新版本只是因为这个Windows更新修复 - 除了Web应用程序只是更大的应用程序套件的一部分,所以我们必须强制他们升级这个批次!
我想一个选项是检查每个仍在使用的旧版本,更新MVC版本号并创建一个新版本.然后,当我们更新Web服务器时,我们必须将该服务器上的所有客户更新为其当前版本的新(4.0.0.1兼容)版本.我真的希望尽可能避免更新,提交和重建那么多版本.
另一个选择是不在Web服务器上运行Windows更新,并尝试在构建计算机上安装4.0.0.0和4.0.0.1 dll.然后我们可以构建新旧版本.由于任何新版本(使用4.0.0.1)都在MVC程序集上将CopyLocal设置为true(旧版本没有),因此它们应该能够部署到Web服务器,而不会更新Web服务器本身.
问题:
我正在使用 swagger codegen maven 插件从 swagger 规范生成服务器存根。如果我运行,mvn compile
那么它会正确生成并编译项目。但是,有时我只想运行生成。
具体来说,我想避免编译整个项目并运行另一个在验证阶段运行的插件(checkstyles)。理想情况下,我想从 swagger 规范生成生成的类并编译这些类,而不是整个项目。
这里的用例是,在开发时,我可能需要更新规范并在整个项目无效(或不会,新规范)时重新生成。我读过你可以使用“前缀:目标”。我试过以下,但没有工作:
mvn swagger-codegen-maven-plugin:generate
mvn swagger-codegen:generate
mvn swagger:generate
mvn codegen:generate
Run Code Online (Sandbox Code Playgroud)
它给(例如)
在当前项目和存储库中可用的插件组 [org.apache.maven.plugins, org.codehaus.mojo] 中找不到前缀“codegen”的插件
我还读到您可以使用“groupid:artificatid:version_goal”,所以我尝试了:
mvn io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate
Run Code Online (Sandbox Code Playgroud)
这似乎更进一步,但给出了错误
无法执行目标 io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate (default-cli) on project com.carus.api.base:目标 io 的参数“inputSpec”、“language” .swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate 丢失或无效
我的 pom 结构有点复杂。有几个 API。每个人在某些方面都是自己的项目。它们有一个共同的父 pom 和执行目标,项目 pom 只设置某些变量。用作 inputSpec 的变量在项目 pom 中定义,但在基本 pom 中定义了语言。(这里提到的 .base 项目实际上是基础 pom 所在的位置,并且是一个抽象包 ( <packaging>pom</packaging>
)。如果我指定一个特定的项目,我会得到同样的错误,但指的是该项目。
问题:
我最接近的是 run mvn generate-sources -Dcheckstyle.skip=true
。这会生成,但我认为它不会编译生成的类。所以我必须在 Eclipse 中清理项目以触发它重新编译。
我有一个vb.net web API中的类,我有时需要序列化.所以,我把班级标记为<Serializable>
.精细.但是,它在许多层面上都有许多子类.其中一些被遗漏(或gwet错过了新的添加).如果元素为null则没问题,但如果不是则序列化失败:
[SerializationException]在Assembly'Foo,Version = 1.0.0.4866,Culture = neutral,PublicKeyToken = null'中键入'Foo.Bar'未标记为可序列化.
由于序列化是在后台使用的,为了保存状态以便以后恢复,它并不总是立即被注意到.
序列化正在使用BinaryFormatter
in vb.net
有没有办法标记父类,以便所有它的子(以及它们的子项等)也必须是可序列化的?我宁愿为此获得编译时错误,而不是运行时错误.
我从一些初步的回答中意识到我的问题不够明确.我不应该使用父母和孩子这两个词,因为我并不专注于继承作为班级成员的班级
<Serializable()>
Class MyObj
Public Property foo as new Foo
Public Property bar as new Bar
end Class
Run Code Online (Sandbox Code Playgroud)
我曾预料到这将需要Foo
并且Bar
可序列化,否则MyObj
不是
我有一个 WordPress 插件,我们正在将托管从 PHP 7 升级到 8。我们有一个函数,可以从会话中的序列化日期字符串创建一个 DateTime 对象,并使用 DateTime 函数将其与现在进行比较diff
。在 PHP 7 中这是有效的(例如给出 1 秒)。在 PHP 8 中,它给我们负一年加上 11 个月、29 天、23 小时、零(!)分钟和 1 秒!
我正在使用 PHP CLI 运行以下脚本。
<?php
$d = new DateTime();
echo '$d->format("r"): ' . $d->format('r') . "\n";
sleep(1);
$n = new DateTime( $d->format('r') );
$diff_d = $d->diff( new DateTime() );
$diff_n = $n->diff( new DateTime() );
echo "\n";
echo 'print_r($diff_d)' . "\n";
print_r($diff_d);
echo "\n";
echo 'print_r($diff_n)' . "\n";
print_r($diff_n);
echo "\n";
echo 'd' …
Run Code Online (Sandbox Code Playgroud) 介绍
我们在 Spring Boot 中实现了一个 REST API。目前它在序列化时返回所有字段。所以它返回类似
{
"foo": "A",
"bar": null,
"baz": "C",
}
Run Code Online (Sandbox Code Playgroud)
我们想要不返回空字段的选项,所以它只会返回
{
"foo": "A",
"baz": "C",
}
Run Code Online (Sandbox Code Playgroud)
对于那种情况 - 但仍然(如果bar
有价值)
{
"foo": "A",
"bar": "B",
"baz": "C",
}
Run Code Online (Sandbox Code Playgroud)
我知道你可以控制它不通过应用程序属性返回空值,但这是一个现有的 AI,如果字段丢失,一些针对它实现的应用程序可能会在反序列化时失败。因此,我们希望让调用客户端控制它。我们的想法是有一个您可以发送的标题:X-OurCompany-IncludeNulls; false
。这将允许客户进行选择,我们最初会默认使用,true
但可能会随着时间的推移以管理方式更改默认设置。
我能找到的最接近的是这这是转向通过查询参数漂亮的印刷。当我尝试做类似的事情时,它适用于漂亮的打印。但是,对于包含,它适用于我启动 API 后的第一个请求,但之后每个其他请求都从第一个请求中获取值。我可以看到它正在通过断点设置它,并且我还针对相同的参数添加了漂亮打印,仅用于诊断目的。
我尝试过的细节
我们的 API 基于使用 Swagger Codegen 服务器存根生成的 API。我们使用委托模式,所以它生成一个控制器,它只有一个自动连接的委托和一个getDelegate
@Controller
public class BookingsApiController implements BookingsApi {
private final BookingsApiDelegate delegate;
@org.springframework.beans.factory.annotation.Autowired
public BookingsApiController(BookingsApiDelegate delegate) {
this.delegate = delegate;
}
@Override
public BookingsApiDelegate getDelegate() …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有aspmvc项目的itextsharp来创建我的一些页面的PDF版本.我有一个非常基本的解析器,它采用简单的html(加上一些单独提供的样式信息)并创建一个pdf.当我的解析器装入一个表时,它会循环遍历行然后是单元格,为每个单元格创建一个PdfPCell.然后它循环遍历单元的子元素,将它们添加到PdfPCell.这是非常基本的,但到目前为止它对我有用.
问题是我现在有一个表,其中一列包含许多图标,表示该行的不同状态.当这些图像被添加时,在pdf中结束一个在另一个之上,而不是彼此相邻.
我用它创建图像
Dim I As iTextSharp.text.Image = Image.GetInstance(HttpContext.Current.Server.MapPath(El.Attributes("src").InnerText))
Run Code Online (Sandbox Code Playgroud)
我试过了
I.Alignment = Image.TEXTWRAP Or Image.ALIGN_LEFT Or Image.ALIGN_MIDDLE
Run Code Online (Sandbox Code Playgroud)
并添加一个文本块后面包含一个空格,但它没有帮助.我见过的唯一建议是使用I.SetAbsolutePosition()
.我宁愿避免绝对的位置,但我准备尝试 - 除了我无法弄清楚如何找到当前使用的X位置?
任何帮助非常感谢.
亚当
我一直在使用jquery 蒙面输入插件将日期掩码应用于文本输入.这很好用,但我希望显示的掩码也显示格式.也就是说,而不是面具
__/__/____
Run Code Online (Sandbox Code Playgroud)
我希望能够通过使用掩码来指定格式,例如,
dd/mm/yyyy
Run Code Online (Sandbox Code Playgroud)
或(与当前面具看起来相同,但根本不同)
mm/dd/yyyy
Run Code Online (Sandbox Code Playgroud)
我无法看到如何使用该插件执行此操作(就我所见,它只接受一个字符作为掩码字符).是否可以使用当前插件?有谁知道一个替代插件(理想情况下使用jQuery)可以做到这一点?我找不到任何东西.
我想以特定用户的身份执行某些任务列表(在剧本中)。用户实际上来自变量,但是在最小的示例中,我很难将其编码为“ dev”。(此用户确实存在)。我无法弄清楚以下原因为何不起作用
我在role / foo / tasks中的main.yml是
- include_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev
Run Code Online (Sandbox Code Playgroud)
虽然content.yml仅获取当前用户:
- command: whoami
register: whoami
- debug:
var: whoami
Run Code Online (Sandbox Code Playgroud)
我的剧本是
- hosts: dev
become: true
remote_user: root
roles:
- foo
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
PLAY [dev] ********************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [adco-test-webdev]
TASK [foo : include_tasks] ****************************************************************************************************************************************************************************************************************************************************
included: /smbshare/ansible/roles/foo/tasks/content.yml for adco-test-webdev
TASK [foo : command] **********************************************************************************************************************************************************************************************************************************************************
changed: [adco-test-webdev]
TASK [foo : debug] ************************************************************************************************************************************************************************************************************************************************************
ok: [adco-test-webdev] => {
"whoami": {
"changed": true,
"cmd": [
"whoami"
], …
Run Code Online (Sandbox Code Playgroud) vb.net ×4
asp.net-mvc ×3
php ×2
.net ×1
ansible ×1
bash ×1
braces ×1
date-format ×1
datetime ×1
for-loop ×1
git ×1
iis-express ×1
itext ×1
jackson ×1
java ×1
jquery ×1
linux ×1
maskedinput ×1
maven ×1
newline ×1
perl ×1
php-8 ×1
php-8.1 ×1
spring ×1
spring-boot ×1