小编Mag*_*gie的帖子

模拟Android的低网络连接

我想测试我的应用程序的低网络连接情况.除了站在电梯里,最好的办法是什么?我试过用铝箔包裹我的手机,但它没有多大帮助.

我需要在真实设备上测试它,而不是在模拟器中测试它.

android connectivity

207
推荐指数
14
解决办法
11万
查看次数

android中xn属性中@null的含义

我在一个xml布局中找到了以下属性:

android:background="@null"
Run Code Online (Sandbox Code Playgroud)

是什么意思@null?指定background ="@ null"和省略背景属性有什么区别?

android-layout

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

如何在mac OS中创建相对符号链接?

如何创建一个始终指向原始文件夹两级的相对符号链接?我想创建一个可以在任何机器上运行的独立于计算机的别名,前提是原始文件夹存在两个级别.

基本上,我想要的是这样的:

  |-- Original    
  |-- folder 1    
    |-- folder 2
      |-- Original alias   
Run Code Online (Sandbox Code Playgroud)

我需要这个用于我的XCode项目结构.我试过了:

ln -s Original /../../Original
Run Code Online (Sandbox Code Playgroud)

但它会创建一个找不到其原始文件夹的别名.

macos symlink

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

在C中通过套接字传输整数

int在C中传输套接字的适当方法是什么?
到目前为止我所做的是:

int n = 4;
int tmp = htonl(n);
write(socket, &tmp, sizeof(tmp));
Run Code Online (Sandbox Code Playgroud)

int tmp,n;
read(socket, &tmp, sizeof(tmp));
n = ntohl(tmp);
Run Code Online (Sandbox Code Playgroud)

但是,收到的整数有时为0.并非总是如此,而是说5次中的2次.它永远不会是其他值,为什么?

更新:读取的返回值为-1,错误为:

Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

c sockets int

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

XCode库搜索路径

对于我的iOS项目,我有一个特定的文件夹结构:

|-- root    
|     |-- src
|     |  |-- xcode                            
|     |     |-- MyProject
|     |        |-- <sources>, ...
|     |     |-- MyProject.xcodeproj
|-- library
Run Code Online (Sandbox Code Playgroud)

在构建设置中,我想添加指向"库"的库搜索路径,它与"根"目录位于同一级别.当我把$(SRCROOT),搜索路径正确指向root/src/xcode目录.但是,我不知道如何在项目的src"上方"查找库两个文件夹.
我试过"../../$(SRCROOT)",但没有效果.

它甚至可能吗?

macos xcode

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

iPhone CorePlot正确格式化y轴

我正在使用CorePlot来绘制一组数据.我的x轴的数据由日期组成,而我的y轴的数据由浮点数组成(然后我将其转换为NSNumber).我从Feed中获取数据,并且Feed返回具有大量小数的数字,例如:0.46673718852844,4.59392222219,353.1293012045.我正在使用以下代码来正确格式化y轴:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:3];
[numberFormatter setPositiveFormat:@"###0.000"];    
CPTXYAxis *y = axisSet.yAxis;
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.minorTicksPerInterval = 1;
y.preferredNumberOfMajorTicks = 5;
y.labelFormatter = numberFormatter;
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,一切正常.但是,有时它会沿轴的多个位置显示相同的值.见下图:

在此输入图像描述

值正确显示,我只想避免不必要的(0.466)标签.我甚至尝试将数字四舍五入到numberForPlot方法中:

if(fieldEnum == CPTScatterPlotFieldY)
{ 
        float floatNum = r.value;
        floatNum *= 1000;
        int intValue = (int) floatNum;
        float decimal = floatNum - intValue;
        if (decimal > 0.5) {
            intValue++;
        }
        floatNum = intValue /1000.0;
        return [NSNumber numberWithFloat:floatNum];

}
Run Code Online (Sandbox Code Playgroud)

但标签没有区别.

iphone core-plot

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

ASN1_INTEGER到ASN1_STRING

我使用openssl获取有关x509证书的数据.有没有办法将ASN1_INTEGER转换为ASN1_STRING,这可以很容易地转换为char数组?有没有办法将其转换为任何其他人类可读的格式?

编辑:我正在使用为iOS编译的openssl,因为我正在使用iOS项目.这是我用来从证书中提取序列号的代码:

ASN1_INTEGER *serial = X509_get_serialNumber(certificateX509);
long value = ASN1_INTEGER_get(serial);
NSLog(@"Serial %ld", value);
Run Code Online (Sandbox Code Playgroud)

