小编Joh*_*ino的帖子

谷歌地图没有在Android设备上显示

Android设备仅显示地图图块.似乎被广泛报道.我按照这个链接的说明:

https://developers.google.com/maps/documentation/android/start
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

1)在Eclipse中,我签署了发布模式.我选择文件>导出.选择导出Android应用程序,然后单击下一步.创建了一个新的密钥库.然后上传apk到谷歌播放.

2)Android应用程序在设备上工作,但地图没有显示.它只显示了瓷砖.

3)所以我按照上面链接中的说明操作.

4)我找到了我在上面创建的密钥库文件.我的密钥库名为ziggy.keystore,别名为ziggy密钥库.

5)我在Mac OSX的终端上运行了这个:

keytool -list -v -keystore ziggy.keystore -alias ziggy\ keystroke
Run Code Online (Sandbox Code Playgroud)

6)上面的命令产生的输出包括一行包含证书的SHA-1指纹.指纹是由冒号分隔的20个两位十六进制数字的序列.

7)现在我有了签名证书指纹,我在Google API控制台中为该应用程序创建了一个项目.在浏览器中,我导航到https://code.google.com/apis/console/

8)我点击了Create Project.我把它命名为API项目.我在主窗口中看到了API和服务列表.

9)我向下滚动,直到看到Google Maps Android API v2.在条目的右侧,我单击了开关指示器,使其处于打开状态.我同意服务条款并点击接受.

10)在左侧导航栏中,我单击了API Access.在结果页面中,我单击了Create New Android Key.在结果对话框中,我输入了SHA-1指纹,然后是分号,然后输入了应用程序的包名称.

11)我复制了API密钥.我打开了我的应用程序的清单,包含在AndroidManifest.xml文件中.并通过在结束标记之前插入以下元素作为元素的子元素:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="your_api_key"/>
Run Code Online (Sandbox Code Playgroud)

*请注意,我使用了真正的api密钥.

12)我也添加了这个:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


<permission
      android:name="com.otl.AndroidRemoteApp1.permission.MAPS_RECEIVE"
      android:protectionLevel="signature"/>
    <uses-permission android:name="com.otl.AndroidRemoteApp1.permission.MAPS_RECEIVE"/>

<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>    
Run Code Online (Sandbox Code Playgroud)

13)然后在我的ShowMapActivity.java中:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.show_map);
            mapView = (MapView) findViewById(R.id.mapview);

    myMapController = mapView.getController();  
    mapView.setBuiltInZoomControls(true);

    Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on);
            ...
Run Code Online (Sandbox Code Playgroud)

14)然后在我的show_map.xml文件中:

<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:state_enabled="true" 
    android:apiKey="my_api_key" …
Run Code Online (Sandbox Code Playgroud)

android google-maps

5
推荐指数
1
解决办法
8653
查看次数

实习空字符串错误

目前,在我的请求模型中,我有:

belongs_to :requestor, :class_name => 'User'
Run Code Online (Sandbox Code Playgroud)

因此请求者是current_user.

问题是当current_user单击创建按钮以提交请求的表单时,所有属性都会更新到表单中的数据库.
但由于requestor_id不是表单中填写的值,因此在创建新请求记录时会在数据库中返回null值.
我想要的是requestor_id当用户单击创建按钮时,在请求表的列中更新的整数(相当于Users表的主键).
所以我认为可能requestor_id在创建动作的参数中添加一个符号可以解决这个问题:

def create_common
  @a = Request.new
    b = @a.requestor_id
  @resource = yield params[:contact + "#{b}".to_sym]
  self.resource = @resource
Run Code Online (Sandbox Code Playgroud)

但它返回以下错误:

实习空字符串

谢谢你的任何建议.

ruby ruby-on-rails

4
推荐指数
1
解决办法
4172
查看次数

ruby包和十六进制值

半字节是四位.这意味着有16(2 ^ 4)个可能的值.这意味着半字节对应于单个十六进制数字,因为十六进制是基数16.字节是2 ^ 8,因此可以用2个十六进制数字表示,因此可以用2个半字节表示.

所以下面我有一个1字节的字符:

'一个'

那个角色是2 ^ 8:

 'A'.unpack('B*')
 => ["01000001"] 
Run Code Online (Sandbox Code Playgroud)

这意味着它应该由两个十六进制数字表示:

 01000001 == 41
Run Code Online (Sandbox Code Playgroud)

根据Ruby文档,对于Array方法包,当aTemplateString(参数)等于'H'时,它将返回一个十六进制字符串.但这就是我得到的回报:

['A'].pack('H')
 => "\xA0" 
Run Code Online (Sandbox Code Playgroud)

我的第一点是它不应该返回的十六进制值.它应该返回十六进制值41.第二点是半字节的概念,正如我上面解释的那样,意味着1个字节,它应该返回两个半字节.但在它上面插入一个0,因为它认为输入只有1个半字节,即使'A'是一个字节并且有两个半字节.很明显我在这里遗漏了一些东西.

