我做了一个Django网站,但我喝了Koolaid,我想制作一个iPhone版本.经过深思熟虑,我提出了两个选择:
不过,我真的更喜欢选项#2; 我有一些保留意见,主要是因为Django文档不鼓励动态更改设置.我找到了一个可以做我喜欢的片段.我的主要问题是让它尽可能无缝,我希望它对用户来说是自动化和透明的.
还有其他人遇到同样的问题吗?是否有人愿意分享他们如何解决制作iPhone版Django网站的问题?
更新
我使用了中间件和调整模板调用的组合.
对于中间件,我使用了minidetector.我喜欢它,因为它检测到过多的移动用户代理.我所要做的就是在我的视图中检查request.mobile.
对于模板调用调整:
def check_mobile(request, template_name):
if request.mobile:
return 'mobile-%s'%template_name
return template_name
Run Code Online (Sandbox Code Playgroud)
我使用它来查看我知道我有两个版本的任何视图.
去做:
python django django-templates django-middleware mobile-website
我知道这是习惯,但为什么呢?是否存在真正的技术原因,为什么任何其他方式都是一个非常糟糕的想法,还是仅仅基于编码和向后兼容的历史?另外,不使用的危险是什么UTF-8,还有其他一些编码(最值得注意的是UTF-16)?
编辑:通过互动,我主要是指shell和libc.
当我调试一个C#程序并且我得到一个异常抛出(由代码抛出或由框架引发)时,IDE停止并让我到我的代码中的相应行.
现在一切都很好.
然后按"F5"继续.从这一刻起,它就像我在无限循环中一样接缝.IDE总是让我回到异常行.我必须Shift+ F5(停止调试/终止程序)才能离开他.
我在这里与一些同事交谈,他们告诉我,这种情况也会发生在他们身上.
发生了什么?
从命令行启动时,独立的flashplayer不会使用.swf文件以外的任何参数.我需要播放器全屏,没有窗口边框等.这可以通过在程序启动后按ctrl + f来完成.我想以编程方式执行此操作,因为我需要它在没有任何人工干预的情况下启动到全屏.
我的猜测是我需要一些如何获得窗口的句柄,然后发送一个看起来像"ctrl + f"键击的事件.
如果它有任何区别,它看起来像flashplayer是一个gtk应用程序,我有安装pygtk的python.
更新(我使用的解决方案......感谢ypnos的回答):
./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F
Run Code Online (Sandbox Code Playgroud) 我们子公司的IT部门有一家咨询公司为他们编写了一个ASP.NET应用程序.现在它已经出现间歇性问题,混淆了当前用户是谁,并且已经知道他错误地向Joe展示了一些Bob的数据.
顾问们被带回来进行故障排除,我们被邀请听取他们的解释.突然发生了两件事.
首先,顾问主管提供了这个伪代码:
void MyFunction()
{
Session["UserID"] = SomeProprietarySessionManagementLookup();
Response.Redirect("SomeOtherPage.aspx");
}
Run Code Online (Sandbox Code Playgroud)
他继续说会话变量的赋值是异步的,这似乎是不真实的.对查询函数的调用可以异步执行某些操作,但这似乎是不明智的.
鉴于所谓的异步性,他的理论是在重定向不可避免的ThreadAbort异常被引发之前没有分配会话变量.然后,此故障阻止SomeOtherPage显示正确的用户数据.
其次,他举了一个他推荐的编码最佳实践的例子.而不是写:
int MyFunction(int x, int x)
{
try
{
return x / y;
}
catch(Exception ex)
{
// log it
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
他推荐的技术是:
int MyFunction(int x, int y, out bool isSuccessful)
{
isSuccessful = false;
if (y == 0)
return 0;
isSuccessful = true;
return x / y;
}
Run Code Online (Sandbox Code Playgroud)
这肯定会起作用,并且在某些情况下从性能角度来看可能更好.
但是,从这些和其他讨论点来看,我们认为这个团队在技术上并不精通.
意见?
我需要一个通过我的C#应用程序处理屏幕和打印报告的工具.
我正在寻找简单,标准和强大的.
我需要能够让用户能够使用我自己的GUI选择要显示的列,格式化等,并根据他们的选择动态构建报告.Crystal不适合这里的帐单,因为无法动态添加列(并且无法动态调整列宽).
我正在考虑在我的应用程序中使用带有WebBrowser控件的HTML,但我对打印和打印预览几乎没有控制权.
另一种选择是转到.NET 3.5(我使用2.0)并使用XAML和Flow Documents.
你会用什么?
我一直在阅读有关线程安全的单例模式:
http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B_.28using_pthreads.29
它在底部说,唯一安全的方法是使用pthread_once - 这在Windows上不可用.
这是保证线程安全初始化的唯一方法吗?
我在SO上读过这个帖子:
并且似乎暗示了原子操作系统级别的交换和比较功能,我在Windows上假设:
http://msdn.microsoft.com/en-us/library/ms683568.aspx
这可以做我想要的吗?
编辑:我想懒惰的初始化,因为只有一个类的实例.
另一个网站上有人提到在命名空间中使用全局(并且他将单例描述为反模式) - 它如何成为"反模式"?
一般承认的答案:
我已经接受了Josh的回答,因为我正在使用Visual Studio 2008 - 注意:对于未来的读者,如果您不使用此编译器(或2005) - 请勿使用接受的答案!
编辑: 除了return语句之外代码工作正常 - 我收到错误:错误C2440:'return':无法从'volatile Singleton*'转换为'Singleton*'.我应该将返回值修改为易失性Singleton*吗?
编辑:显然const_cast <>将删除volatile限定符.再次感谢Josh.
前提:
通常在准备新的Ruby on Rails应用程序时,我会绘制有关用户导航的模型和关系.通常我会去一个我需要问自己的地方,不管我是否应该超越通常的"经验法则",不再嵌套1级.有时我觉得需要嵌套,而不是创建另一个命名空间路由和复制工作.
这是一个例子:
型号:用户,公司,位置
用户拥有并且属于许多公司(多对多)
用户拥有并且属于许多地点(多对多)
公司拥有并且属于许多地点(多对多)
路由:
1级嵌套
用户/:user_id/companies/ - 列出与用户user
/:user_id/locations/相关的所有公司 - 列出与用户相关的所有位置
超过1级嵌套
用户/:user_id/companies /:company_id/locations/ - 列出用户的所有公司位置
所以,我的问题是在RoR中嵌套超过1级深度是否合适?是还是不是?为什么?
在.NET中,如果一个类包含一个类对象的成员,那么该成员是应该作为属性公开还是使用方法公开?
编辑:瑞恩提出了一个很好的观点.我特别希望能够在仍然存储人类可读值的数据库中进行映射.也就是说,我不希望在我的数据库中有一堆枚举整数.