小编Lan*_*ard的帖子

什么是Python的"检查"相当于Python?

我只想快速查看Python中对象的属性和值,如何在mac上的终端中执行此操作(非常基本的东西,从未使用过python)?

具体而言,我想看看message.attachments这个谷歌应用程序引擎MailHandler例如(图片,视频,文档等).

python

18
推荐指数
3
解决办法
5553
查看次数

检查Rails中是否存在记录(来自ID数组)?

我可以这样做来检查记录是否存在(比如说"1"存在,但"2"和"3"不存在):

Model.exists?(:id => [1, 2, 3]) #=> true
Run Code Online (Sandbox Code Playgroud)

我该怎么做,所以:

Model.not_exists?(:id => [1, 2, 3]) #=> true
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails

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

为什么我不用Javascript和Javascript HTML模板构建整个Web应用程序?

我在应用程序中找到了我需要开始缓存的东西,它让我思考......

  1. 在应用程序的某些部分,我通过抓取纯JSON并通过像Mustache,jquery.tmpl等运行它来呈现表行(jqGrid,slickgrid等)或花式div行(如在新推特中).
  2. 在应用程序的其他部分,我只是在纯HTML(服务器端HAML模板)中呈现信息,如果有搜索/分页,我只是转到一个新的URL并加载一个新的HTML页面.

现在的问题在于缓存和可维护性.

一方面我在想,如果一切都是使用Javascript HTML模板构建的,那么我的应用程序只提供HTML布局/ shell和一堆JSON.如果你看看Facebook和Twitter HTML源代码,那基本上就是他们正在做的事情(95%json/javascript,5%html).这将使我的应用程序只需要缓存JSON(页面,操作和/或记录).这意味着无论你是一些远程api开发人员访问JSON api还是海峡网络应用程序,你都会点击缓存.也就是说,我不需要2个缓存,一个用于JSON,一个用于HTML.这似乎将我的缓存存储减少了一半,并简化了一些事情.

另一方面,我正在思考,从我所看到/经历过的,生成静态HTML服务器端,以及缓存,似乎是更好的性能明智的跨浏览器; 你可以立即获得图形,而不必等待javascript渲染它.StackOverflow似乎用普通的HTML做所有事情,Google也是如此,你可以告诉......一切都出现了.请注意,如果在twitter.com上,该页面为.5-1秒是空白的,并且页面块中包含:javascript必须呈现json.这样的缺点是,对于任何动态(如无限滚动或网格),我必须创建javascript模板...所以现在我有服务器端HAML模板,客户端javascript模板,以及很多更多缓存.

我的问题是,对于如何处理这个问题有什么共识吗?您将两者混合在100%与另一种混合的经验中有什么好处和缺点?

更新:

导致我尚未决定使用100%javascript模板的原因有以下几个原因:

  • 表现.还没有正式测试过,但从我看到的情况来看,原始html比javascript生成的html跨浏览器更快,更流畅.另外,我不确定移动设备如何处理动态html性能.
  • 测试.我有很多集成测试可以很好地与静态HTML一起使用,因此切换到仅javascript需要1)更集中的纯javascript测试(jasmine),以及2)将javascript集成到capybara集成测试中.这只是时间和工作的问题,但它可能很重要.
  • 维护.摆脱HAML.我喜欢HAML,编写起来非常简单,打印漂亮的HTML ......它使代码干净,使维护变得简单.使用javascript,没有什么是简洁的.
  • SEO.我知道谷歌处理ajax /#!/path,但还没有意识到这将如何影响其他搜索引擎以及旧浏览器如何处理它.好像它需要一个重要的设置.

html javascript performance json templating

18
推荐指数
2
解决办法
3371
查看次数

如果数据不断变化,你会缓存什么?(以Twitter为例)

我花了一些时间研究缓存(主要是redis和memcached),并且在数据不断变化时很难确定在哪里使用缓存.

以Twitter为例(只需阅读使Twitter快10000%).当大部分数据库记录不断变化时,您(或他们)如何缓存数据?

说Twitter也有这些模型:User,Tweet,Follow,Favorite.

有人可能会发布一条推文,它会在一天内被转发一次,而另一条推文会在一天内转发一千次.对于那个1000x转推,因为24 * 60 == 1440一天大约几分钟,这意味着Tweet几乎每分钟更新一次(说它也有440个收藏).与追随某人相同,查理光泽甚至在1天内吸引了100万Twitter追随者.在这些情况下缓存似乎并不值得,但也许只是因为我尚未达到这个水平.

另请注意,普通的Twitter粉丝每天至少发一次推文/关注/收藏.这意味着在天真的intro-rails架构案例中,users表每天至少更新一次(tweet_count等等).这种情况对于缓存用户配置文件很有意义.

但对于上面的1000x Tweets和1M粉丝示例,在缓存数据方面有哪些推荐做法?

具体来说(假设使用memcached或redis,并使用纯JSON API(无页面/片段缓存)):

  • 你是否缓存个别推文/记录?
  • 或者你通过分页缓存大块的记录(例如20每个的redis列表)?
  • 或者您是单独还是在页面中缓存记录(查看单个推文与JSON提要)?
  • 或者你是否为每个不同的场景缓存推文列表:家庭时间线推文,用户推文,用户喜欢的推文等?或者以上所有?
  • 或者您是否将数据分为"最不稳定(最新)"到"最近几天"到"旧"块,其中"旧"数据缓存的有效日期较长或者是离散的分页列表或其他内容?并且最新的记录根本没有缓存.(即如果数据与推文有时间关系,那么如果您的旧记录知道它不会发生太大变化,您会不同地对待它?)