ruby hex unpack decoding pack

4
推荐指数
1
解决办法
6759
查看次数

jquery hide方法只隐藏div一秒钟,然后div自动重新出现

我似乎和我之前发布的那个问题一样.我想默认隐藏那里的所有div,只显示一个.然后,用户可以单击侧面选项卡以显示另一个.问题是div只在页面加载后隐藏了一秒钟,但很快就会重新出现.这是代码,它假设隐藏页面的div,只显示id为"pple"的div:

$("a#link2").click(function(){$("#content > div").hide(); $("#pple").show();});

markup:

   home.html:                                           
<li><a href="about.html" id="link2">About</a></li>

about.html:
<div id="content">
 <div class="tabContent" id="pple">
<p>
    Content
<p> 
   </div>

    <div class="tabContent" id="serv">

<p>
    Content
</p>    
  </div>

  <div class="tabContent" id="sol">     

<p>
    Content
</p>    
  </div>            
</div>
Run Code Online (Sandbox Code Playgroud)

谢谢你的回复.

html javascript jquery hide

3
推荐指数
1
解决办法
3459
查看次数

在rails中的activeadmin中的default_actions不会使"删除"按钮创建销毁链接

我有这个:

ActiveAdmin.register User do
  index do
    column :email
        column :name
    column :role
    column "Last Sign In", :last_sign_in_at
        column :account
        column "Units" do |user|
            user.units.count.to_s
        end
    default_actions
end
Run Code Online (Sandbox Code Playgroud)

default_actions方法应创建显示,编辑和删除链接.它显示了它们,但删除链接只是show动作的链接:

admin/users/1
Run Code Online (Sandbox Code Playgroud)

规格说它应该创建一个删除链接.

不知道为什么会那样做.所以我尝试了另一种选择:

 column "Delete" do |user|
   link_to "Delete", destroy_admin_user_path(user)
 end
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

undefined method `destroy_admin_user_path' for <div class="index_as_table"></div>:ActiveAdmin::Views::IndexAsTable
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在路线中添加这个:

match "/admin/users/:id/destroy(.:format) " => "admin/users#destroy"
Run Code Online (Sandbox Code Playgroud)

还是有同样的错误.

我在application.html.haml中包含了这个:

        = javascript_include_tag :all
Run Code Online (Sandbox Code Playgroud)

还有与上述相同的问题.

谢谢你的回复

routes ruby-on-rails activeadmin

3
推荐指数
1
解决办法
6419
查看次数

如何在运行时找到Ruby方法的调用位置?

这种特定方法导致应用程序中断:

# needed becasuse of a rails bug
def to_s
  "#{self.class.name.underscore}__#{object_id}"
end  
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

ActionView::TemplateError (`@content_for_details_view_builder__2234321380' is not allowed as an instance variable name) in app/views/shared/_details_view.haml:
Run Code Online (Sandbox Code Playgroud)

基本上这是导致上述异常的代码执行:

# controller
def new
  @view_mode = :new
  template = "new"
  render template, :layout => false
end    

# new.haml
- details_view @user do |b, f|

# build_helper
def details_view(model, options = {}, &block)
  # instantiate OptionsWrapper passing a hash of key/value pairs, in this case
  # an empty hash. OptionsWrapper contains a method_missing method so …
Run Code Online (Sandbox Code Playgroud)

ruby methods callstack inspect

2
推荐指数
1
解决办法
2744
查看次数

使用 redis 和 ruby​​ 发布/订阅消息传递

我查看了这个文档:

\n\n

http://redis.io/topics/pubsub

\n\n

它指出:

\n\n

当您订阅频道时,您将收到一条消息,该消息表示为包含三个元素的批量回复。消息的第一个元素是消息的类型(例如SUBSCRIBE 或UNSUBSCRIBE)。消息的第二个元素是您正在订阅或取消订阅的给定频道的名称。消息的第三个元素是您当前订阅的频道数量:

\n\n
> SUBSCRIBE first second\n\n*3        #three elements in this message: \xe2\x80\x9csubscribe\xe2\x80\x9d, \xe2\x80\x9cfirst\xe2\x80\x9d, and 1\n$9        #number of bytes in the element \nsubscribe #kind of message\n$5        #number of bytes in the element \nfirst     #name of channel\n:1        #number of channels we are subscribed to\n
Run Code Online (Sandbox Code Playgroud)\n\n

这很酷,您可以在订阅频道的批量回复中看到您订阅的频道数量。现在我尝试在使用 ruby​​ 时得到此回复:

\n\n
require \'rubygems\'\nrequire \'redis\'\nrequire \'json\'\n\nredis = Redis.new(:timeout => 0)\n\nredis.subscribe(\'chatroom\') do |on|\n  on.message do |channel, msg, total_channels|\n    data = JSON.parse(msg)\n    puts "##{channel} - [#{data[\'user\']}]: #{data[\'msg\']} - channels subscribed …
Run Code Online (Sandbox Code Playgroud)

