小编Alv*_*nte的帖子

EventSource中的HTTP授权标头(服务器发送事件)

我需要为HTML5 EventSource设置一个Authorization标头.由于Websockets出现后服务器发送事件似乎被废弃,我找不到任何有用的文档.我已经发现的方法是在URL中传递授权数据......但我不喜欢这种方法.

我正在使用AngularJS并在$ httpProvider上设置拦截器,但是AngularJS没有拦截EventSource,所以我无法添加任何头.

javascript html5 http websocket angularjs

30
推荐指数
6
解决办法
2万
查看次数

当使用PagerAdapter的getPageWidth时,Android ViewPager滚动问题只有一个项目

我有一个带有自定义PagerAdapter的ViewPager,它覆盖方法getPageWidth返回0.3f,所以我可以在屏幕上显示多个页面,如下面的博客所示:

http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

在这种情况下,ViewPager开始为空,用户开始按要求填充页面(图像).图像从左到右填充.一切正常,页面是动态创建的,当有多个图像时,很容易在它们之间滑动.

但是,实例化的页面少于三页时会出现问题.从右侧(无内容)到左侧的滑动手势会产生闪烁,页面从左向右交替移动,就像ViewPager试图将第一页向右移动但稍后转向其原始位置一样.这在整个手势期间发生,并在离开手势时停止.正如我所说,当有足够的页面覆盖整个屏幕宽度并且需要真正的滚动时,这不会发生.

有任何想法吗?

android android-viewpager android-pageradapter

17
推荐指数
2
解决办法
4189
查看次数

Boost(C++)中没有类跟踪的派生类序列化

通过基类指针序列化派生类时,我遇到了一些boost序列化问题.我需要一个系统,它在系统中接收某些对象时将其序列化,因此我需要随着时间的推移进行序列化.这不是一个真正的问题,因为我可以boost::archive::binary_oarchive在需要时打开并序列化对象.我很快注意到boost是通过内存地址执行对象跟踪,所以第一个问题是共享相同内存地址的不同对象被保存为同一个对象.这可以通过在所需的派生类中使用以下宏来修复:

BOOST_CLASS_TRACKING(className, boost::serialization::track_never)

这样可以正常工作,但同样,当基类不是抽象类时,基类没有正确序列化.在以下示例中,基类序列化方法仅使用第一个对象调用一次.在下文中,boost假定此对象之前已被序列化,尽管该对象具有不同的类型.

#include <iostream>
#include <fstream>
#include <boost/serialization/export.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/shared_ptr.hpp>
#include <boost/archive/archive_exception.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>

using namespace std;

class AClass{
public:
    AClass(){}
    virtual ~AClass(){}
private:
    double a;
    double b;
    //virtual void virtualMethod() = 0;
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & a;
        ar & b;
        cout << "A" << endl;
    }
};
//BOOST_SERIALIZATION_ASSUME_ABSTRACT(Aclass)
//BOOST_CLASS_TRACKING(AClass, boost::serialization::track_never)

class BClass …
Run Code Online (Sandbox Code Playgroud)

c++ serialization boost boost-serialization

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

如何无限期建立TCP连接?

我需要无限期地建立TCP连接(尽可能).不是自己的服务器,所以我们不能改变它的工作方式.这个服务器每分钟都需要一些ping才能知道连接是否存在.如果服务器在几分钟(少于五分钟)后没有收到ping,则会关闭连接和会话.通过这种方式,我需要维护与服务器的TCP连接,并能够在指定的时间段发送ping.

目前我的Android服务标志为"正在进行",因此Android不应该杀死它(至少通过正常程序).Android服务似乎运行良好,ping定期发送.然而,当服务在移动电话(而不是模拟器)上运行并且它变得空闲时,android似乎在CPU休眠时冻结服务,因此TimerTask发送ping停止工作并且连接断开.

我试图通过部分唤醒锁来锁定手机进入睡眠状态,它解决了问题,但手机耗电太多,这是不可行的.