我不明白的是数据变化的比例与缓存它的比例(以及处理缓存到期的复杂性).看起来Twitter可以缓存不同的用户推文提要,以及每个用户的家庭推文,但是每次收藏/推文/转推意味着更新所有这些缓存项(以及可能缓存的记录列表)时,缓存都会使缓存无效,在某些时候,它似乎意味着无效缓存是适得其反的.

缓存数据的推荐策略是什么?

database memcached caching redis

18
推荐指数
2
解决办法
4230
查看次数

使用Google Docs最佳实践进行版本控制?

从快速浏览,似乎Google Docs不支持git或svn的版本控制.我的问题是:

如果我想将所有文档存储在Google Docs上,那么使它们能够进行分支/合并类型版本控制的最佳方法是什么?这需要什么?

或者您使用什么工作流程将家庭/公司文档存储在Google Docs上并使用git/svn进行同步,以便多人同时编辑文档并且不会覆盖更改?

version-control google-docs

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

没有AJAX,Github如何顺利地更改页面和URL?

如果你去github上的一个项目,比如说https://github.com/insoshi/insoshi,然后你开始点击文件夹,文件夹会动画到子目录,浏览器网址也会改变,但它看起来像是所有的AJAX.从我所见过的Chrome/Safari中就是这样的.

这是一个webkit过渡效果吗?或者它只是一些严重的缓存/性能优化:)?

html css performance

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

检查Ruby连接是否存在?

刚刚问到如何使用javascript检查是否存在互联网连接,并得到了一些很好的答案.在Ruby中最简单的方法是什么?在尝试使生成的html标记代码尽可能干净时,我想有条件地渲染javascript文件的脚本标记,具体取决于是否存在Internet条件.像(这是HAML)的东西:

- if internet_connection?
    %script{:src => "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", :type => "text/javascript"}
- else
    %script{:src => "/shared/javascripts/jquery/jquery.js", :type => "text/javascript"}
Run Code Online (Sandbox Code Playgroud)

ruby browser internet-connection

16
推荐指数
3
解决办法
6989
查看次数

Ruby中过去时的ActiveSupport Inflection库?

是否有一个过去时态的红宝石库,将单词转换成过去时态?

ruby string

16
推荐指数
2
解决办法
6829
查看次数

在ActiveRecord中存储序列化哈希与键/值数据库对象的优点/缺点?

如果我有几个对象,每个对象基本上都有Profile,我用来存储随机属性,有什么优点和缺点:

  1. 在列中存储序列化哈希以进行记录,与
  2. 存储一堆belong_to主要对象的键/值对象.

假设你有这样的STI记录:

class Building < ActiveRecord::Base
  has_one :profile, :as => :profilable
end
class OfficeBuilding < Building; end
class Home < Building; end
class Restaurant < Building; end
Run Code Online (Sandbox Code Playgroud)

has_one :profile

选项1.序列化哈希

class SerializedProfile < ActiveRecord::Base
  serialize :settings
end

create_table :profiles, :force => true do |t|
  t.string   :name
  t.string   :website
  t.string   :email
  t.string   :phone
  t.string   :type
  t.text     :settings
  t.integer  :profilable_id
  t.string   :profilable_type
  t.timestamp
end
Run Code Online (Sandbox Code Playgroud)

选项2.键/值存储

class KeyValueProfile < ActiveRecord::Base
  has_many :settings
end

create_table :profiles, …
Run Code Online (Sandbox Code Playgroud)

ruby sql activerecord ruby-on-rails key-value-store

16
推荐指数
2
解决办法
7265
查看次数

如何从命令行运行SWI-Prolog?

有没有办法只创建一个这样的prolog脚本hello.pl:

#!/usr/local/bin/swipl -q -s -t main

main:-
  write('Hello World\n').
Run Code Online (Sandbox Code Playgroud)

能够像这样从终端运行吗?

$ hello.pl
Hello World
$
Run Code Online (Sandbox Code Playgroud)

当我这样做时它给了我这个:

hello.pl: line 3: main:-: command not found
hello.pl: line 4: syntax error near unexpected token `'Hello World\n''
hello.pl: line 4: `  write('Hello World\n').'
Run Code Online (Sandbox Code Playgroud)

我可以通过在命令行上写这个来使它工作:

$ swipl -q -f hello.pl -t main
Hello World
$
Run Code Online (Sandbox Code Playgroud)

但有没有办法将直接脚本作为可执行文件运行?

编辑

还没有能够让这个工作.以下是@Boris在其答案评论中提出的命令的输出:

$ ls -l
total 8
-rwxr-xr-x  1 viatropos  staff  235 Aug 26 20:28 example.pl
$ cat example.pl
#!/usr/local/bin/swipl

:- set_prolog_flag(verbose, silent).

:- initialization main.

main …
Run Code Online (Sandbox Code Playgroud)

shell executable command-line prolog swi-prolog

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