存档

开源报告卡

Jason / 二月 16, 2014

这几天很忙, 所以我还没有按照自己想的方式发帖。我也没有得到继续我的黑客与蓝牙 le 和我的学习 calatrava。但是, 当一位好朋友分享了一个链接到开源报告卡的链接时, 我只需要分享。我的成绩单是一个有趣的阅读, 当然夸大了我的自我与短语, 如 "史诗红宝石" 和 "全职黑客"。虽然, 前一个形容词是随机的:-)这就是今天的一切, 祝你周末愉快! read more

存档

学习卡拉特拉娃

Jason / 二月 12, 2014

我最近一直在和卡拉特拉娃玩, 这很有趣。最令人兴奋的方面是他们的跨平台的方法。他们推动可重用中间件 (例如共享应用程序逻辑), 同时保留 ui 层本机。

共享逻辑

有趣的是, 共享逻辑是在咖啡脚本。因此, 它甚至可以在其他平台上共享, 如 embr. js 和 node. js–前提是逻辑在本质上足够可重用。

到目前为止, 我唯一的抱怨是该项目的文件不差。例如, calatrava 支持 ios 和 android 上的本机 ui, 但通过运行 calatrava 创建 myapp 生成的示例应用程序仅在 ios 上显示本机 ui。生成的 android 应用程序正在使用 web 视图。

首先, 您需要更改转换窗体类 (位于 droid/myappc mypp/mypp/) 从 com.calatrava.bridge.RegisteredActivity 继承。所以, 这一点:

成为:

接下来, 您将主要了解转换窗体的现有实现 (离开 getagename 方法, 其他一切都将继续), 并重写 getfieldvalue 和呈现:

getfieldvalue 方法是咖啡脚本和本机脚本之间的桥梁。具体而言, 它允许 calatrava 知道屏幕上当前有哪些值。因此, 对于文本字段, 它可能如下所示:

((edittext) 这. findviewbyid (R.id.my _ field). gettext (). tostring ();

因此, 为了编写此方法, 您需要创建一个布局文件。调用它转换 _ form. xml, 并将其置于 droidres·ret布局下:

现在重新访问该操作, 并覆盖在 "创建" 上:

如果你现在通过运行 rake droid 来运行应用程序: 部署你会使用你的自定义视图变灰, 但它还不能正常工作。有了它, 让我们重新审视我们的 getfielvalue 方法。

如果你看一下 ios 示例应用, 你会知道应该如何实现此方法:

或者, 您可以查看 kernel/app/转换器下的 controller.converter.coffee, 并查找对 views.conversionForm.get 的所有调用, 以查看此控制器引用的视图控件。在这种情况下, 它引用:

  • 以 _ 货币
  • 出 _ 货币
  • 金额为 _

让我们通过实现 getfieldvalue 方法将这些连接到我们的布局:

现在, 让我们对输入和输出货币类型进行硬编码。然而, 我们已经实现了 "量" 字段, 因此我们实际上是将我们的本地视图连接到 calatrava (尽管只是在一个方向上)。为了在 coffescript 视图控制器中触发事件, 我们将使用 com.calatrava.bridge.RegisteredActivity.triggerEvent (string 事件, string..。外) 方法。幸运的是, 我们的活动是注册活动, 因此我们可以调用触发器。这样做将直接调用 coffecript 方法, 传递任何参数。在我们的例子中, 我们要调用转换方法, 我们不需要传入任何参数。用类似的命名方法包装这一点, 可以让我们:

最后, 拼图的最后一部分是完全实现渲染方法, 以便可以将值从 calatrava 传递到您的本机视图中。在 android calatrava 上, 将提供一个包含 json 的字符串, 它取决于 render 的实现来解析它。除了 ios 和 android 之间的微小差异外, 再看看转换窗体视图. m 揭示了此方法的意图:

在 key/值上循环, 呈现方法将尝试将每个键与 ui 元素的名称匹配并绑定其值。android 的实现如下所示:

不幸的是, 按原样运行此代码会导致运行时错误。似乎卡拉特拉娃从ui 线程调用渲染, 导致以下崩溃:

E/AndroidRuntime(13246): org.mozilla.javascript.WrappedException: 包装 android.view.ViewRootImpl $calledfromw失r翼 threadexception: 只有创建视图层次结构的原始线程才能触摸其视图。(calatrava/scripts/bridge.js#34) read more

存档

黑客攻击蓝牙 le

Jason / 二月 10, 2014

灵感来自于最近阅读了一篇关于模拟蓝牙 le 与廉价 nrf24l01 + 模块的文章, 我决定采取的土地和订购一些易趣。我最终花了196美元的10单位与航运包括, 所以约1.20 美元的单位。足够多的额外乐趣:-)我最初的想法是使用德米特里的例子, 咬撞 btle, 但适应它运行 atmeg328-pu。这证明比我预想的要困难一些, 主要是因为 (我怀疑) dmitry 正在使用的编译器和 avr gcc 之间存在差异。例如, dmitry 的代码使用了 cbi abi 函数。我不熟悉这些, 一些搜索显示, 他们已经错过了 (弃用, 然后实际上删除) 从 avr gcc 了一段时间。由于不完全理解这些职能的目的, 我的移植工作也受到阻碍。我最终找到了这个样本的一个端口, 从这个港口我能够推断应该做什么。最终, 我得到了这样的结果:不幸的是, 这似乎什么都没做。至少, 根据 iStumbler 的说法, 运行他们的蓝牙扫描仪并没有发现任何迹象表明我的小 avr 正在广播。这大约是我周末能做到的, 所以我还不知道问题出在哪里。我怀疑要么我使用了 iStumbler 的错误, 要么我移植 spi 实现的方式出了问题。无论哪种方式, 这都是我以后要挖掘的。 read more

存档

新博客

在离开博客空间一段时间后, 我想我早该重新开始我的博客了。我正在使用 jekyll 和 github pages 为这个网站提供动力。到目前为止, 这是一个相当简单的过程, 这个系统的灵活性给我留下了深刻的印象。每天使用复杂的系统, 很高兴知道, 我可以让我的博客恢复和运行, 而不会搞乱 web 托管 (和每月成本), 一个数据库和 web 服务器来配置。不是我做不到, 也不是说我过去没有, 而是杰基尔的简单让人耳目一新。我预计随着网站的发展, 将增加更多的功能。例如, 就在今天上午, 我添加了注释的 "不对项"。目前为止,一切都好! read more

存档

在 os x 上安装 avr-gcc

avr-gcc 编译器可以通过家庭酿造安装在 os x 上。目前它不是任何官方公式的一部分, 但它可以很容易地安装使用水龙头。在 os x 小牛 (10.9.1) 我只是: read more