我有一个需要能够处理本机资产和属性类型的服务,所以我在我的PCL中有一个核心服务,BaseThemeService它实现了接口IThemeService.我需要能够从核心PCL访问一些属性,这就是它实现IThemeService核心PCL的原因.
在每个平台项目中,我都有一个ThemeService实现IDroidThemeService和扩展的类BaseThemeService.然后我IDroidThemeService手动在每个项目的设置中注册单例.
这有效,除了现在有2个实例BaseThemeService.1 IThemeService为核心注册,1 IDroidThemeService为平台注册.
为了解决这个问题,我自己构建它,然后适当地注册每个:
protected override void InitializeFirstChance()
{
ThemeService themeService = new ThemeService(Mvx.Resolve<IMvxJsonConverter>(), Mvx.Resolve<IMvxResourceLoader>());
Mvx.RegisterSingleton<IDroidThemeService>(themeService);
Mvx.RegisterSingleton<IThemeService>(themeService);
base.InitializeFirstChance();
}
Run Code Online (Sandbox Code Playgroud)
这似乎应该可行,但它并没有,因为IMvxJsonConverter和IMvxResourceLoader服务还没有注册.
我在MvvmCross文档中看到,使用延迟构造的自动加载将注册所有已实现接口的服务.有没有办法在这里使用该功能来删除手动注册?
protected override void InitializeFirstChance()
{
Mvx.RegisterSingleton<IDroidThemeService>(GetThemeService);
Mvx.RegisterSingleton<IThemeService>(GetThemeService);
base.InitializeFirstChance();
}
private DroidThemeService DroidSingletonService = null;
private DroidThemeService GetThemeService()
{
if (DroidSingletonService == null)
{
DroidSingletonService = Mvx.IocConstruct<DroidThemeService>();
}
return DroidSingletonService;
}
Run Code Online (Sandbox Code Playgroud)
这最终成为最终解决方案.我知道RegisterAsLazySingleton自动解决这个问题的外观,所以如果我找到一种方法来实现这个稍微清洁的话,我会再次更新.
我有一个/etc/init.d/脚本,它在启动时启动,需要联网才能到位.我将rc start设置为99,所以这是加载的最后一件事,但是网络没有立即加载,我现在不得不依赖30秒的睡眠命令来等待网络加载.
操作系统是针对嵌入式系统(Yocto Project)修改的Ubuntu.文件系统是相同的,但服务非常有限,所以它使用Sysvinit.
有没有办法检查所有网络是否已完成加载?
这是脚本,如果有帮助:
#!/bin/sh
#
# Daemon Name: blerd
#
# chkconfig: - 3 99 1
# description: M3 Bluetooth Low Energy Relay Daemon
# Source function library.
. /etc/init.d/functions
PROGRAM=bler
LOCKFILE=/var/lock/subsys/$PROGRAM
start() {
[ -x $EXE ] || exit 5
echo -n "Starting $PROGRAM: ";
if [ -e $LOCKFILE ]; then
echo "Instance of $PROGRAM exists."
return 0;
fi
sleep 30
$PROGRAM
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed"
fi …Run Code Online (Sandbox Code Playgroud) 我使用了Net Tuts上发布的教程+(http://hub.tutsplus.com/tutorials/combining-laravel-4-and-backbone--net-31745)并按照说明实现了错误处理.
在composer autoload部分中,我正在加载error.php文件.它包含一个名为NotFoundException的类,用于为REST请求创建异常.
当我使用工匠转储自动加载时,它构建正常,并在第一次运行时,我得到错误"ReflectionException:类NotFoundException不存在".这仅在转储后的第一次运行时发生.后续运行很好,当我遇到触发异常的实例时,异常类可以正常工作.每次运行我的单元测试时都会出现此错误,导致我的测试失败,但它只出现在调用异常的第一个文件中.我在2个单独的文件中运行了两个测试,它们都使用异常作为断言,第一个获取和错误,而第二个传递.
我对Laravel来说还是一个新手,所以它可能是一个简单的修复,但我错过了什么?是否应该有另一个我忽略的参考?
以下步骤的输出:
root@ubuntu:/var/www/api# composer dump-autoload
Generating autoload files
root@ubuntu:/var/www/api# php artisan clear-compiled
root@ubuntu:/var/www/api# php artisan optimize
Generating optimized class loader
Compiling common classes
root@ubuntu:/var/www/api# phpunit
PHPUnit 3.7.22 by Sebastian Bergmann.
Configuration read from /var/www/api/phpunit.xml
E........................................
Time: 2 seconds, Memory: 46.00Mb
There was 1 error:
1) AuthControllerTest::testProcess
ReflectionException: Class NotFoundException does not exist
/var/www/api/bootstrap/compiled.php:7539
/var/www/api/bootstrap/compiled.php:7533
/var/www/api/bootstrap/compiled.php:7508
/var/www/api/bootstrap/compiled.php:7477
/var/www/api/bootstrap/compiled.php:7472
/var/www/api/vendor/composer/ClassLoader.php:185
/var/www/api/vendor/composer/ClassLoader.php:185
/var/www/api/bootstrap/compiled.php:165
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:83
/var/www/api/bootstrap/compiled.php:163
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:186
/var/www/api/bootstrap/compiled.php:175
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:4763 …Run Code Online (Sandbox Code Playgroud) 这更像是一个浏览器将要做什么的问题,而不是后端架构.
我正在使用codeigniter并有一个控制器设置来处理资产(CSS,JS和图像),目前我只是简单地处理PHP文件中的PHP并将它们作为CSS文件呈现给浏览器,因此www.mysite.com/asset/home.css将调用资产类并从单个文件生成home的CSS文件.
我想使CSS文件的请求更加动态,以便请求将确定应该组合的多个文件,然后传递给less.php解析和最小化.
考虑到缓存问题,将变量传递给CSS类的最佳方法是什么?扁平链接URI变量?传统的GET URI?我可以使用数据库来引用其组件的给定名称,但这不是很多开销吗?
欢迎任何想法或意见!
++浏览器如何处理类似的东西standard.menu.comments.css?
+++我最终使用附加到文件的URI字符串.它并不像我想要的那么干净,但似乎有效.我很可能会很快转移到一个斜杠分隔的URI解析器来清理请求行.谢谢你的帮助!
我试图避免使用全局变量,因为我不知道代码将来需要如何扩展,所以我希望能够生成具有独立互斥锁的多个线程.我正在尝试将Mutex和条件变量传递给类构造函数.
头文件:
class Receiver {
private:
std::mutex & _global_mtx;
std::condition_variable & _global_cv;
bool & state;
public:
// Construct
Receiver(std::mutex &, std::condition_variable &, bool &);
};
Run Code Online (Sandbox Code Playgroud)
代码文件:
/*-------------------------------------
Construct
--------------------------------------*/
Receiver::Receiver(std::mutex & mtx, std::condition_variable & cv, bool & state){
_global_mtx = mtx;
}
Run Code Online (Sandbox Code Playgroud)
这显然是导致问题,因为_global_mtx已经声明为引用变量,所以我不知道如何将引用传递mtx给_global_mtx.
另外,我知道在声明引用时你必须为它指定一个值来引用(可能是NULL)所以有没有更好的方法来处理这个我正在做的事情?我确信我不是第一个也是唯一一个遇到这种需求的人,但我不确定在哪里寻找答案.