我在webroot外面有一个目录,用于存储从单独的管理系统上传的图像.图像以以下格式存储:
filepath/writable/images/00/00/23/65/filename-236581.jpg
Run Code Online (Sandbox Code Playgroud)
(webroot是filepath/html)
...例如.这里,236是数据库中图像的ID,文件系统被分成编号目录,以阻止在一个目录中使用100多个inode.
我希望能够从前端Web服务器访问这些,如下所示:
http://(server)/filename-236581.jpg
Run Code Online (Sandbox Code Playgroud)
其中filename是seo优化的字符串,与实际文件的名称相同.
我可以通过mod-rewrite来重写URL,使其包含额外编号的目录,并且我可以获得别名将请求重定向到writable/images目录,但我不能同时执行这两个操作.如果我同时放入alias和mod_rewrite指令,它会忽略别名,错误日志会抱怨它无法找到filepath/html/uploaded-images.
这是我到目前为止:
RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]
Run Code Online (Sandbox Code Playgroud)
...等等,一直到:
RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC]
alias /uploaded-images "filepath/writable/images"
Run Code Online (Sandbox Code Playgroud)
删除[L]没有区别.
当我引用两个具有相同命名空间和类型名称的外部程序集时,我遇到了不太可能发生的情况.当我尝试使用该类型时,编译器抛出一个错误,它无法解析我想要使用的那个.
我看到C#提供了一种为引用使用别名的机制.您甚至可以通过PropertyVisual Studio 2008中的引用窗口指定这些别名.如何在代码中使用此别名?据我所知,我应该使用::运算符,但它失败并出现以下错误:
CS0432 - Alias not found
通常的.操作员也会失败.
在输出窗口中,我看到编译器在其命令行中正确传递了别名.
关于我接下来可能尝试的任何指示都非常感谢.
所以在C++中,我习惯于:
typedef int PeerId;
Run Code Online (Sandbox Code Playgroud)
这允许我创建一个更自我文档的类型,但另外还允许我在不改变所有代码的情况下随时使PeerId表示不同的类型.如果我愿意,我甚至可以将PeerId变成一个班级.这种可扩展性是我想要在C#中使用的,但是我无法弄清楚如何在C#中为'int'创建别名.
我想我可以使用using语句,但它只在我认为的当前文件中有作用域,因此不起作用(别名需要在多个文件之间可访问而不重新定义).我也无法从内置类型派生一个类(但通常这是我对别名ref或类型,如List或Dictionary)所做的.我不知道我能做什么.有任何想法吗?
在Perl中,如果我想做的foo()话bar(),我可以这样做:
sub foo {return bar(@_);}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?更接近Ruby的"别名"运算符?
我发现自己经常想写这样的Python列表理解:
nearbyPoints = [(n, delta(n,x)) for n in allPoints if delta(n,x)<=radius]
Run Code Online (Sandbox Code Playgroud)
这有希望给出一些关于我为什么要这样做的背景,但是也有一些情况需要为每个元素计算/比较多个值:
newlist = [(x,f(x),g(f(x))) for x in bigList if f(x)<p and g(f(x))<q]
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题:
newList = [(x,a=f(x),b=g(a)) for x in bigList if a<p and b<q]
Run Code Online (Sandbox Code Playgroud)
但这不起作用.是否有充分的理由不支持这种语法?可以通过它有点像做这个?或者我只需要使用多个listcomp或for循环?
在ZSH中很容易做一个单词别名.
alias ll='ls -lah'
Run Code Online (Sandbox Code Playgroud)
有没有办法用Zsh做两个单词别名,这样两个单词都被解析为同一个别名的一部分?我最喜欢用它来打字错误.
alias 'gits t'='git st'
Run Code Online (Sandbox Code Playgroud) 请考虑以下以下代码段:
template <class T>
using identity = T;
template <class T>
void foo(identity<T>&&) {}
int main()
{
int i{};
foo(i);
}
Run Code Online (Sandbox Code Playgroud)
i是一个左值,因此如果foo声明一个转发引用参数,它应该编译.但是,如果identity<T>&&转为int&&,则应该引发错误.
该代码在GCC 6.0.0(演示)中编译.
代码无法在Clang 3.7.0(演示)中编译,并显示错误消息:
error: no known conversion from 'int'
to 'identity<int> &&' (aka 'int &&') for 1st argument
Run Code Online (Sandbox Code Playgroud)
哪一个是对的?
我有几个服务器上有SQL Server 2008 R2实例,别名不适用于任何服务器.
客户端使用TCP/IP连接到这些服务器没有任何问题,telnet工作在IP /端口我用于我的别名,防火墙异常被创建,基本上一切正常,除非我创建别名,我无法通过它连接到我的服务器使用TCP/IP或命名管道(本地或其他服务器之一).
我已经安装了最新的累积更新,它也更新了本机客户端(我认为这是问题的根源),我仍然遇到了问题.更奇怪的是,如果我在服务器上使用sql server 2005(本机客户端9)创建别名,我可以连接到我的2008 r2实例.有什么建议?
PowerShell包括一个内置的别名diff的Compare-Objectcmdlet的.这对我来说真的很烦人,因为我习惯使用Unix diff命令.
有没有办法删除内置diff别名,或以其他方式覆盖它?
我试过了:
del alias:diff - 给出错误"Alias未被删除,因为别名diff是常量或只读"set-alias diff diff.exe - 给出类似于上面的错误function diff { diff.exe $args } - 别名优先如何访问"真正的"差异(无需记住其他名称)?
如果它很重要,这是Powershell 3.我还没有在版本4中尝试过,虽然版本4也有wget别名,但不像diff我可以删除那个...
alias ×10
c# ×3
.net ×1
apache ×1
c++ ×1
c++14 ×1
function ×1
mod-rewrite ×1
namespaces ×1
perl ×1
powershell ×1
python ×1
sql ×1
sql-server ×1
t-sql ×1
templates ×1
zsh ×1