ruby redis

2
推荐指数
1
解决办法
4710
查看次数

C++中的指针和const

在处理指针和const时,我看到有三种方法来声明它们:

1)

int nValue = 5;
int *const pnPtr = &nValue;
Run Code Online (Sandbox Code Playgroud)

2)

int nValue = 5;
const int *pnPtr = &nValue;
Run Code Online (Sandbox Code Playgroud)

3)

const int 5;
const int *const pnPtr = &nValue;
Run Code Online (Sandbox Code Playgroud)

示例1被称为"Const指向非const的指针".地址不能更改,但值可能会更改.所以我们可以做类似下面的事情,因为例1中的nValue是一个非const int:

int nValue = 5;
int const *pnPtr = &nValue;

*pnPtr = 6; 
Run Code Online (Sandbox Code Playgroud)

但是我们不能在示例1中执行以下操作:

int nValue = 5;
int nValue2 = 6;
int const *pnPtr = &nValue;
pnPtr = &nValue2; 
Run Code Online (Sandbox Code Playgroud)

示例2被称为"指向const的指针".这意味着地址可以更改,但值不能.我们可以做到以下几点:

int nValue = 5;
int nValue2 = 6;

const int *pnPtr = &nValue;
pnPtr = &nValue2;
Run Code Online (Sandbox Code Playgroud)

但是我们在示例2中不能执行以下操作: …

c++ const

2
推荐指数
1
解决办法
168
查看次数

为每个线程生成一个新的对象实例是线程安全的操作吗?

当运行多个线程时,我发现交错成为一个问题,其中一个线程不考虑另一个线程对对象的更改。Jave 提供了同步方法、同步状态、Lock 对象和新的 Concurrency 类对象,以确保当多个线程影响单个对象时,每个线程在其他线程影响对象字段之前获得独占轮流影响对象字段。

现在,虽然这一点很清楚,但当您不使用单个对象而是对多个对象使用多个线程时,它对我来说有点灰色。所以我尝试测试一下。我有一个有 50 个线程的 ExecuterService。它产生一个新的响应者线程(它本身就是一个新对象):

    ExecutorService executor=Executors.newFixedThreadPool(50);
    for(int i=0;i<50;i++){
        executor.execute(new Responder()); 
    }   
Run Code Online (Sandbox Code Playgroud)

因为每个线程本身就是一个实例化对象,如果我的 Responder 类如下所示:

public class Responder implements Runnable {
    private ArrayList<Integer> list=new ArrayList<Integer>();
    private Random random = new Random();

    @Override
    public void run() {
        for(int i=0;i<1000;i++){
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            list.add(random.nextInt(100));          
        }
        System.out.println("The list size: " + list.size());
    }

}
Run Code Online (Sandbox Code Playgroud)

每个线程是否都使用自己的 Responder 实例,以便线程安全不成问题?比如ArrayList列表是线程间共享数据吗?我的直觉告诉我,线程安全在这里不是问题,因为每个线程都使用自己的实例、自己的成员,而不是共享数据,当我尝试运行这个示例时, size() 调用输出相同的 (1000)所有线程。所以看起来它是线程安全的,但我尝试了一种据说是非线程安全的方法:

public static void main(String[] args) {
    int i;
    //checking if instantiating new …
Run Code Online (Sandbox Code Playgroud)

java multithreading

2
推荐指数
1
解决办法
2967
查看次数

在ubuntu 12.04上,therubyracer gem不断导致bundle安装失败

我正在尝试使用capistrano进行部署,但由于rubyracer gem问题而失败.

我尝试将以下变体添加到gemfile,然后在ubuntu上部署到生产服务器并且没有任何效果:

1)
gem 'libv8', '3.11.8.3'

3)
gem 'therubyracer'
gem 'libv8', '3.3.10.4'

4)
gem 'libv8', '~> 3.11.8.3'
Run Code Online (Sandbox Code Playgroud)

这一切都给出了同样的错误:

安装therubyracer(0.11.0)时发生错误,Bundler无法继续.在捆绑之前确保gem install therubyracer -v'0.11.0'成功.

所以我试着这样做:

group :production do
  gem 'therubyracer', '0.10.2', :platforms => :ruby
end
Run Code Online (Sandbox Code Playgroud)

但是这导致了这个错误:

Bundler could not find compatible versions for gem "libv8":
 In Gemfile:
  therubyracer (= 0.10.2) ruby depends on
  libv8 (~> 3.3.10) ruby
 libv8 (3.11.8.3)
Run Code Online (Sandbox Code Playgroud)

看来我目前在服务器上有两个版本的lib8:

libv8 (3.11.8.4, 3.3.10.4 x86_64-linux)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

rubygems ruby-on-rails

1
推荐指数
1
解决办法
4035
查看次数