小编fel*_*ace的帖子

如何确定第一次安装或使用应用程序的日期?

我打算开设一个应用程序商店,我想免费为现有用户提供一些项目.

我想发布一个更新,它将在第一次使用该应用程序时存储一些信息,然后发布"真实"更新,看看之前是否购买过该应用程序,但是,很可能不是每个人都会选择第一次更新.

那么,有没有办法找出用户何时首次安装(或使用)应用程序?

更新:

谢谢你的答案,但我应该减少它的含糊:

我正在寻找原生电话/任何类似的事情.由于应用程序已经在商店,我没有设置任何东西来存储第一个版本的数据,如果所有用户在第二个更新发布之前抓住它,更新将帮助我做我想要的:它是无法区分新用户与错过中间更新的现有用户,并且刚刚更新到最新用户.

iphone ios4

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

如何在SIGKILL之后进行清理?

我正在开发一个使用共享内存的程序.所述程序的多个实例将连接到现有程序或重新创建它,并在没有其他进程或仅将其分离并终止时将其返回给OS.我想过使用一个简单的计数器来跟踪有多少进程使用它.

我正在使用atexit()函数进行清理,但是,afaik,收到SIGKILL信号后,进程将不会进行任何清理,因此如果这些进程中的任何一个没有正常终止,我可能永远无法清理内存.

有没有办法指定即使在SIGKILL信号之后该做什么?我可能会写一些类似于计时器的机制来检查进程是否还活着,但是如果有另一种方法,我真的想避免使用它.

c linux signals

9
推荐指数
2
解决办法
3437
查看次数

Haskell和可变结构的性能

我正在研究优化Haskell代码中给出的答案,并注意到与Python相比,使用小输入确实会导致更快的Haskell运行.

但随着数据集规模的扩大,Python占据了主导地位.使用基于散列映射的版本已经改善了性能,但它仍然落后.

更糟糕的是,我尝试将Python的词典音译为哈希表并观察到性能受到严重打击.我真的想了解发生了什么,因为我需要可变结构用于未来的应用程序.

这是稍微修改过的Python代码:

#! /usr/bin/env python2.7
import random
import re
import cPickle

class Markov:
    def __init__(self, filenames):
        self.filenames = filenames
        self.cache = self.train(self.readfiles())
        picklefd = open("dump", "w")
        cPickle.dump(self.cache, picklefd)
    print "Built a db of length "+str(len(self.cache))
        picklefd.close()

    def train(self, text):
        splitted = text.split(' ')
        print "Total of %d splitted words" % (len(splitted))
        cache = {}
        for i in xrange(len(splitted)-2):
            pair = (splitted[i], splitted[i+1])
            followup = splitted[i+2]
            if pair in cache:
                if followup not in cache[pair]:
                    cache[pair][followup] = …
Run Code Online (Sandbox Code Playgroud)

performance haskell hashtable mutable

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

Haskell:在堆分析期间,使用未装箱的元组会导致奇怪的类型

最初,我有一段代码如下:

data Something = Something !Word32 !Word32

retrieveSomething :: Socket -> IO (Something)
retrieveSomething sock = do
    ...

function sock = do
    (Something x y) <- retrieveSomething sock
    let (a,b,c) = case x of
      0 -> (foo,bar,baz)
      1 -> (foo2,bar2,baz2)
      ...

    doIOwithParams a b c
Run Code Online (Sandbox Code Playgroud)

我使用-hy -hC"..."RTS选项进行了分析.

看看堆配置文件,我看到使用3元组消耗的内存过多,所以我使用了未装箱的元组扩展(即(# a,b,c #)),它似乎更适合返回多个值.

我或多或少地确信堆使用量已经减少,因为我stuff在尝试未装箱的元组之前通过显式调用来测试它,但是通过这样做,我现在无法观察在成本中心中分配的不同类型的值.

为了更清楚地说明这个问题,我可以看到在没有取消装箱元组的情况下分析应用程序后,Something(和其他任何东西)类型的空间值有多少.现在,在堆图上只能看到一种类型,我认为这与我在函数调用中进行的可变哈希表调用有关.

有没有办法来解决这个问题?

编辑:虽然未装箱的元组没有出现在配置文件中是完全合理的,但我仍然感到困惑的是为什么使用它们隐藏了函数调用/成本中心中的其他所有内容.

我尝试使用显式调用进行性能分析,而不是使用未装箱的元组,如下所示:

    case x of
      0 -> doIOwithParams foo bar baz
      1 -> doIOwithParams foo2 bar2 baz2
Run Code Online (Sandbox Code Playgroud)

除了能够看到3元组的开销之外,函数中使用的Something和所有其他类型也是可见的,这与我在unboxed元组中的情况相反,我只能看到Node类型(与其他类型相比,它可能与我正在使用的散列表相关,也可能与之无关.

profiling haskell

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

Cherrypy:我真的需要把它放在前端吗?

我一直在使用一个python web应用程序使用cherrypy并阅读它更"强大"使用它作为后端,所以我试了一下.

不久说,运行在页面上一些基准做一些数据库操作和服务静动态内容显示,普通的CherryPy是快两倍比nginx的memcached的和,大约一半的lighttpd比快.我听说后者有内存泄漏问题,所以没有使用它.是的,nginx和lighttpd都配置为提供静态内容.

我不想尝试apache,因为我将把它部署在一个相对"小"的VPS上.

所以,考虑到:

  • 我不会将它部署在分布式系统上一段时间,单独使用cherrypy是否安全?
  • 当我将它部署在这样的系统上时,哪个前端表现最好?

frontend lighttpd nginx cherrypy

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