小编Rob*_*son的帖子

Go不能超过<my var>(类型interface {})

我正处于试图将我的思绪包裹在Go周围的婴儿阶段.目前,我正在模拟一个API请求,该请求返回包含对象数组的JSON格式的字符串.我正在尝试找出迭代每条记录并访问每个字段的最合适方式.最终,每个字段都将写入Excel电子表格,但是现在我只想打印每个字段的键和值.

这就是我所拥有的(我在Go Playground中提供它,但不支持HTTP请求):

    response, err := http.Get("http://go-proto.robwilkerson.org/demo.json")
    failOnError(err, "Uh oh")
    defer response.Body.Close()

    var view []interface{}
    json.NewDecoder(response.Body).Decode(&view)
    log.Printf(" [x] Pulled JSON: %s", view)
    for _, record := range view {
        log.Printf(" [===>] Record: %s", record)

        for key, val := range record {
            log.Printf(" [========>] %s = %s", key, val)
        }
    }
Run Code Online (Sandbox Code Playgroud)

一切正常,直到试图迭代的嵌套循环map保存每条记录的属性:

cannot range over record (type interface {})
Run Code Online (Sandbox Code Playgroud)

我想有两个问题:

  1. 嵌套循环是访问每条记录的每个属性的最有效/最有效的方法吗?
  2. 我该怎么做才能解决这个错误?

UPDATE

当我将解码的数据转储到view变量中时,这是记录的结果:

