小编MBy*_*ByD的帖子

使用utf-8和nohup的python print语句

我有一些打印日志消息的python代码.在命令行运行时,使用utf-8就可以了.包含特殊字符的日志消息打印正常.但是,当在nohup下在后台运行时,它会在utf-8字符上进行barfs.

nohup python2.7 myProgram.py &
Run Code Online (Sandbox Code Playgroud)

我看到的错误是通常的"尝试在ascii中编码utf"错误:

UnicodeEncodeError:'ascii'编解码器无法对位置71中的字符u'\ u2013'进行编码:序数不在范围内(128)

我认为这是因为nohup向python发出信号,表示它没有正常的终端,因此默认为ascii.是否有任何方法可以告诉nohup在启用utf-8的情况下运行还是设置它以便utf-8字符在后台运行nohup时不会导致崩溃?

python utf-8 nohup

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

ExceptionMapper的Jersey/Jackson Exception问题

我正在使用Jersey为外界提供java REST服务.我提供了一些采用JSON的功能,我将Jackson框架与jersey结合使用,将它们转换为POJO.

我有一个问题,如果错误的杰克逊格式被发送到服务器,答案(http响应的内容)是杰克逊特定的异常描述.如果我有一个带有属性"surname"的POJO并将json字符串中的"sursname"发送到服务器,我得到:

Unrecognized field "sursname" (Class XY), not marked as ignorable at [Source: sun.net.httpserver.FixedLengthInputStream@903025; line: 1, column: 49] (through reference chain: XY["sursname"])
Run Code Online (Sandbox Code Playgroud)

这很好,但我想有自己的响应内容,例如我自己的错误代码.我已经编写了一个自定义的ExceptionMapper,它应该映射所有Throwables.

@Provider
public class WebserviceExceptionMapper implements ExceptionMapper<Throwable> {

@Override
public Response toResponse(Exception e) {
    e.printStackTrace();
    return Response.status(400).entity("{\"errorcode\":\"CRITICAL_ERROR\"}").type(MediaType.APPLICATION_JSON).build();
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎在调用我的webservice方法之前抛出了jackson异常,所以我没有机会映射它?

有没有人有想法?非常感谢,对不起我的英语;)

java exception-handling exception jersey jackson

15
推荐指数
2
解决办法
6028
查看次数

外部与超级课程

超级优先级比外级优先级高吗?

考虑我们有三个类:

  1. ClassA的
  2. ClassB的
  3. ClassB中的匿名类,它扩展了ClassA

ClassA.java:

public class ClassA {
    protected String var = "A Var";

