特性是PHP 5.4的最大增加之一.我知道语法并理解特征背后的想法,比如日志,安全性,缓存等常见内容的水平代码重用.
但是,我仍然不知道如何在我的项目中使用特征.
是否有任何已经使用特征的开源项目?关于如何使用特征构建体系结构的任何好文章/阅读材料?
我仍在努力为我的网络项目中使用的图像,js和css文件等资产找到一个好的命名约定.
所以,我目前的情况是:
CSS: style-{name}.css
例子:style-main.css,style-no_flash.css,style-print.css等.
JS:
script-{name}.js
例子:script-main.js,script-nav.js等
图像: {imageType}-{name}.{imageExtension}
{imageType}是这些中的任何一个
<img />元素插入的标题图像)例如,名称是:icon-help.gif,img-logo.gif,sprite-main_headlines.jpg,bg-gradient.gif等.
那么,您的想法是什么?您的命名惯例是什么?
我正在寻找的是像decbinC#中的PHP 函数.该函数将小数转换为字符串表示形式.
例如,使用decbin(21)它时返回10101结果.
我发现这个功能基本上可以实现我想要的功能,但也许有更好/更快的方式?
我只找到了一种相反的方法:从int列表或数组创建一个逗号分隔的字符串,但不是如何将输入转换string str = "1,2,3,4,5";为数组或int列表.
这是我的实现(灵感来自Eric Lippert的这篇文章):
public static IEnumerable<int> StringToIntList(string str)
{
if (String.IsNullOrEmpty(str))
{
yield break;
}
var chunks = str.Split(',').AsEnumerable();
using (var rator = chunks.GetEnumerator())
{
while (rator.MoveNext())
{
int i = 0;
if (Int32.TryParse(rator.Current, out i))
{
yield return i;
}
else
{
continue;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你认为这是一个好方法还是更简单,甚至可能是内置方式?
编辑:对不起任何混乱,但该方法需要处理等无效的输入"1,2,,,3"或"###, 5,"通过跳过它等等.
我刚开始考虑在我的一个应用程序中使用NHibernate二级缓存.我可能会使用NHibernate.Caches.SysCache.SysCacheProvider依赖于ASP.net缓存的.
启用缓存不是问题,但我想知道如何管理缓存,例如以编程方式从缓存中删除某些实体等.
我的应用程序是某种图像数据库.用户通过后端上传图像,并可以通过访问在前端查看图像/ImageDb/Show?userId=someUserId
数据不会经常变化.如果它发生变化,用户在后端的名为"清除我的缓存"的按钮无关紧要,该按钮会从缓存中删除此用户的缓存对象.
我在网上找到了一个可以从nhibernates二级缓存中删除所有缓存对象的解决方案.但这对我来说有点太暴力了......我不想为几十个用户清除整个缓存,因为一个用户试图清除缓存中的自己的数据.
所以我基本上想做的是:有选择地从C#中的nhibernates二级缓存中删除缓存的db对象.
这可能吗?我想这也取决于缓存提供商.如果ASP.net缓存提供程序无法做到这一点,我可以使用其他内置/开源建议.
我正在阅读"C语言编程"一书,并在第10章中找到了这样一个例子:
#include <stdio.h>
void test (int *int_pointer)
{
*int_pointer = 100;
}
int main (void)
{
void test (int *int_pointer);
int i = 50, *p = &i;
printf ("Before the call to test i = %i\n", i);
test (p);
printf ("After the call to test i = %i\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我理解这个例子,但我不明白其中void test (int *int_pointer);的内容main.为什么我要test再次定义签名?这是惯用的C吗?
可能是一个简单的问题,但我在这里不知所措......
在github中,可以为每个存储库添加部署密钥,该部署密钥仅提供对该单个存储库的访问.
但是对于一个客户端,我在同一台服务器上使用git管理了两个项目(项目A和项目B).如果我使用项目A的公钥,github告诉我,我不能将它用作项目B的部署密钥,反之亦然.
如何创建另一个公钥并设置git以使用项目A的一个键和项目B的另一个键?
我正在尝试db4o对象数据库,到目前为止我非常喜欢我所看到的,但我也读过这篇关于stackoverflow db4o体验的帖子?表明并非一切看起来如此简单都很容易.
现在,我对如何在现实世界的应用程序中使用db4o有一些疑问.因此,如果您有使用db4o工作的经验(特别是在Web应用程序上下文中),我很乐意听到它们.
这是我的问题:
在使用db4o存储对象时,如何管理对象标识?**
来自RDBMS背景,您通常每个表都有一个主键/标识列,我现在无法想象如何在db4o中管理对象标识.
例如,如果我正在使用NHibernate/mysql并且需要通过id查找User对象,我会执行session.Load(primaryKey)并且它将被其PK检索.在表定义中将PK定义为自动增量也是很常见的.
由于db4o中没有这样的选项,我的想法是使用Guid结构来识别对象数据库中的一些对象.
有哪些工具可以在db中查看存储的对象?
在db4o世界中是否存在类似SQL Server Management Studio(可能不太复杂)的东西?我想查看db文件中已存储的数据/对象.
重命名域对象时,你搞砸了吗?
据我所知,当您重命名一个类时,无法再检索数据库中以前存储的任何实例.有办法解决这个问题吗?如何处理已包含许多对象的实时数据库的更新?
我可以将属性排除在保存到数据库之外吗?
例如,如果一个域对象持有对(无状态)服务对象的引用,那么如果域对象被持久化,服务对象也将被持久化,对吧?
在数据库中保存服务实例似乎有点奇怪,至少对我而言.
你可以排除服务实例被保存吗?如果再次检索域对象,我如何确保该服务也再次注入实例?
我正在处理的网站包含一个通过AJAX动态加载的项目列表.向下滚动页面时,会加载更多项目.
现在,我的客户想要为这些项目添加一个类似Facebook的按钮(以及喜欢这个的人数).
集成默认类似按钮没有问题,但如何将类似按钮添加到通过AJAX加载的项目?如果加载了一个新项目,Facebook API如何知道DOM树中有一个新的类似按钮需要获取有多少人喜欢这个的计数?
谁有经验如何做到这一点?有可用的例子吗?我的搜索没有找到任何有用的东西,除了集成标准之类的按钮.
我有一个这样的简单程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int numberOfDays;
char name[10];
} Month;
int main(void)
{
const Month months[12] = {
{ 31, {'J', 'a', 'n'} },
{ 28, {'F', 'e', 'b'} }
};
printf("%zu\n", strlen(months[0].name));
printf("%zu\n", sizeof(months[0].name));
printf("%zu\n", strlen(months[1].name));
printf("%zu\n", sizeof(months[1].name));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
3
10
3
10
Run Code Online (Sandbox Code Playgroud)
我理解为什么sizeof(months[i].name)打印10,但为什么strlen在这种情况下返回正确的值?
我的想法是,strlen直到第一个'\0',但char name[3]数组不是空终止.从我的理解,这应该是未定义的行为?它只是偶然工作吗?
我想知道上面的months[12]数组中的内存布局是什么.