certificateX509 是一个有效的X509对象,我已设法从它获得一些其他字段(发行人名称,到期日期等)

编辑2:
我终于找到了一个解决方案,这可能不是最简单的解决方案:

 ASN1_INTEGER *serial = X509_get_serialNumber(certificateX509);
 BIGNUM *bnser = ASN1_INTEGER_to_BN(serial, NULL);
 int n = BN_num_bytes(bnser);
 unsigned char outbuf[n];
 int bin = BN_bn2bin(bnser, outbuf);
 char *hexbuf = (char*) outbuf;
Run Code Online (Sandbox Code Playgroud)

然后,hexBuf包含其值需要读取为十六进制整数的字符,以便检索逻辑值.我使用NSMutableString来创建一个人类可读的字符串:

NSMutableString *str = [[NSMutableString alloc] init];
for (int i=0; i<n; i++) {
    NSString *temp = [NSString stringWithFormat:@"%.6x", hexbuf[i]];
    [str appendString:[NSString stringWithFormat:@"%@ ", temp]];
}
Run Code Online (Sandbox Code Playgroud)

如果有一种更简单的方法,我真的很想知道它.

c openssl x509

7
推荐指数
3
解决办法
7689
查看次数

在iPhone的钥匙串中存储和访问x509证书

第三方应用程序可以访问iPhone的钥匙串以便添加X509证书吗?如果是,怎么办?
如果没有,它可以访问钥匙串只是为了从中读取证书吗?

基本上,我需要的是:
1)我的应用程序需要访问https站点,该站点使用未由任何可信CA签名的证书.当尝试通过https连接时,我得到一个例外.
2)如果我能以编程方式将根证书添加到钥匙串中,那就太棒了; 如果用户可以通过Safari访问该站点,接受其证书,然后使用我的应用程序访问该站点就足够了.

到目前为止,我一直在使用以下界面来超越https:

@interface NSURLRequest (DummyInterface)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.

有什么建议?

iphone ssl https

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

java LinkedHashSet

我一直在学习的OCJP(原SCJP)和我碰到下面的例子,它使用LinkedHashSet传来:

public class Test{

    int size;

    public Test(int s){
       this.size = s;
    }

    @Override
    public boolean equals(Object obj) {
         return (this.size == ((Test)obj).size);
    }

    public static void main(String[] args) {
      LinkedHashSet<Test> s = new LinkedHashSet<Test>();
      s.add(new Test(1));
      s.add(new Test(2));
      s.add(new Test(1));
      System.out.println(s.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,是什么是显示的问题,如果:
1)实现保持如
2)的hashCode覆盖插入类测试,如下所示:

public int hashCode() {return size/5};
Run Code Online (Sandbox Code Playgroud)

运行和编译代码表明第一种情况下set的大小是3,而在第二种情况下它是2.为什么?

在情况1中,虽然equals方法被覆盖,但它永远不会被调用.这是否意味着如果不覆盖hashCode方法,add()方法不会检查对象是否相等?
在情况2中,具有给定实现的hashCode和给定的Test对象集始终返回相同的数字.这与默认的hashCode实现有什么不同,为什么它会导致equals被调用?

java hash scjp linkedhashset

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

android在活动和广播接收器之间进行通信

我有一个活动,显示从服务器获取的一些数据.如果没有可用的连接,活动将显示一些缓存数据; 如果连接可用,则活动将获取数据并显示它.这一切都按预期工作.
现在,我想让我的活动在连接发生后立即重新加载数据.我正在使用一个扩展BroadcastReceiver的简单Receiver:

public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null) {
            //what to do here? 
        } 
     }
}
Run Code Online (Sandbox Code Playgroud)

广播接收器在我的清单文件中声明如下:

<receiver android:name=".ConnectionChangeReceiver"
          android:label="NetworkConnection">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

在我的活动中,我注册了接收器:

ConnectionChangeReceiver receiver = new ConnectionChangeReceiver(); this.registerReceiver(接收者,新的IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));

现在,我很困惑,接下来要做什么.当执行onReceive方法时,如何让我的活动意识到这一点?我知道我可以开始一项新活动,但这不是我想要的.我应该将ConnectionChangeReceiver声明为我的活动的私有类吗?或者还有其他解决方案吗?

android broadcastreceiver

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