我是网络编程的新手,来自视频游戏开发背景(c ++),我真的开始感到信息过载.有这么多竞争的图书馆都选择了一些他们不喜欢的东西,并建立了一种全新的方式来做同样的事情!我相信这有充分的理由,我不想抱怨,所以我会解释我的问题.
为了简化我的旅程,我决定开始学习Google App Engine + GWT + Java.我喜欢它,因为它是一个开箱即用的分布式服务器架构,我选择Java是因为我的C++背景.
首先,我编写了一些类似Twitter的应用程序,因为它测试了Web开发的各个方面,即:REST,JSON解析/创建,AJAX通信和HTML生成.创建一个允许用户在浏览器页面中输入他们的名字和密码,将数据发送到我的应用程序,代表他们登录,抓住他们的朋友列表,然后发出的小网站并不需要太长时间.它以JSON的形式返回给客户端,在那里我解析并显示它.
非常简单的东西.
因此,下一步是我不喜欢将用户通过网络输入的密码作为纯文本发送(显然).这让我想到了我需要的所有管道:
所有非常标准的东西都是永远存在的.好吧,我开始四处寻找一个Java认证库,那里有如此庞大的单片库,有很多学习曲线,有些已经老了或者不再受欢迎了...我觉得我又像一个初学者程序员了!我只想要一个登录页面!:)
所以我开始阅读认证的管道如何工作,并且有大量的内容可供使用.显然,人们(不安全地)推出自己的认证是很常见的.我宁愿采取一种存在且坚实的解决方案.
所以问题就变成了,人们对此做了什么?Twitter支持HTTP和HTTPS,但默认为其REST API的HTTP,这是否意味着人们的密码在不受保护的情况下飞来飞去,准备被中间人攻击拦截?
我也看了OAuth,它看起来很棒,但它没有一个好的旧案例"我不想知道或关心OpenID是什么".非技术人员我已经展示了OpenID,就像"wha?我只想把我的用户名/密码放进去".
作为旁注,有没有人在Google App Engine上运行Spring.Security?
无论如何,我在咆哮.我只是想知道人们做了什么(不是在Python,Rails等,而是在古老的Java中).我想拥有像Digg这样的登录页面,甚至有一天可以选择OpenID :)
干杯,沙恩
我刚刚发现这个项目提供了一种在自己的服务器集群上运行Google App Engine项目的方法.
http://code.google.com/p/appscale/
它看起来很有趣,有没有人有使用它的经验?
我最近发现并且爱上了jQuery中使用的Deferred/Promise模式.它只是封装了许多异步用例,包括精彩的链接,过滤能力,我不敢相信我错过了这么久.
我刚刚完成重构我的AS3代码以使用优秀的CodeCatalyst/promise-as3库(https://github.com/CodeCatalyst/promise-as3),所以开始考虑回到我的C++代码并看看我是如何可以在那里实施模式.
在我自己开始编码之前,我检查过它是否已经完成,并发现std::future
/ std::promise
(和提升等价物),但它们非常重(它们似乎使用真正的线程等,并且具有沉重的模板语法).
所以,我的问题是:是否存在deferred/Promise模式的轻量级纯C++实现,jQuery风格?
裁判:
我知道之前已经有过这样或那样的问题,但大多数与GAE稳定性有关的主要问题似乎都是在2008年底,2009年初提出来的,或者与大规模的游戏没有直接关系(我对此感兴趣.
基本上,我一直在与我的业务合作伙伴争论是否使用GAE或AWS作为社交游戏引擎的后端,现在是关键时刻.我喜欢GAE(Java)有很多原因,虽然它曾经不稳定,但它现在还不错.支持AWS的主要理由是AWS已证明自己每天运行数千万活跃用户的多个游戏.AWS的明显炙手可热的孩子是Zynga,其Farmville达到80 +百万DAU.这只是在AWS基础架构上运行的非常成功的游戏之一.卓越的成就.
所以,这种或那种方式已经知道了.另一方面,GAE没有任何我能找到这些数字的例子.差远了. 我可以信任吗?是否有一个使用GAE的200万+每日活跃用户的大型社交游戏的例子?
我们社交游戏后端的主要考虑因素是:
我期待着你的想法,但请注意,这并不是为了开始任何形式的火焰战争.我喜欢这两种系统,但两者都有积极的和消极的,但我即将做出一个可能不会被推进的架构决策.
问候,
巴蒂尔
我在编写工具时来自Windows编程背景,但过去一年中一直在使用Carbon和Cocoa进行编程.我承认,我已经向Mac介绍了自己,从UI编程中隐藏起来.我一直在视图中使用我的OpenGL代码,然后像往常一样使用与平台无关的OpenGL C++代码保持在我的舒适区域.
但是,现在我想开始将一个更复杂的应用程序移植到Mac OS.
通常我使用标准的Visual Studio可停靠MDI方法,这种方法非常出色,但非常像Windows.从主要使用Mac开始一段时间,我不倾向于看到用于Mac UI的这种方法.不幸的是,即使Xcode也不支持拖放/停靠视图的想法.我看到有拆分面板的停靠视图,但这就是它.
我见过的最接近Visual Studio方法的是Photoshop CS4,这非常好.
那么对此有何普遍共识?有没有更像Mac的方式来实现我没见过的同样的事情?如果没有,我很高兴自己在Cocoa中编写一个窗口管理器,这样我就可以最终深入了解一个看起来很棒的API.
注意,我不想使用QT或任何其他跨平台库.重点是我想让Mac应用程序看起来像Mac应用程序,让Windows应用程序看起来像Windows应用程序.我总是发现跨平台库往往会失去这种效果,当我看到一个原生的Mac UI,花哨的Cocoa过渡和动画时,我总是微笑.这也是我学习Cocoa的好借口.
话虽这么说,如果有一个开源Cocoa库来做这件事,我很想知道它!我很想看看其他人是如何实现这一目标的,并且有助于平滑Cocoa的学习曲线.
干杯,
巴蒂尔
更新:我忘了提到一个关键点.我支持插件,它可以有自己的UI来显示各种插件特定信息.我不知道将加载哪些插件,如果我不支持对接,我不知道他们的UI将在哪里生活.我很想听听别人对此的看法,具体来说:如果UI无法改变,我如何支持插件视图架构?我在哪里放置插件视图?
关于单身人士如何在Google App Engine(或任何分布式服务器环境)中工作,我很感兴趣.鉴于您的应用程序可以同时在多个进程中运行(在多台计算机上),并且请求可以在所有位置进行路由,当应用程序执行以下操作时,实际上会发生什么:'CacheManager.getInstance()'?
我只是以(GAE)CacheManager为例,但我的观点是,单个地方有一个单一的全局应用程序实例,所以它在哪里生活?是否调用了RPC?事实上,全局应用程序状态(如会话)实际上是如何实际处理的?
此致,谢恩
我想跳进学习C++ 0x,它已经成熟到我满意的水平.
Snow Leopard 10.6上的Xcode目前处于GCC 4.2.1,我想尝试的新功能,如std :: shared_ptr,lambdas,auto,null指针常量,unicode字符串文字和其他零碎,需要在至少4.3(我相信).
理想情况下我会使用Xcode,但我甚至不确定你是否可以手动升级Xcode的编译器.这可能吗?
否则,安装不同版本的GCC的最佳方法是什么,不会干扰系统的其他部分?
问候,
巴蒂尔
我想试试Google App Engine Python环境,文档说它运行2.5.2.当我使用OS X Leopard时,我安装了Python 2.5.1,但是希望安装最新的2.5.x版本(不是2.6或3.0).似乎最新版本是2.5.4
所以,我去了这里:
http://wiki.python.org/moin/MacPython/Leopard
并且因为我担心安装最新版本可能会导致标准安装混乱而停止.我真的只想安装一个版本.
所以我的问题是如何安全地安装最新的2.5.x?是否可以完全替换内置版本,如果是这样会损害任何Mac工具?
干杯,沙恩
它只是我,还是甚至可以运行/调试GWT应用程序了?
全新安装的Google Plugin for Eclipse(Juno),使用GWT + GAE创建一个新的Web应用程序,运行/调试.失败.
这是在Mac上,包括Chrome,Firefox和Safari.该浏览器插件与Safari和Firefox不兼容,表示它与Chrome兼容,但总是要求重新安装.
有什么想法/提示吗?
-Shane
更新:好的,所以我回到了Firefox ESR 24(https://www.mozilla.org/en-US/firefox/organizations/all/),这很有效.这将阻止我直到GWT 2.7发布.
我发现我可以在选项facet(菜单栏的右侧)中播放命令按钮,但是我似乎无法以相同的方式添加子菜单.我想要一个与右边对齐的实际菜单下拉菜单,而不是一个按钮.
有任何想法吗?
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head title="Primefaces Test">
<style>
.ui-layout-north {
z-index: 20 !important;
overflow: visible !important;
}
.ui-layout-north .ui-layout-unit-content {
overflow: visible !important;
}
</style>
</h:head>
<h:body>
<h:form>
<p:layout fullPage="true">
<p:layoutUnit position="north">
<p:menubar>
<p:submenu label="Mail">
<p:menuitem value="Gmail" url="http://www.google.com" />
<p:menuitem value="Hotmail" url="http://www.hotmail.com" />
<p:menuitem value="Yahoo Mail" url="http://mail.yahoo.com" />
</p:submenu>
<p:submenu label="Videos">
<p:menuitem value="Youtube" url="http://www.youtube.com" />
<p:menuitem value="Break" url="http://www.break.com" />
</p:submenu>
<f:facet name="options">
<p:commandButton value="logout" />
<p:submenu label="Videos">
<p:menuitem value="Youtube" url="http://www.youtube.com" />
<p:menuitem value="Break" url="http://www.break.com" /> …
Run Code Online (Sandbox Code Playgroud) 一般来说,我都遵循Google风格指南,我觉得这与我看待事物的方式很吻合.我也几乎完全使用boost :: scoped_ptr,这样只有一个经理拥有特定对象的所有权.然后我传递了裸指针,这个想法是我的项目的结构使得所有对象的管理器在使用它们的对象被销毁后总是被销毁.
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Smart_Pointers
这一切都很棒,但是我只是被一个令人讨厌的小内存stomp bug所困扰,其中所有者恰好在删除使用它的对象之前被删除了.
现在,在每个人都跳起来之前说我对这个模式很傻,为什么我不只是使用shared_ptr?等等,考虑一下我不希望拥有未定义的所有者语义.尽管shared_ptr会捕获这种特殊情况,但它会向系统用户发送错误消息.它说,"我不知道谁拥有这个,它可能是你!"
什么会帮助我本来是一个指向范围指针的弱指针.实际上,一个带有弱引用列表的作用域指针,当作用域指针析构时它们被清空.这将允许单一所有权语义,但给使用对象一个机会来捕捉我遇到的问题.
因此,以scoped_ptr的额外'weak_refs'指针和weak_ptr中'next_weak_ptr'的额外指针为代价,它将成为一个整洁的小单一所有者,多个用户结构.
它甚至可能只是一个调试功能,所以在'release'中,整个系统只会转回一个正常大小的scoped_ptr和一个用于弱引用的标准单指针.
所以这......我的问题是:
干杯,沙恩