    public void foo() {
        System.out.println("A foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

ClassB.java:

public class ClassB {
    private String var = "B Var";

    public void test() {

        new ClassA() {
            public void test() {
                foo();
                System.out.println(var);
            }
        }.test();
    }

    public void foo() {
        System.out.println("B foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时new ClassB().test(),我得到以下输出(这是非常期待的):

A foo()
A Var
Run Code Online (Sandbox Code Playgroud)

问题:它是在某个地方定义的,内部类首先从超类中获取(方法和成员),然后从外部类中获取,还是依赖于JVM编译器实现?我查看了JLS(§15.12.3),但找不到任何参考,也许有人指出,但我误解了一些条款?

java inheritance inner-classes

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

Android MapActivity:无法获得连接工厂客户端

我正在尝试使用Google API示例项目中提供的地图演示.我正在使用AVD并尝试使用版本8,10和11并获得相同的问题.

我已经生成了自己的调试密钥并添加到项目中.我可以看到应用程序启动时的地图,并可以放大等 - 所以我得到地图图块,很好.是的 - 我在清单文件中设置了正确的权限和库(根据示例).

但是,我无法通过DDMS或Telnet在地图上设置位置.我在LogCat中看到以下错误:MapActivity:无法获取连接工厂客户端

我已经阅读了很多关于这个问题的线索,但它们似乎总是由于API密钥错误而导致的; 我没有,因为我正在检索地图图块.

所以我创建了自己的项目来进一步测试,并在初始化我的地图时执行以下代码:

    myLocationOverlay = new MyLocationOverlay(this, mapView);
       mapView.getOverlays().add(myLocationOverlay);
       myLocationOverlay.enableCompass();
       myLocationOverlay.enableMyLocation();
       Log.i("funkatron: ", "ABOUT TO CALL RUN ON FIRST FIX");
       myLocationOverlay.runOnFirstFix(new Runnable() {
           public void run() {
               String loc = "we have a location, executing AnimateTo().
"+myLocationOverlay.getMyLocation().toString();
               Log.i("funkatron:",loc);

mapController.animateTo(myLocationOverlay.getMyLocation());
           }
       });
Run Code Online (Sandbox Code Playgroud)

我看到我的第一个日志语句,但从来没有第二个,并且"MapActivity:无法获取连接工厂客户端"在此时被写入LogCat.

我已经读过SDK v8模拟器存在问题,所以我尝试了v10和11 - 但仍然没有乐趣.我还没有在实际的设备上试过这个 - 很快就会做到.

任何关于这个问题的帮助将不胜感激 - 这真让我感到困惑;)

干杯

android google-maps mapactivity mylocationoverlay

14
推荐指数
1
解决办法
6万
查看次数

View.OnClickListener,方法还是类?

抱歉,如果这个问题很愚蠢,但我无法理解Java语法.我学习了C/C++
我知道View是一个很好的类..但我不明白View.OnClickListener()是不是方法.
我怀疑它,除非它返回一个对象?
我认为View是一个具有静态OnClickListener成员对象的类,对我来说没有意义..
可以解释一下这行代码发生了什么吗?

button1 = (Button) findByView(R.id.button1)  ;
    button1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

那么这段代码发生了什么?

Button1 是对xml文件中button1对象的引用.

button1对象有一个成员对象setOnClickListener,我从它的名字我假设将事件初始化为按钮或其他东西.但它收到了View.OnClicListener()对象.

我很困惑.onClick收到一个View对象所以onClickListener不是一个对象返回一个View对象?? 我根本得不到它.

有人可以解释一下这行中发生的事情View.onClickListener()是另一种说法new this吗?

java android

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

通过访问android中的wifi安全例外

请参阅以下代码

    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    if (wifi.isWifiEnabled() == false)
    {
        Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
        wifi.setWifiEnabled(true);
    }   
Run Code Online (Sandbox Code Playgroud)

虽然我已将清单文件中的权限添加为

   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.wifi"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />
<user-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

但它仍然给出以下错误

   11-23 15:18:24.399: E/AndroidRuntime(6800): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.wifi/com.test.wifi.WifiDemoActivity}: java.lang.SecurityException: WifiService: Neither user 10082 nor current process has android.permission.ACCESS_WIFI_STATE.
Run Code Online (Sandbox Code Playgroud)

请帮助解释为什么会这样

android wifi

14
推荐指数
3
解决办法
2万
查看次数

equal()和equalsIgnoreCase()对于相等的字符串返回false

我在mac上使用eclipse IDE(版本:3.4.2),我遇到了以下问题.

当使用equal()或equalsIgnoreCase()方法比较字符串时,即使字符串相等,我也会收到false.例如,下面的代码将以下条件视为false,即使值[0] ="debug_mode"

if (values[0].equalsIgnoreCase("debug_mode")) 
    debug_mode = true;
Run Code Online (Sandbox Code Playgroud)

这是以下循环的一部分:

String value = dis.readLine();
String values[] = value.trim().split("=");
if (values.length >= 2)
{
    Config.prnt_dbg_msg(values[0] + "\t" + values[1]);
    if (values[0].equalsIgnoreCase("debug_mode")) 
        debug_mode = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("debug_query_parsing")) 
        debug_query_parsing = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("username")) 
        Connection_Manager.alterAccessParameters(values[1], null, null);
    if (values[0].equalsIgnoreCase("password")) 
        Connection_Manager.alterAccessParameters(null, values[1], null);
if (values[0].equalsIgnoreCase("database")) 
        Connection_Manager.alterAccessParameters(null, null, values[1]);
    if (values[0].equalsIgnoreCase("allow_duplicate_entries")) 
        allow_duplicate_entries = isTrue(values[1]);
}                         
Run Code Online (Sandbox Code Playgroud)

我尝试使用value[0].equal("debug_mode")并得到了相同的结果.有人知道为什么吗?

java string string-comparison

13
推荐指数
2
解决办法
4万
查看次数

getsockname总是返回0.0.0.0?

这是代码.它与此类似问题的代码相同:http://monkey.org/freebsd/archive/freebsd-stable/200401/msg00032.html.当我运行它时,我总是得到输出:

听取0.0.0.0:54493或其他什么.显然端口发生了变化,但我不知道为什么我一直在获得0.0.0.0的IP地址.我错过了什么吗?

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main()
{
    int sock;
    int len = sizeof(struct sockaddr);
    struct sockaddr_in addr, foo;

    if((sock=socket(AF_INET, SOCK_STREAM, 0))<0)
    {
        exit(0);
    }

    memset(&addr, 0, sizeof(struct sockaddr_in));
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = INADDR_ANY;
    addr.sin_port = htons(0);

    if(bind(sock, (struct sockaddr *) &addr, sizeof(struct sockaddr_in))<0)
    {
        perror("bind");
        exit(0);
    }

    if(listen(sock, 5)<0)
    {
         perror("listen");
         exit(0);
    }

    getsockname(sock, (struct sockaddr *) &foo, &len);
    fprintf(stderr, "listening on %s:%d\n", …
Run Code Online (Sandbox Code Playgroud)

c sockets networking

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

data.getExtras().get("data")android中低分辨率图像的结果

在我的应用程序中,我从相机拍摄照片,然后我得到该图片在相同的图片上做一些图像处理操作,但当我得到这个图片与data.getExtras().get("数据"),图片来了低分辨率而不是真正的决议.这个问题可能是什么原因?

代码就是这样;

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
          startActivityForResult(intent , CAMERA_PIC_REQUEST);
    }

    protected void onActivityResult(int requestCode , int resultCode , Intent data )
    {
        if( requestCode != 0)
        { 
            ImageView image = (ImageView)findViewById(R.id.imageView1);
                thumbnail = (Bitmap)data.getExtras().get("data");
Run Code Online (Sandbox Code Playgroud)

android image bitmap android-intent

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

Android - 自动覆盖触摸/突出显示图像按钮状态

是否可以使用ImageButton来触摸和突出显示状态,而不需要在Android上再增加2个图像资源(另外6个,考虑到h/m/ldpi)?我基本上都在寻找类似于iOS的行为,其中操作系统可以在按钮的触摸状态下放置半alpha覆盖.

我已经尝试setColorFilter(0xFF000000, Mode.MULTIPLY)在onTouch监听器中使用,结果与我之后的结果非常接近 - 但我不确定状态处理的最佳方式来实现这一点:

  1. touchDown事件 - >更改颜色叠加.
  2. touchUp event - >删除颜色叠加,并执行按钮操作.

有更好的方法......或者有人可以帮助填补空白吗?

我不想使用单独的图像有几个原因 - 它是一个iPhone端口,我还没有适当的资产,并且需要更多的设计师时间考虑我有低/中/高创意到考虑.

谢谢!

android overlay imagebutton

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