我最近开始在iTunes U上关注斯坦福大学的iPhone开发在线课程.
我正在尝试为前几个讲座做家庭作业.我跟着我构建了一个基本计算器的演练,但现在我正在尝试第一个任务,我似乎无法解决它.这是一个:
您的计算器已经使用浮点数(例如,如果按3/4 =它将正确显示结果值0.75),但是,用户无法输入浮点数.补救这个.仅允许输入合法的浮点数(例如,"192.168.0.1"不是合法的浮点数).
首先,我不确定浮点是否算作digitPressed或operationPressed.我甚至尝试过一种新方法,floatingPointPressed但这种方法并没有真正解决.有人可以提供这方面的指示吗?
当我看到它作为digitPressed时,我尝试过这样的事情:
if (hasFloatingPoint) {
NSRange range = [[display text] rangeOfString:@"."];
if (range.location == NSNotFound)
{
[display setText:[[display text] stringByAppendingFormat:digit]];
hasFloatingPoint = YES;
}
}
else {
[display setText:[[display text] stringByAppendingFormat:digit]];
}
Run Code Online (Sandbox Code Playgroud)
但我想,我在这里错过了关键概念.
我已经尝试了另一种解决方案,遗憾的是,我已经撤消了所以我无法提供代码,但发生的事情是这样的:我可以按一个数字,5然后说一个浮动点,3所以我最终会结束5.3.然后我设法'禁用'输入剩余部分的浮点数.但我想我对它有点过于严格:例如,我不能放入5.3.2但是在按下操作按钮(+等)之后,它仍然不会让我按下浮点按钮.我想我应该重置我用过的bool?
我不是在寻找一个完全写出来的解决方案,但有人可以如此善意地提供一些关于如何解决这个问题的基本建议吗?在不实际提供代码解决方案的情况下,对我应该做什么和思考的一些逐步概述.
提前致谢.
我从服务器解析了一堆电子邮件,现在我想在网页上显示它们.我得到了他们的HTML内容,我认为IFrame是显示电子邮件的最简单方式,因为它们是要显示的.
然而,
<iframe srcdoc="{{ email.html }}" frameborder="0"></iframe>
Run Code Online (Sandbox Code Playgroud)
给我以下AngularJS错误:
Error: [$interpolate:interr] Can't interpolate: {{ email.html }}
Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一种方法来做到这一点,尝试禁用$ sce作为测试,但这也不起作用.这只是一个测试项目,我得到的数据是安全的,我只需要它用于POC.
我现在在我的控制器中这样做了:
var iframeDocument = document.querySelector('#myiframe').contentWindow.document;
var content = $scope.email.html;
iframeDocument.open('text/html', 'replace');
iframeDocument.write(content);
iframeDocument.close();
Run Code Online (Sandbox Code Playgroud)
这有效,但如果有解决方案,我仍然更喜欢通过数据绑定来做到这一点?谢谢.
更新:
我添加了像Berdir这样的CSRF保护,借助下面的链接让我的应用程序再次运行.但是..我不太清楚我现在做了什么:D这怎么能让我的应用程序更安全?我特别感到困扰的是,我现在在我的ajax代码中获得了一个cookie值,因为我必须通过我的ajax调用传递它...否则它只是不起作用.这不会泄露一些关于cookie的重要信息吗?或者我只是偏执狂.谢谢!
http://aymsystems.com/ajax-csrf-protection-codeigniter-20
//老嗨
在我正在构建的这个Web应用程序中,我有一个功能可以添加关于某些主题的"提示和技巧".这些页面只能由具有admin角色的帐户添加.但是,我也希望能够删除这些页面.(总是很方便,对吧).因为我正在使用CodeIgniter,所以我只想创建一个带有ID的控制器函数,并将此ID传递给模型,在该模型中,与该ID相对应的页面将从数据库中删除.
只是为了说清楚:
控制器:
public function del_content($id)
{
$this->content_model->del_content($id)
}
Run Code Online (Sandbox Code Playgroud)
模型:
public function del_content($id)
{
// database code which I can't be bothered to look up now
// something like $this->db->where(), $this->db->delete()
}
Run Code Online (Sandbox Code Playgroud)
这一切都很简单,但我很害怕它可能太简单了.这对我来说真的不太安全哦,是吗?由于您可以从浏览器中的URL地址栏调用该函数,因此您基本上可以删除整个内容表.(因为你要http://mywebsite/controller/del_content/3为ID为3的项目做).当然,只有管理员帐户才能访问该功能,但仍然...
我以前从来没有编过这样的事情,因此从来没有考虑过我应该采取的安全措施.有人会善意地给我一些我应该留意的事情,也许还有一些关于如何使这更安全的想法,建议?
非常感谢!
我还在试图想办法让移动网站运行起来.我在CodeIgniter中有一个Web应用程序,我想创建它的移动版本.但是,我不想重写太多的代码,特别是我的模型.(因为它们返回我可以在任何地方使用的原始数据.)
我想在子域(m.mydomain.tld)上运行我的移动网站.桌面版本运行于www.mydomain.tld.我尝试将子域指向我的CI应用程序文件夹; 当移动浏览器到达时www.mydomain.tld,我将其重定向到m.mydomain.tld.正如我所说,这个子域指向我的CI应用程序文件夹; 然后我提供移动优化的控制器和视图.
然而!如上所述app/config/config.php,我的应用程序的base_url是:
$config['base_url'] = 'http://www.mydomain.tld/';
所以重定向到m.mydomain.tld没有真正起作用,因为我仍然被重定向到www我不想要那个,即使它然后做了我想要它做的事情.
我试图解决这个问题的方法是制作两个具有不同控制器/视图的应用程序文件夹,但共享模型等等.所以,我正在试图找到一种方法来重构我的CodeIgniter应用程序,以便我可以共享我的模型和'自定义controller'(MY_Controller),以及不同应用程序之间的一些自定义库/帮助程序.
我希望这很清楚,如果不是,我会很乐意解释更多我正在寻找的东西.非常感谢!
我尝试使用Doctrine2为我的Symfony2应用程序构建一个manyToOne关系.我收到此错误,我不知道为什么:
app/console doctrine:schema:create
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
ATTENTION: This operation should not be executed in an production enviroment.
[Doctrine\DBAL\Schema\SchemaException]
There is no column with name 'activityGroup' on table 'activity'.
Run Code Online (Sandbox Code Playgroud)
这是两个类:http://pastebin.com/Ev7Rwgxr
我认为在Activity类上实际上有一个activityGroup ...那么这个错误试图说什么呢?
谢谢!
我只是看着CodeIgniter源代码,我遇到了一些我似乎无法弄清楚的事情; 我不确定它们是什么意思,因为它们大多像一两个符号,所以很难在谷歌和stackoverflow上搜索它们.
我遇到的一件事是:
$this->config =& get_config();
Run Code Online (Sandbox Code Playgroud)
我之前从未真正遇到过PHP =&(或大多数情况下&).这究竟是什么意思?难道他们分配的一个实例get_config来$this->config?我假设它$this->config来自文件顶部的声明var $config = array();
我去寻找get_config()功能,我找到了以下行:
function &get_config($replace = array())
Run Code Online (Sandbox Code Playgroud)
在这里,我的问题几乎是一样的:&代表什么,它做了什么?我在CI核心文件中看到了这两件事(&和=&).
我想知道的是他们评论的"风格".每个函数都以注释块开头,这是一个例子:
/**
* Set HTTP Status Header
*
* @access public
* @param int the status code
* @param string
* @return void
*/
Run Code Online (Sandbox Code Playgroud)
这是由一些插件或库生成的吗?手动执行此操作听起来很麻烦.我没有检查过像PHPDoc这样的东西,但这可能类似(或PHPDoc)吗?它似乎有用,如果它自动生成?嘻嘻.
在下一个问题上.我看到以下划线为前缀的不同功能.有明显的,__construct但也有功能_set_default_controller();和_set_routing();这些下划线有任何特殊意义吗?我知道双下划线用于称为"魔术方法"的东西(我正在思考__get,__set因为那些是我自己使用过的).他们有任何"特殊"的技术含义还是纯粹的语义?如果可能的话,启发我.
最后但并非最不重要的是,在控制器核心文件中,我看到了:
class CI_Controller {
private static $instance;
public function …Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据库中的Base64字符串加载到画布.
我从反向方法中获取了这个字符串:在画布上绘制后将其保存到我的数据库中.所以,现在我想将它加载到另一个画布上.我已经尝试过这个代码,我在网上和其他地方的StackOverflow上找到了它,但它似乎没有用.
<script type="text/javascript">
$(document).ready(function(){
var canvas = document.getElementById("loading_canvas");
var ctx = canvas.getContext("2d");
var image = new Image();
$.post('doodles/load', function(data) {
image.src = data;
});
ctx.drawImage(image, 0, 0);
});
</script>
Run Code Online (Sandbox Code Playgroud)
我通过ajax调用从数据库加载数据.
如果我alert()是datavar,它会显示编码的Base64字符串.所以它并没有真正出错......我一直都是空白的画布.
谁知道我在做错了什么?非常感谢!
使用Raphael.js在欧洲的一些小地图上工作.
它在IE7 +,Safari,Firefox中运行良好.但是,在Chrome中,当悬停在法国时,我的地图上会出现一个白色的框.它似乎无处不在,它只发生在法国,当你盘旋在另一个国家时它会消失.

我的地图的JSFiddle就在这里; 我仍然需要清理代码,但它可以工作.
http://jsfiddle.net/ontolecabaret/ncyge/
似乎问题与此行有关:
$c.css({ top: e.pageY, left: e.pageX}).fadeIn(500);
Run Code Online (Sandbox Code Playgroud)
当我删除"左"设置时,框不会显示.当我将'left'放在50px或50px左边缘时,该框看起来要小得多.看起来好像某种东西被法国盒子推到了右边,但我似乎无法将手指放在它上面.
编辑:重新打开这个问题,因为修复程序无法解决我的问题.
随着-webkit-transform: translate3d(0,0,0);地图上的CSS,白色框已经消失,但是有一个新问题:黑点出现在我的地图上,路径无法正确渲染.

这也是Chrome中的一个错误,还是我可以解决这个问题?
SVG在Safari,FF,甚至是IE中呈现得很好.
我正在阅读有关iOS编程的Big Nerd Ranch书籍,我对他们在第7章中创建的Hypnotime程序提出了疑问.
在某些时候,他们实现以下方法:
- (void)showCurrentTime:(id)sender
{
NSDate *now = [NSDate date];
static NSDateFormatter *formatter = nil;
if (!formatter) {
formatter = [[NSDateFormatter alloc] init];
[formatter setTimeStyle:NSDateFormatterShortStyle];
}
[timeLabel setText:[formatter stringFromDate:now]];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是关于NSDateFormatter *formatter.格式化程序使用alloc和创建init.我总是知道有什么东西alloc需要在某个地方发布,对吧?什么时候formatter传递给timeLabel,不timeLabel发送retain给它?不能(不应该?)我随后发布formatter?
我通过对接下来的页面代码浏览,我找不到任何地方的任何释放消息,除了release存在发送到timeLabel在dealloc.
我在这里混合了吗?有没有理由formatter不应该被我释放?我想成为一个好记忆的公民.任何帮助表示赞赏:)
我有一个简单的应用程序,我可以将用户添加到列表并删除它们.
添加新用户的表单绑定到$scope.newPerson.上提交表单,我添加newPerson对象$scope.people是含有一个阵列person对象.
我people用一个ng-repeat指令循环遍历数组,打印出当前添加到范围的人.这些行都有一个删除按钮(Jade片段):
div.row(data-person, ng-repeat="person in people", ng-model="person")
button(ng-click="removePerson(person)") Remove
Run Code Online (Sandbox Code Playgroud)
当我单击"删除"按钮时,我执行此功能:
$scope.removePerson = function(person) {
var index = $scope.people.indexOf(person);
if (index > -1) {
$scope.people.splice(index, 1);
person = null;
}
}
Run Code Online (Sandbox Code Playgroud)
这将从表中删除行,并将person范围设置为null.Batarang { This scope has no models }后来表演.
但是,我注意到我的people阵列没有更新.当我在Batarang检查它的范围时,我刚刚删除的人仍然在那个数组中.当我开始输入以添加新人时,它会更新.如果我将整个页面提交到我的服务器而不执行此操作,则阵列仍包含已删除的人员.
如果我把它放在$scope.$apply()后面person = null;,我会得到预期的行为,但它会抛出一个错误apply is in progress.我也读过$apply()自称被认为是不好的做法.(?)
我是Angular的新手,我似乎找不到很多关于解决这个问题的信息.当我删除一个人时,如何让它更新我的阵列?谢谢.
codeigniter ×3
javascript ×3
php ×3
angularjs ×2
ios ×2
base64 ×1
canvas ×1
crud ×1
cs193p ×1
doctrine-orm ×1
html5 ×1
iframe ×1
ios4 ×1
iphone ×1
mobile ×1
objective-c ×1
raphael ×1
security ×1
svg ×1
symfony ×1