我注意到AlarmManager可以帮助完成这项任务,所以我想安排一个警报来更新正在运行的服务,然后发送ping.这将使CPU进入休眠状态并发送ping.但是每分钟安排一个警报可能也是如此耗费电量?

我目前还没有测试过这种方法,但是可行吗?是否有更好的方法来保持这种TCP连接?像Gmail这样的Android服务如何解决这类问题?

connection service android tcp alarmmanager

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

Android(ActionBarSherlock)有没有办法在纵向和横向中保持相同的ActionBar高度?

我最近几天一直在使用ActionBar和ActionBarSherlock,在ActionBar中填写一些信息时遇到了一些问题.

当应用程序以纵向模式运行时,ActionBar看起来很好,并且可以显示所有数据,例如:

ActionBar处于纵向模式

但当我将应用程序切换为横向显示时,会裁剪一些数据:

ActionBar在横向模式下

您可以注意到由于ActionBar的新高度,状态图标和电子邮件的裁剪方式.

在这种情况下,我想保持相同的纵向和横向大小,以便应用程序看起来很好.我无法减小操作栏标题的字体大小,因为它可能包含其他图标.

我将这些图标放在操作栏标题和副标题中的方式是使用Html.fromHtml

有什么想法可以解决这个问题?我正在使用ActionBarSherlock库!

android landscape portrait actionbarsherlock android-actionbar

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

Android IntentCompat makeRestartActivity在2.3中没有任何作用

我在清除整个活动堆栈和运行新活动时遇到问题.在我的应用程序中,用户可以导航到其配置文件并关闭其会话.屏幕堆栈如下:

StartActivity(自动完成,因此不会保留在堆栈中)> MainActivity> UserProfileActivity

当用户单击"从配置文件注销"时,它应该打开将显示注册屏幕的StartActivity.我们的想法是清除所有活动堆栈,因此用户无法继续注销:

UserProfileActivity> StartActivity(并且堆栈中没有任何其他内容)

我尝试过基于IntentCompat makeRestartActivity的解决方案,该解决方案应该从启动器图标启动时启动所需的活动.它在Android 4. +中完美运行,但它在Android 2.3上无效.代码如下(取自此链接):

Intent intentToBeNewRoot = new Intent(UserProfileActivity.this, StartActivity.class);
ComponentName cn = intentToBeNewRoot.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
Run Code Online (Sandbox Code Playgroud)

我在这里看到了另一个解决方案,基本上用一些标志创建一个intent:

Intent intent = new Intent(getApplicationContext(), StartActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但在按回StartActivity后,它返回到MainActivity(存在于堆栈中),如果没有登录,它应该是不可用的.

那么,有没有办法清除整个活动堆栈,适用于所有Android版本?

android android-intent android-support-library

6
推荐指数
0
解决办法
622
查看次数

Amazon EC2,S3,REST API以及如何向用户正确提供内容

我在Amazon EC2实例中部署了一个REST服务器.我还配置了一个Amazon S3存储桶来存储用户在与API交互时生成的所有数据.存储的主要信息是图像.用户可以通过某些URL和凭据执行PUT HTTP请求来上载图像.PUT请求可以通过EC2实例完成,因为上传需要被授权并且用户不能直接访问S3实例.当EC2收到有效的PUT申请时,我使用AWS PHP SDK将对象上传到S3存储桶.我使用的方法是putObject.对于第一部分,我认为没有其他选择.但是,为了允许用户下载以前的上传,我有两种不同的选择:

  • 第一个是向用户提供带有指向S3桶密钥的文件的URL,因为文件是以公共方式上载的.因此,用户可以直接从S3服务器下载映像,而无需与EC2进行任何交互.

  • 第二个是使用EC2实例上运行的REST API在执行一些HTTP GET请求时提供图像内容.在这种情况下,我应该使用AWS PHP SDK从S3服务器"下载"图像并将其返回给用户.使用的方法是getObject.

  • 对我来说似乎很脏的另一个可能的解决方案是提供从EC2实例到S3存储桶URL的HTTP重定向,但是,用户客户端应该实现两个连接以检索简单映像(如果用户在移动设备上工作则是一件坏事) ).