[
    map[id:ef14912f-8031-42b3-8c50-7aa612287534 avatar:http://placehold.it/32x32 name:Vilma Hobbs email:vilmahobbs@exiand.com phone:+1 (886) 549-3522 address:471 Dahill Road, Jacksonwald, …
Run Code Online (Sandbox Code Playgroud)

go

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

Taglist:在PATH中找不到丰富的ctags

今天早上,当我尝试在Vim中打开文件时,我开始收到该消息.Vim是配置文件,git提交消息等的首选编辑器,但不是我的日常代码编辑器.我明确地做了一些邀请这个消息,但我不知道是什么.我最近卸载了一个旧版本的XCode /Developer-3.2.6,但这是唯一让人想到的东西,甚至与切向相关.

我正在运行OSX Lion.兴奋的ctags是基础安装的一部分吗?我知道我没有故意安装它,但如果它不是原生的,那么它可能还带有别的东西吗?有关如何获取插件或删除对它的引用的任何想法,所以我没有收到警告消息?

谢谢.

vim ctags exuberant-ctags

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

MacPorts不会安装带有mysql5 +服务器的org.macports.mysql5.plist

我最近两次使用MacPorts进行安装mysql5 +server,未安装plist,允许我在启动时启动MySQL.我不记得在最后一次安装时我做了什么,我似乎无法找到安装它的方法.我错过了什么吗?如何获取plist文件(我知道自动启动MySQL的唯一方法)或以其他方式自动启动MySQL?

谢谢.

更新:我仍然没有在任何地方找到答案,但我手动安装了文件.我的一台安装较旧的机器有相关文件,因此我将它们发送到我的新机器,在/ Library/LaunchDaemons中创建了相应的符号链接并执行了加载plist文件的命令.现在一切都很好,但这对其他人没有帮助.如果有人需要这些文件和/或说明,请通过http://robwilkerson.org/contact与我联系,我很乐意提供这些文件,因为我无法在此处上传.

macos macports

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

实施双腿OAuth提供商

我试图找到我的方法来解决OAuth规范,它的要求以及我能找到的任何实现,到目前为止,它似乎比它的价值更麻烦,因为我很难找到一个可以将它全部拉到一起的资源.或者也许只是因为我正在寻找比大多数教程更专业的东西.

我有一组现有的API - 一些是Java,一些是PHP - 我现在需要保护它,并且出于多种原因,OAuth似乎是正确的方法.不幸的是,我无法找到合适的资源来帮助我启动和运行提供商,这对该理论提出了挑战.由于大部分将是系统到系统的API使用,我需要实现一个两条腿的提供程序.考虑到这一点...

  1. 有谁知道用PHP实现一个2脚OAuth提供程序的任何好教程?
  2. 鉴于我有2种语言的安全API,我是否需要在两者中实现提供者,或者有没有办法将提供者创建为"前端控制器",我可以将所有请求汇集到一起?
  3. 例如,在保护PHP服务时,是否必须通过在每个API上包含必需的提供程序资源来单独保护每个API?

谢谢你的帮助.

oauth 2-legged oauth-provider

13
推荐指数
2
解决办法
8537
查看次数

在Rails中使用模型数据填充选择

我觉得有必要为提出这么简单的问题而道歉,但我对Rails指南越来越感到沮丧.我确信他们回答了我的问题,但他们没有提供足够的背景让我真正理解如何运用他们给我的东西.谷歌也没有多大帮助,尽管我可能只是在搜索错误的术语/短语.鉴于免责声明,我只是要继续问:

我有一个ImageHABTM Album.为了支持这一点,我有一个albums_imagesimage_idalbum_id字段(没有其他).对于我的生活,我无法弄清楚如何填充我的图像形式部分,以便用户可以选择新上传的图像应该属于的相册.

我正在学习Rails,所以我真的只想要基础知识.我确信有一些花哨的插件可以做到这一百种方式,但我想首先学习基础知识并从那里开始构建.我的表格部分是相当多的教科书:

<% form_for( @image, :html => { :multipart => true } ) do |f| %>
  # All the basics you'd expect to see.
<% end %>
Run Code Online (Sandbox Code Playgroud)

我最近的尝试没有比我尝试的任何其他变种更好,但看起来像这样:

<p>
  <%= f.label :album_id %>
  <%= f.select( :album_id, current_user.albums, :id, :name ) -%>
</p>
Run Code Online (Sandbox Code Playgroud)

我再次认识到问题的简单性,我已经阅读了我能找到的内容,但我无法将其整合到一个完整的解决方案中.似乎有很多方法可以做到这一点,但没有真正讨论每个方法,它们的优点/缺点或如何在更大的背景下真正使用它们.

谢谢.

更新:要注意的几个键和代码更正.首先,图像和专辑之间存在HABTM关系.两个型号表都没有FK直接引用另一个.其次,专辑收藏应该被访问current_user.albums(上面更正).用户has_many相册和相册belongs_to用户.

更新:根据下面的IV的要求,目前,使用此代码:

22: <p>  
23:   <%= f.label :album_id %>  
24:   <%= f.select( :album_id, current_user.albums.collect {|a| …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Safari扩展问题

我正在构建我的第一个Safari扩展 - 一个非常简单的扩展 - 但我遇到了一些问题.扩展名归结为单个注入脚本,该脚本尝试绕过本机Feed处理程序并重定向到http:// URI.到目前为止,我的问题有两个:

  1. "白名单"并没有像我期望的那样运作.由于所有Feed都显示在"feed://"协议下,因此我尝试将其作为"feed://*/*"(黑名单中没有任何内容)在白名单中捕获,但我最终在请求中循环,我无法理解.如果我将黑名单值设置为" http://*/* "和" https://*/* ",则一切都按预期工作.
  2. 我无法弄清楚如何从我注入的脚本访问我的设置.该脚本创建一个beforeload事件处理程序,但无法使用safari.extension.settings文档中指示的路径访问我的设置.

我没有在Apple的文档中找到任何内容,表明我的脚本不应该提供设置.由于扩展功能是一项新功能,因此即使是Google也会返回有限的相关结果,其中大部分都来自官方文档.

我错过了什么?

谢谢.

更新 所以我希望文档不完整,因为它的边界非常糟糕,但我已经了解了一些设置.事实证明,从注入脚本,该SafariExtensionSettings对象不可用.注入脚本只能访问该SafariContentExtension对象(根本没用),但它的别名方式完全相同(safari.extension.settings) - 坏主意,IMO.如注入脚本文档中所述:

重要提示:当您在注入的脚本中使用safari.extension时,您不会处理SafariExtension类.您正在处理SafariContentExtension类.

您必须使用消息传递系统与可以访问设置的全局HTML文件进行通信.它有点循环,但是我有一条消息被发送到一个global.html文件来检索设置,并且一旦我弄清楚如何去做,就会将消息发送回我的注入脚本.

由于我做所有我的工作文件加载之前,所有的方法,我发现要发送消息靠,我没有一个网页对象.

safari safari-extension

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

在git中显示索引文件的权限

这涉及到另外一个问题我最近问存储在Dropbox的非纯仓库的计算机之间轻松移动,因此它可能是有帮助的阅读背景问题.

要点是fileMode不断报告某些文件的差异.我无法找到一种方法来重现它,但它经常发生.我注意到的是,该文件在两台机器上具有644权限,通常会在其中一台机器上报告755的差异.这让我觉得Git认为可执行位已设置,但我无法弄清楚我是否真的可以看到 Git 是如何设置该位的.

git permissions diff dropbox

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

在Vagrant环境中Drupal非常慢

我已经开始将很多开发环境迁移到Vagrant.到目前为止,这几乎对所有事情都很好,但我们的第一次Drupal迁移无法使用.这令人难以置信地缓慢.我们的Wordpress,CakePHP和Node.js网站都表现得非常充分或更好,但不是Drupal.这种想法太可怕了.

这个盒子是Veewee创建的Ubuntu 12.04 64bit机器.它与我们用于所有基于Web的项目的基本框相同,因此没有什么独特之处.在我的sites目录中,我有一个sites/my-site/带有所有站点资源的规范目录()和一个带有域名(sites/dev.mysite.com -> /vagrant/www/sites/my-site)的规范目录的符号链接,这对于团队正在使用的某个模块显然是必需的.

这是一个混合的Windows/OSX开发团队,它在两个平台上都很慢.我唯一的半非传统片段Vagrantfile是这样的:

config.vm.forward_port 80, 8080

config.vm.share_folder( "v-root", "/vagrant", ".", :extra => 'dmode=777,fmode=777' )

# Allows symlinks to the host directory.
config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

Vagrant::Config.run do |config|
  config.vm.provision :shell, :path => "provision.vm.sh"
end
Run Code Online (Sandbox Code Playgroud)

我的shell配置程序只做了几件事:

  • 安装drush
  • 为规范站点目录创建上述符号链接
  • 写出一个Nginx服务器块
  • 如有必要,创建一个settings.php文件.

我能做些什么来提高性能吗?喜欢,很多?

UPDATE

我把它缩小到了一个看起来问题就是远程数据库的地步.为了比较没有项目行李的苹果和苹果,我下载了Drupal 7.21的新副本,并从Vagrant Web服务器对3个不同的数据库执行标准安装:

  • 在与Web服务器相同的Vagrant VM上创建的新数据库(localhost)
  • 在原始问题(dev)中使用的共享开发服务器上创建的新数据库
  • 在EC2实例上创建的新数据库(tmp)

完成后,我登录到新的Drupal安装并加载主页(localhost:8080)5次.然后我以相同的方式连接到每个数据库并加载相同的页面.我发现当Drupal连接到远程数据库时,页面加载速度慢了4-6倍.

请记住,这是一个新的(标准)安装.没有项目行李.

drupal drupal-7 vagrant

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

在Expressjs应用程序中使用群集

我在我的第一个节点项目上做了一点OJT,虽然我可以站起来一个简单的服务器,但应用程序将受到重创,因此使用集群似乎是一个好主意.我拼凑了一些我在各种搜索(包括SO)中找到的代码片段,但服务器无法启动.我确定我对节点缺乏经验让我做了一些愚蠢的事情,但我没有看到它.

var express = require( 'express' );
var cluster = require( 'cluster' );
var path    = require( 'path' );

var cCPUs   = require( 'os' ).cpus().length;
var port    = 3000;
var root    = path.dirname( __dirname );

if( cluster.isMaster ) {
    for( var i = 0; i < cCPUs; i++ ) {
      cluster.fork();
    }

    cluster.on( 'death', function( worker ) {
      console.log( 'Worker ' + worker.pid + ' died.' );
    });
}
else {
    // eyes.inspect( process.env );
    console.log( 'Worker: %s', process.env.NODE_WORKER_ID ); …
Run Code Online (Sandbox Code Playgroud)

node.js express

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

过滤Ansible动态库存中的多个标签

我想我已经在某个地方找到了答案,但我现在似乎无法找到它.我正在development为我的EC2实例创建动态库存文件.我想将标记为的所有实例分组Stack=Development.此外,我想具体确定开发API服务器.那些不仅有Stack=Development标签,还有API=Yes标签.

我的基本设置使用库存文件夹:

<root>/development
  ??? base
  ??? ec2.ini
  ??? ec2.py
Run Code Online (Sandbox Code Playgroud)

在我的base文件中,我想要这样的东西:

[servers]
tag_Stack_Development

[apiservers]
tag_Stack_Development && tag_API_Yes
Run Code Online (Sandbox Code Playgroud)

然后我就可以运行它来ping我的所有开发api服务器:

ansible -i development -u myuser apiservers -m ping
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?我知道语法不对,但希望意图相当清楚?我无法想象我是唯一一个需要过滤多个标签的人,但是我无法找到任何让我想到的地方.

ansible

10
推荐指数
2
解决办法
9352
查看次数