小编exh*_*uma的帖子

手动安装更新的APK失败,"签名与以前安装的版本不匹配"

我已经建立了一个愚蠢的应用程序,以便在几个朋友之间分享.无需将其放在app-store上.

我建立了第一个apk(已签名),将其上传到网络服务器,一切运作良好.

出现了一个小问题,我修复了它,重新构建,使用相同的密钥库签名并再次上传.现在看来我无法从新安装apk.调试器告诉我:

signatures do not match the previously installed version
Run Code Online (Sandbox Code Playgroud)

所以我通过打开app抽屉并将其拖到"卸载"按钮上来卸载旧版本.打开"设置 - >应用程序"时,我再也看不到它了.我在设备上看不到任何应用程序的痕迹.

但我仍然收到上述错误消息.

是否有可能某些信息仍然存在于某个设备上?有什么方法可以验证吗?

android

79
推荐指数
3
解决办法
6万
查看次数

C#反模式

简而言之:我发现Java反模式是不可或缺的资源.适合初学者和专业人士.我还没有为C#找到这样的东西.所以我将这个问题作为社区维基开放,并邀请所有人分享他们对此的了解.由于我是C#的新手,我对此很感兴趣,但不能从一些反模式开始:/

以下是我发现C#而不是其他语言的答案.

我只是复制/粘贴这些!考虑看看这些评论.


投掷 NullReferenceException

抛出错误的异常:

if (FooLicenceKeyHolder == null)
    throw new NullReferenceException();
Run Code Online (Sandbox Code Playgroud)

属性与公共变量

类中的公共变量(改为使用属性).

除非该类是一个简单的数据传输对象.


不理解bool是一个真正的类型,而不仅仅是一个约定

if (myBooleanVariable == true)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好

if (myBooleanVariable != false)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样的结构通常使用CC++开发,其中一个布尔值的想法只是一个约定(0 ==假的,什么都为true); 在C#或其他具有真正布尔值的语言中,这不是必需的(或可取的).


运用 using()

没有using在适当的地方使用:

object variable;
variable.close(); //Old code, use IDisposable if available.
variable.Dispose(); //Same as close.  Avoid if possible use the using() { } pattern.
variable = null; //1. in release optimised away.  2. C# is …
Run Code Online (Sandbox Code Playgroud)

c# anti-patterns

55
推荐指数
21
解决办法
3万
查看次数

'git submodule update --init --recursive'VS'git submodule foreach --recursive git submodule update --init'

我有git repo,它有嵌套的子模块.以下2个命令有什么区别?

git submodule update --init --recursive

git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)

git git-submodules

50
推荐指数
3
解决办法
5万
查看次数

500错误apache日志中没有任何内容

我目前正在开发一个基于的应用程序flask.它运行良好,可以手动生成服务器app.run().我已经尝试过mod_wsgi了.奇怪的是,我得到500错误,日志中没有任何内容.我调查了一下,这是我的发现.

  • print >>sys.stderr, "hello"预期的那样插入一行.该消息显示在错误日志中.
  • 在不使用模板的情况下调用方法时,它可以正常工作.没有500错误.
  • 使用简单的模板也可以正常工作.
  • 但是只要我在模板触发数据库访问(例如循环查询),我就会收到错误.

我的直觉告诉我,SQLAlchemy会发出错误,也许某些日志配置会导致日志在应用程序的某个时刻被丢弃.

另外,为了测试,我使用的是SQLite.据我所知,这只能从一个线程访问.因此,如果mod_wsgi生成更多线程,它可能会破坏应用程序.

我有点不知所措,因为它只会打破后面的运行mod_wsgi,这似乎也吞噬了我的错误.我该怎么做才能使错误冒泡到apache error_log中?

作为参考,代码可以在这个github永久链接上看到.

python apache mod-wsgi sqlalchemy flask

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

Apache SetEnv无法按预期使用mod_wsgi

在我写的烧瓶应用程序中,我使用了可以使用环境变量配置的外部库.注意:我自己写了这个外部库.所以我可以在必要时进行更改.从命令行运行时,运行flask服务器:

# env = python virtual environment
ENV_VAR=foo ./env/bin/python myapp/webui.py
Run Code Online (Sandbox Code Playgroud)