我已经实现了第二个选项,似乎工作正常.

我的问题是:如果通过REST API从EC2实例访问文件,从S3实例下载内容,则会假设直接访问带有DNS服务器URL的文件会产生很大的开销.两个实例都在同一区域(爱尔兰)运行.我不知道如何根据带宽计算从S3到EC2(或反之亦然)的传输.来自S3-EC2用户的转移是否会比S3用户计算两倍?这种转移是通过某种局域网完成的吗?

我更喜欢第二种方式,因为我可以控制内容访问,记录访问每个文件的人,更改存储桶对用户是透明的,等等.

谢谢!

php amazon-s3 amazon-ec2 amazon-web-services

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

后端的iPhone Google+登录和OAuth2

在此链接中查看使用Google+ SDK for iOS的教程,我可以配置项目并授予我的应用程序以获取访问令牌.但是,我不想在设备中使用令牌来获取其名称,电子邮件等.我想获取临时访问代码(可以更改为OAuth2令牌)或id令牌,就像我在Android中一样应用.这被谷歌称为跨客户端身份.

这个想法是后端服务器将收到此交换代码,并将生成访问令牌以获取用户配置文件,电子邮件等.然后用户注册此信息.但是,iOS应用程序生成的访问令牌只能由应用程序本身使用,因为使用的应用程序ID是iOS应用程序的ID.我试图用服务器应用程序ID更改应用程序ID,但随后它会抛出redirect_uri_mismatch.

尝试直接在服务器中使用访问令牌会引发Google_OAuth_Exception,因为服务器客户端ID不等于应用程序客户端ID.

我有另一种基于打开网页的方法,但我想使用原生的Google+登录流程.

任何的想法?

iphone ios google-plus google-oauth

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

提升多边形序列化:环

根据这个相关问题(Boost Polygon Serialization).我试图用Boost序列化多边形.我现在的问题是我正在尝试使用自定义X,Y,点的多边形编译示例,但编译器在编译时抛出此错误:

error: 'class boost::geometry::model::ring<boost::geometry::model::d2::point_xy<double> >' has no member named 'serialize'
Run Code Online (Sandbox Code Playgroud)

就像没有定义任何序列化环的功能一样.由于环从std :: vector扩展,并且如相关问题中所述,因此没有必要为其序列化定义方法.但是编译器抱怨道.

这里我有一个关于定义多边形及其序列化的完整示例:

#include <fstream>

#include <boost/serialization/vector.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/tracking.hpp>

#include <boost/geometry/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/geometry/geometries/ring.hpp>

#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

typedef boost::geometry::model::d2::point_xy< double > point;
typedef boost::geometry::model::ring< point > ring;
typedef boost::geometry::model::polygon< point > polygon;

namespace boost{
        namespace serialization{

                template<class Archive>
                inline void serialize(Archive & ar, point &point, const unsigned int file_version)
                {
                        std::cout << "Point: …
Run Code Online (Sandbox Code Playgroud)

c++ serialization boost boost-serialization boost-geometry

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

AWS EC2和$ _SERVER PHP变量上的Crontab

我的服务器中有一些PHP脚本用于数据库维护,需要定期执行.显然,最简单的解决方案是使用system cron安排运行.

脚本需要从访问一些服务器变量$ _SERVER,如数据库的主机名,cron的参数,等等.

我可以从命令行运行预定的cron命令没有任何问题,一切似乎都正常工作(调用php filename.php之类的东西).但是,当从cron执行相同的命令时,脚本将失败,并且报告的错误如下所示:

PHP注意:未定义的索引:第8行的/var/app/current/app/xx/Db/ConnectionFactory.php中的RDS_DATABASE PHP

似乎从cron运行时$ _SERVER变量未正确初始化,但它可以从命令行运行.我试过用crontab -u ec2-user -e但没有运气.

我不想使用wget来运行脚本,因为它增加了一些开销,并且隐藏了从HTTP访问脚本.

有关从命令行成功访问$ _SERVER的任何提示,但从crontab运行时失败?

php cron crontab amazon-ec2 amazon-web-services

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