我目前正在为一个使用 的 C++ 项目编写包装器std::complex<double>,在 cython 中作为libcpp.complex.complex[double].
但是,这与 Python 复杂之间没有隐式转换,我正在尝试找到进行此转换的最佳方法。
显而易见的是使用
cdef libcpp.complex.complex[double] x = ...
X = complex(x.real(),x.imag()
Run Code Online (Sandbox Code Playgroud)
和
cdef complex Y = ...
cdef libcpp.complex.complex[double] y = libcpp.complex.complex[double](Y.real, Y.imag)
Run Code Online (Sandbox Code Playgroud)
和
cdef libcpp.complex.complex[double] z
cdef complex Z = ...
z.real(Z.real)
z.imag(Z.imag)
Run Code Online (Sandbox Code Playgroud)
但是有没有更好的方法,最好是让 cython 自动进行转换。
其中一个发生在某些cpdef函数中,我想避免在来自 cython 的调用中使用 Python complex 以提高速度。
然而,据我所知,cython 不能隐式地进行这种转换,因此我无法避免使用 Python 复合体来处理可以从 Python 或 C++ 调用的代码。
我有一个 python 项目,我正在使用 git 进行版本控制,我想为基于PEP440 的每个提交设置一个唯一的版本号。
即我会N(.N)*[{a|b|rc}N][.postN][.devN]为 master 分支使用以下版本编号,对于每个没有增加更高级别版本号的devN提交将在提交时由 git 自动增加,版本的其余部分希望由一个特殊的 git 控制命令:git increment-version {level}
其中 level 将是major, minor, patch, patch-{level}(patch与patch-0), alpha, beta, release, 之一final,post将映射到版本字符串作为 {major}[.{minor}[(.{patch-N})*]], alpha => aN, beta => bN, release => rcN, post => postN,beta替换alpha和release替换beta,final删除预发布组件, 如果使用较早的组件当前这应该产生一个误差,当一个较高级别版本递增所有较低级别休息到零,并且不包含任何补丁级别设置为零字符串中,递增major,minor …
我有一些JavaScript,它是由PHP代码使用模板生成的.
模板的结果是一个包含JavaScript的文件,但是语句分散在其中.
我想通过删除空格和注释来减小此文件的大小.
但是我在网上找到的只是普通JavaScript的工具,它们非常复杂.
我已经准备好编写一个脚本来减少HTML和基于CSS的内容使用相同的系统,我正在寻找减少JavaScript文件大小的信息,这样我就可以编写一个可以处理文件中PHP代码的简化脚本.
所以我想要的是:
减少JavaScript代码大小的教程.一个简单易懂的脚本,用于减少JavaScript大小,我可以分析.或者一个可以与PHP内联的JavaScript代码一起使用的工具(必须是公共域,或允许在商业作品中使用的开源)
编辑:
$script = preg_replace('%/\*.*?\*/%','',$script);
$compress = preg_split('%("|\'|/)(?:\\\\|\\\1|[^\1])*?\1|<\?php\s+(?:("|\')(?:\\\\|\\\2|[^\2])*?\2|[^"\']*?)*?\?>%',$script);
preg_match_all('%(("|\'|/)(?:\\\\|\\\2|[^\2])*?\2|<\?php\s+(?:("|\')(?:\\\\|\\\3|[^\3])*?\3|[^"\']*?)*?\?>)%',$script,$no_compress);
foreach ($compress as &$block) { $block = preg_replace('%\s+%',' ',$block); }
Run Code Online (Sandbox Code Playgroud)
我想我已经解决了,上面应该删除C风格的注释,然后将剩下的代码分成PHP块,Javascript Strings'或",和Regex Patterns /,还提取代码块,字符串和正则表达式模式,模式或字符串中的代码应该被忽略,因为它是Regex中的第二个选项.最后一行应该将压缩块中的空白区域减少到一个空格
那么它应该只是块的重组问题,即
$cscript .= $compress[$i].$no_compress[$i]
Run Code Online (Sandbox Code Playgroud)
要重建脚本.
我错过了什么?
python ×2
c++ ×1
cython ×1
git ×1
inline-code ×1
javascript ×1
minify ×1
php ×1
std ×1
versioning ×1