这一切都如预期的那样.但是在将它部署到apache后,使用SetEnv不再起作用了.事实上,打印出os.environstderr(所以它显示了在Apache日志显示,该wsgi过程似乎是在一个非常不同的环境(一个,os.environ['PWD']好像是这样了.其实,它指向我的发展的文件夹.

为了帮助确定问题,以下是作为独立的hello-world应用程序的应用程序的相关部分.错误输出和观察结果都在帖子的最后.

App文件夹布局:

Python应用程序:

.
??? myapp.ini
??? setup.py
??? testenv
    ??? __init__.py
    ??? model
    ?   ??? __init__.py
    ??? webui.py
Run Code Online (Sandbox Code Playgroud)

Apache文件夹(/var/www/michel/testenv):

.
??? env
?   ??? [...]
??? logs
?   ??? access.log
?   ??? error.log
??? wsgi
??? app.wsgi
Run Code Online (Sandbox Code Playgroud)

MYAPP.INI

[app]
somevar=somevalue
Run Code Online (Sandbox Code Playgroud)

setup.py

from setuptools import setup, find_packages

setup(
    name="testenv",
    version='1.0dev1',
    description="A …
Run Code Online (Sandbox Code Playgroud)

python apache mod-wsgi flask

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

如何在swing中手动调用Action?

对于我的生活,我似乎无法找到有关Java Swing Actions的详细信息:'(当我遇到它们时,我立即意识到它们的用处.到目前为止,这一切都很容易使用.现在我遇到了一件小事:如何我手动运行它们?我的意思是代码?注意我正在使用Netbeans构建GUI(如果这有任何区别).我已经到了:

Application a = Application.getInstance(JPADemoApp.class);
ApplicationContext ctx = a.getContext();
ActionMap am = ctx.getActionMap(JPADemoView.class, this.app);
Action act = am.get("fetchOrders");
Run Code Online (Sandbox Code Playgroud)

(我在单独的行上写了所有内容以简化调试)

所以现在我有一个对Action的有效引用.现在我该如何运行它?

java swing action

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

使用`os.path.exists`的奇怪`UnicodeEncodeError`

在Web应用程序(使用Flask)中,我收到以下错误:

Unable to retrieve the thumbnail for u'/var/data/uploads/2012/03/22/12 Gerd\xb4s Banjo Trio 1024.jpg'
Traceback (most recent call last):
 File "/var/www/beta/env/lib/python2.7/site-packages/dblib-1.0dev3-py2.7.egg/dblib/orm/file.py", line 169, in get_thumbnail
   if not exists(filename):
 File "/usr/lib/python2.7/genericpath.py", line 18, in exists
   os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb4' in position 52: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

请注意,我repr()在记录的错误中包含了文件名.这表明文件名作为Unicode实例传递.这么多是正确的......

如果我使用python解释器运行罪魁祸首,它按预期工作:

>>> from os.path import exists
>>> exists(u'/var/data/uploads/2012/03/22/12 Gerd\xb4s Banjo Trio 1024.jpg')
True
Run Code Online (Sandbox Code Playgroud)

很明显,在Flask环境中运行时,Python认为它应该使用ASCII编解码器而不是UTF-8编码文件名.我使用Apache httpd后面的mod_wsgi部署了应用程序.

我想我必须告诉其中一个人在某处使用UTF-8?但是哪里?

python apache unicode flask

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

如何在GIT中标记单个文件

我对git很新.我目前正试图熟悉它,通过使用它来跟踪我正在维护的一些excel文件中的更改,以跟踪我参与的一些连续活动.所有文件都在一个存储库中.我想用它们的版本分别标记每个文件.这可能吗?到目前为止,我发现了标记整个存储库的功能.如果我想做的是错的,请告诉我最佳做法.

提前致谢.

编辑

当我这样做的时候,我故意删除了一个先前的标签,使整个存储库被标记为(因为我没有找到标记单个文件的方法)为v1.0.由于我现在想要使用文件名重置标记的名称并且对事情的发生方式非常满意,如何回滚删除并重命名以前的标记(已删除的标记)?

git version-control git-svn

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

什么时候git修剪对象:为什么"git gc"没有删除提交?

我正在开发一个git课程,并且想提一下,在跑步之前,丢失的裁判并没有真正丢失git gc.但验证这一点,我发现事实并非如此.即使在运行git gc --prune=all --aggressive丢失的裁判后仍然存在.

显然我误解了一些东西.在说出不正确的课程之前,我想直截了当地说明事实!这是一个示例脚本说明了效果:

 #!/bin/bash

 git init

 # add 10 dummy commits
 for i in {1..10}; do
     date > foo.txt
     git add foo.txt
     git commit -m "bump" foo.txt
     sleep 1
 done;

 CURRENT=$(git rev-parse HEAD)
 echo HEAD before reset: ${CURRENT}

 # rewind
 git reset --hard HEAD~5

 # add another 10 commits
 for i in {1..10}; do
     date > foo.txt
     git add foo.txt
     git commit -m "bump" foo.txt
     sleep 1
 done;
Run Code Online (Sandbox Code Playgroud)

这个脚本将添加10个虚拟提交,重置为过去的5个提交,并添加另外10个提交.在重置之前,它将打印它当前HEAD的哈希值.

希望CURRENT在跑步后失去对象 …

git git-gc

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

创建一个python win32服务

我目前正在尝试使用pywin32创建win32服务.我的主要参考点是本教程:

http://code.activestate.com/recipes/551780/

我不明白的是初始化过程,因为守护进程永远不会被Daemon()直接初始化,而是我的理解它由以下内容初始化:

mydaemon = Daemon
__svc_regClass__(mydaemon, "foo", "foo display", "foo description")
__svc_install__(mydaemon)
Run Code Online (Sandbox Code Playgroud)

其中svc_install通过调用守护进程来处理初始化.init()并将一些参数传递给它.

但是,如何在不使用服务的情况下初始化守护进程对象?在我启动服务之前,我想做一些事情.有没有人有任何想法?

class Daemon(win32serviceutil.ServiceFramework):
    def __init__(self, args):
        win32serviceutil.ServiceFramework.__init__(self, args)
        self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)

    def SvcDoRun(self):
        self.run()

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def start(self):
        pass

    def stop(self):
        self.SvcStop()

    def run(self):
        pass

def __svc_install__(cls):
    win32api.SetConsoleCtrlHandler(lambda x: True, True)
    try:
        win32serviceutil.InstallService(
            cls._svc_reg_class_,
            cls._svc_name_,
            cls._svc_display_name_,
            startType = win32service.SERVICE_AUTO_START
            )
        print "Installed"
    except Exception, err:
        print str(err)

def __svc_regClass__(cls, name, display_name, description):

    #Bind the values …
Run Code Online (Sandbox Code Playgroud)

python winapi pywin32

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