我创建了一个只添加新列的迁移,但是我希望在created_at和updated_at列之前添加它,有没有办法指定新列的创建位置?
我搜索过,只发现有人说要在add_column中使用:after选项,但它没有做任何事情.然后我查看了rails api文档,发现没有这样的选项.
我正在实现一个PRIVATE ContentProvider
,它有几个关系表(一对多,多对多).在我当前的实现中,所有表都可以通过URI访问.如何简化界面,以便URI不必访问内部的"通过"表?
例如,我有一个POSTS表,每个POST通过TAGGINGS表有很多TAGS.我想只与POSTS URI进行交互,并在内部进行"私有"工作ContentProvider
.
为了query
简单地返回带有连接表的游标,但我该怎么做insert
呢?是bulkInsert
我应该到什么?
android android-contentresolver android-contentprovider android-sqlite
我想通过将以下样式应用到我的活动来更改向上图标,但它不起作用,但我仍然得到默认的黑色"<"图标.
任何人都可以找到这里缺少的东西吗?
<style name="AppTheme.ActionBar" parent="@style/Theme.Sherlock.Light">
<item name="actionBarStyle">@style/actionBarStyle</item>
<item name="android:actionBarStyle">@style/actionBarStyle</item>
</style>
<style name="actionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
<item name="android:background">@drawable/header_bar</item>
<item name="background">@drawable/header_bar</item>
<item name="android:homeAsUpIndicator">@drawable/up_indicator</item>
<item name="homeAsUpIndicator">@drawable/up_indicator</item>
<item name="android:displayOptions">homeAsUp|showHome</item>
<item name="displayOptions">homeAsUp|showHome</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我有一个ListActivity
它的适配器实现ViewHolder模式.
适配器和视图:
private class PlaceAdapter extends ArrayAdapter<PlaceModel> {
final int viewResourceId;
public PlaceAdapter(Context context, int textViewResourceId, List<PlaceModel> objects) {
super(context, textViewResourceId, objects);
viewResourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(viewResourceId, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
PlaceModel place = getItem(position);
holder.name.setText(place.getName());
holder.address.setText(place.getVicinity());
return convertView;
}
}
private class ViewHolder { …
Run Code Online (Sandbox Code Playgroud) 我是Ember.js的新手,在开发应用程序时我发现了新的路由器API.合并后根本没有文件(除此之外 - https://gist.github.com/3981133)
我不知道如何开始将我的应用程序转换为新的路由器API.这个"演练"并没有多大帮助.
1)如何将模板连接到命名插座,例如{{outlet main}}?
2)我使用App.router.someController和App.router.get('store').findAll()和.find()全部,应该用什么代替?
3)html中的把手标签有什么变化<script type="text/x-handlebars" data-template-name="templateName">
吗?
我现在能想到的一切......
我通过以下方式使用 Redis 缓存扇出新闻提要:
每个提要活动都是一个键/值,例如 activity:id,其中值是数据的 JSON 字符串。
每个新闻提要当前是一个列表,键是 feed:user:user_id 并且列表包含相关活动的键。
检索我使用的新闻提要,例如:'sort feed:user:user_id by nosort get * limit 0 40'
我正在考虑将提要更改为排序集,其中分数是活动的时间戳,这样提要始终按时间排序。
我读过http://arindam.quora.com/Redis-sorted-sets-and-lists-Pertaining-to-Newsfeed推荐使用列表,因为排序集的时间复杂性,但通过继续使用列表,我必须小心在插入顺序中,插入过去的故事需要遍历列表并找到要推送到的正确索引。(这可能会导致分布式环境中出现新问题)。
我应该继续使用列表还是使用排序集?
有没有办法从排序集中立即检索新闻提要(就像使用 sort ... get * 命令获取列表一样),或者它是否必须是 zrange 然后遍历结果并获取每个值?
我在lib/gcm.rb中有一个模块:
require "net/http"
require "uri"
module GCM
def self.dispatch_message(reg_ids, data)
url = URI.parse(GCM_URL + "/send")
@msg = { :registrationIds => reg_ids, :data => data }
request = Net::HTTP::Post.new(url.path)
request.content_type = 'application/json'
request.body = @msg.to_json
response = Net::HTTP.start(url.host, url.port) { |http| http.request(request) }
end
end
Run Code Online (Sandbox Code Playgroud)
我想测试dispatch_message
在我的一个控制器中调用它:
it "should dispatch a GCM message" do
post :create, :post => @attr, :format => :json
GCM.should_receive(:dispatch_message)
end
Run Code Online (Sandbox Code Playgroud)
但它失败了:
PostsController POST 'create' should dispatch a GCM message
Failure/Error: GCM.should_receive(:dispatch_message)
(GCM).dispatch_message(any args)
expected: 1 time …
Run Code Online (Sandbox Code Playgroud) 我希望有一个比MongoDB的ObjectID更友好的面向ids(即Youtube样式:/ posts/cxB6Ey6).
我读到为了可伸缩性,最好将_id留作ObjectID,所以我想到了两个解决方案:
1)为每个文档添加一个索引的postid字段
2)在_id和postid之间创建一个映射集合
在这两种情况下都使用类似https://github.com/dylang/shortid的内容来生成短ID,并在生成时通过查询数据库确保id是唯一的.(这个query-generate-insert可以是一个原子操作吗?)
这些解决方案会对性能产生显着影响吗?
这样做的最佳策略是什么?
我使用MongoLab作为托管的MongoDB,使用Memcache或Redis缓存响应是否有意义?
我读到了使用Redis作为缓存的常见问题,但另一方面,我读到如果没有分页MongoDB,MongoDB和Redis可能会有类似的性能.
在Android中执行网络操作的最佳实践是什么(无需在ContentProvider中存储数据)?
目前我使用的模式类似于http://www.youtube.com/watch?v=xHXn3Kg2IQE中描述的模式- 包含在Fragment,IntentService和ResultReceiver中的服务助手.
这非常复杂和肮脏.
正在使用类似Fragment(with setRetainInstance(true)
)的东西,它启动AsyncTasks并且对Activity的回调足够好?
我想我还需要处理在活动暂停然后恢复时完成任务的情况.
有没有比这里提出的更好的策略?
编辑:我所指的网络操作是与简单的JSON Web服务的交互
android ×4
mongodb ×2
redis ×2
android-xml ×1
ember.js ×1
memcached ×1
robolectric ×1
rspec ×1