我试图升级phonegap通过npm当我开始运行陷入困境.长话短说,node_modules我的电脑上有两个目录.
/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules
Run Code Online (Sandbox Code Playgroud)
当我运行时npm upgrade -g phonegap,似乎npm更新了驻留的包的副本/usr/local/lib/node_modules.但是,如果我which phonegap发现符号链接指向较旧的安装位置/usr/local/share/npm/lib/node_modules.
此外,当我尝试安装一个独立的软件包,例如express,文件安装在/usr/local/lib/node_modules目录中,但在我的任何地方都没有创建可执行文件的符号链接$PATH.
两个问题:
npm在$PATH安装软件时配置链接可执行文件?加分:安装方法是否node会影响配置?有很多选择.
编辑:我发现我的符号链接正在创建/usr/local/bin,但我的.bash_profile设置/usr/local/share/npm/bin是/usr/local/bin在我的$PATH.我依稀记得在某些时候将这条路径添加到我的个人资料中,但我不确定为什么.
所以问题现在变成了:我如何node_modules在我的计算机上找到两个不同的目录,为什么我要将我node_modules的share/npm/lib子目录放在子目录中/usr/local/lib?
我正在开发一个托管在Amazon Web Services上的项目.服务器设置包含两个EC2实例,一个Elastic Load Balancer和一个Web应用程序所在的额外Elastic Block Store.该项目应该使用S3来存储用户上传的文件.为了这个问题,我将调用S3存储桶static.example.com
我已经尝试使用s3fs(https://code.google.com/p/s3fs/wiki/FuseOverAmazon), RioFS(https://github.com/skoobe/riofs)和s3ql(https://code.google.com/p/s3ql /).s3fs将挂载文件系统,但不会让我写入存储桶(我在SO上问了这个问题:如何使用FUSE安装具有适当权限的S3卷).RioFS将挂载文件系统并让我从shell写入存储桶,但使用PHP保存的文件不会出现在存储桶中(我在GitHub上打开了项目问题).s3ql将挂载存储桶,但存储桶中已有的文件都不会出现在文件系统中.
这些是我使用的mount命令:
s3fs static.example.com -ouse_cache=/tmp,allow_other /mnt/static.example.com
riofs -o allow_other http://s3.amazonaws.com static.example.com /mnt/static.example.com
s3ql mount.s3ql s3://static.example.com /mnt/static.example.com
Run Code Online (Sandbox Code Playgroud)
我也试过使用这个S3类:https://github.com/tpyo/amazon-s3-php-class/和这个FuelPHP特定的S3包:https://github.com/tomschlick/fuel-s3.我能够获得FuelPHP包以列出可用的存储桶和文件,但是将文件保存到存储桶失败(但没有错误).
你有没有在本地linux文件系统上安装S3存储桶并使用PHP成功地将文件写入存储桶?你使用了什么工具?如果您使用上述工具之一,您使用的是哪个版本?
编辑
我被告知我RioFS在GitHub上打开的问题已经解决.虽然我决定使用S3 REST API而不是尝试将存储桶作为卷安装,但RioFS这些天似乎可能是一个可行的选择.
我一直在使用Cocoapods来管理我的Swift项目的依赖项.我遇到了这个没有在Cocoapods上市的包裹.相反,它建议使用Swift Package Manager.但是,每当我尝试使用Swift Package Manager基本上做任何事情时,它最终会完全破坏我的整个项目.
因此,为了弄清楚如何实际使用Swift Package Manager,我正在测试项目中使用它.
这是我尝试过的:
文件 - >新建 - >项目 - > Cocoa App
产品名称:basic-ssh-test
这会创建一个基本应用程序,当我点击"运行"时加载一个空白窗口.为了好玩,我添加print("test")到了applicationDidFinishLaunching我的函数中,AppDelegate因此当我运行程序时,调试窗口会显示"test".
现在我想将Shout包添加为依赖项.
swift package init --type executable这将创建以下文件:
Creating executable package: basic-ssh-test
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/basic-ssh-test/main.swift
Creating Tests/
Run Code Online (Sandbox Code Playgroud)
现在我要将"Shout"依赖项添加到我的新Package.swift文件中:
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "basic-ssh-test",
dependencies: [
.package(url: "https://github.com/jakeheis/Shout", from: "0.2.0")
],
targets: [
.target(
name: "basic-ssh-test",
dependencies: …Run Code Online (Sandbox Code Playgroud) 我正在使用Vagrant来管理PHP 5.5和nginx 1.4.4的Debian Wheezy的VirtualBox实例.我的本地环境是Mac OS X 10.9,PHP 5.5和Apache 2.2.24.我有一个同步目录,指向我的特定项目的文档根目录.
我的本地计算机具有VirtualHost设置,该设置也指向此项目的文档根目录.因此,我实际上有两个不同的URL,我可以指向我的浏览器,并将执行相同的代码.一个URL命中虚拟机,而另一个URL命中我的本地Apache安装.
我已经能够编辑几个PHP文件没有问题.我在本地进行更改,它们会立即显示在虚拟机和本地Web服务器上.但是,每当我尝试编辑CSS时,事情都会变得奇怪.我正在尝试将一行CSS添加到静态CSS文件中.有点像:
.body {margin-top:50px}
Run Code Online (Sandbox Code Playgroud)
当我做这个改变时,虚拟机就疯了.我不确定它是否正在发送一个损坏的文件,或者它只是在CSS文件的末尾添加了一堆奇怪的字符,但我甚至无法在这里粘贴它们.我做了一个查询转储请求CSS文件,响应如下:

我通过虚拟机查看了vim中的文件.我使用多个文本编辑器查看了该文件.对于我的生活,我发现它没有任何问题.当我通过本地Apache安装加载完全相同的文件时,它可以正常工作:

请注意,body声明出现在button和之间footer,并且文档末尾没有奇怪的字符.
我注意到的另一件事是我的空白在某些时候也被操纵了.有问题的CSS文件使用四个空格进行缩进,但在虚拟机的响应中,这些行只有两个缩进空格.你无法从图片中看到它,因为它们是由Charles格式化的,但我查看了原始数据.这真的很奇怪.
当你通过Vagrant/nginx组合与我的本地/ Apache组合服务时,你知道是什么导致我的CSS文件操作?
编辑
我将一些字符粘贴到十六进制转换器中,并将所有字符转换为问号.我尝试了二进制到十进制转换,它们都变成了�,我可以找到"用于替换其值在unicode中未知或无法代表的字符".我跑file --mime了文件然后又回来了rental-application.js: text/plain; charset=us-ascii.那么... nginx设置可能吗?
我对JavaScript文件有完全相同的问题.如果我vagrant destroy和vagrant up是唯一的办法,我发现到目前为止解决该问题.当我必须在文件保存之间重新启动VM时,它无法快速排除故障.
我用来查看文件的每个方法都有效.唯一的问题是当它通过nginx提供时,这让我觉得我有一些类型的编码设置错误.这主要是库存设置.
如果我mv rental-application.js rental-application.html在我的浏览器中加载页面,它会很完美.如果我将名称更改为,则同样适用rental-application.php.但是,只要我将名称更改为rental-application.js或rental-application.css,我的更改就会消失,并且�字符会重新出现在文档的末尾.
我可以在VM上创建一个js文件,它将通过VM nginx服务器正常加载.如果我随后修改了刚刚创建的文件并重新加载,则不会显示更改,只会显示垃圾字符.
如果我mv以不同的名称归档.js,则垃圾字符问题仍然存在.但是,如果我cat将重命名的文件的内容添加到具有原始名称的新文件中,则所有内容都在Universe中.
我正在使用运行OS X 10.8.3的Mac.我正在尝试编译cgminer 3.0.0.在我的第一次运行中,./configure我收到了消息:
checking for LIBCURL... no
checking for LIBCURL... no
configure: error: Missing required libcurl dev >= 7.18.2
Run Code Online (Sandbox Code Playgroud)
所以我使用自制软件安装了最新版本的libcurl:
brew install curl
Run Code Online (Sandbox Code Playgroud)
这似乎成功了.我收到了这条消息:
downloaded: /Library/Caches/Homebrew/curl-7.30.0.tar.gz
==> ./configure --prefix=/usr/local/Cellar/curl/7.30.0
==> make install
==> Caveats
This formula is keg-only: so it was not symlinked into /usr/local.
Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.
The libcurl provided by Leopard is too old for CouchDB to …Run Code Online (Sandbox Code Playgroud) 当我试图$ brew update收到错误时:
error: Protocol https not supported or disabled in libcurl while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack
Run Code Online (Sandbox Code Playgroud)
但是,当我$ curl --version,我看到:
curl 7.21.4 (x86_64-apple-darwin12.2.0) libcurl/7.21.4 OpenSSL/0.9.8y zlib/1.2.5 libidn/1.20
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM SSL libz
Run Code Online (Sandbox Code Playgroud)
除非我遗漏了什么,否则这对我来说很好.请注意https协议列表中列出的内容.
$ which curl 产生可疑的回应:
/usr/local/php5/bin/curl
Run Code Online (Sandbox Code Playgroud)
嗯...也许brew是在使用不同的curl(就像那个/usr/bin/curl).让我们来看看:
$ /usr/bin/curl --version
curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
Protocols: …Run Code Online (Sandbox Code Playgroud) 我在GitHub上分了一个回购并提交了拉取请求.该项目的维护者拒绝了拉取请求,但我们在论坛中找到了更好的解决方案.他们指示我使用替代更改创建另一个拉取请求.但是,我在GitHub上的存储库的分支现在已经过时了,因为自从我分叉以来,更新已经被推送到主仓库.此外,GitHub上的存储库还有一个额外的提交(我的拉取请求提交),它不应该存在,因为它不被接受作为项目的一部分.
我发现了这个问题:如何更新GitHub分叉存储库?
我按照说明操作,具体来说,我这样做了:
git remote add upstream git://github.com/fuel/core
git fetch upstream
Run Code Online (Sandbox Code Playgroud)
结果导致:
remote: Counting objects: 93, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 69 (delta 49), reused 40 (delta 20)
Unpacking objects: 100% (69/69), done.
From git://github.com/fuel/core
* [new branch] 1.0/master -> upstream/1.0/master
* [new branch] 1.1/master -> upstream/1.1/master
* [new branch] 1.2/develop -> upstream/1.2/develop
* [new branch] 1.2/master -> upstream/1.2/master
* [new branch] 1.3/develop -> upstream/1.3/develop
* [new branch] 1.3/master -> upstream/1.3/master
* [new branch] 1.4/develop …Run Code Online (Sandbox Code Playgroud) 我正在为我正在开发的应用程序实现基于OAuth 2的授权模型.我正在为最终用户提供使用Facebook登录或使用我的API设置电子邮件/密码帐户的功能.使用密码授权,电子邮件/密码验证很简单.我正在寻找Facebook登录流程的帮助.
我的应用程序是一个单页面应用程序,它使用JSON API(我的"资源服务器").我正在使用Facebook JavaScript SDK来授权Web应用访问最终用户的电子邮件地址.
当用户尝试使用Facebook登录时,整个过程发生在Facebook和Web应用程序之间.因此,在使用Facebook的OAuth服务器验证令牌之前,我的API无法信任Facebook授权令牌.
截至目前,我正在将Facebook传递accessToken给我的API,然后通过服务器到服务器调用"我"图API来验证用户对Facebook的授权.以下是我当前设置的说明:
所以,在这一点上,我有一个Facebook访问令牌和一个电子邮件地址.我需要在我的API服务器和Web应用程序之间保持会话.此时持久化会话的标准方法是什么?
从阅读OAuth文档来看,这似乎是我的API服务器和Web应用程序之间需要"隐式授权"的情况类型,但该授权类型在我正在使用的OAuth包中不可用.该软件包的作者还说,隐性拨款"非常不安全".
我的另一个想法是,我可以创建随机客户端ID和客户端密钥,然后将它们传递回Web应用程序,以便它可以通过凭据授权请求访问令牌.这对我来说似乎不合逻辑.为什么我不创建一个访问令牌并将其发送回客户端直接使用?
我应该在Facebook的初始授权后直接在我的网络应用程序和API服务器之间维护身份验证,这是正确的吗?
我意识到我可以生成随机密码并向用户发送HTTP Basic令牌,但除非没有任何好处,否则我更愿意使用OAuth.
我最近将我的生产服务器升级到Ubuntu 14.04和PHP 5.6,现在我在错误日志中收到警告:
2014/10/31 10:42:45 [error] 17128#0: *46238 FastCGI sent in stderr: "PHP message: PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0" while reading response header from upstream, client: 24.123.216.42, server: example.com, request: "POST /api/notes HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com", referrer: "https://example.com/admin/"
我阅读了文档以及这个有点相关的问题:未定义的变量:HTTP_RAW_POST_DATA.但是,我无法弄清楚为什么要记录此通知.据我所知,我没有$HTTP_RAW_POST_DATA在我的代码库中的任何地方使用.我试过了:
find . -exec …Run Code Online (Sandbox Code Playgroud) 我是Chef的新手,文档(甚至是他们网站的主页)让我头晕目眩.我甚至不确定我是否将它用于正确的目的.
我的目的是设置一个Vagrantfile告诉Chef Solo在我启动一个新盒子时自动安装一些软件.这是Chef Solo的预期用途之一,我是否正确?
我不确定这是否是"地球上最严峻的基础设施挑战"之一,但无论如何.
我的第一个目标是让Solo主厨nginx为我安装.在我的项目中,我克隆了食谱nginx:
$ git clone https://github.com/opscode-cookbooks/nginx.git cookbooks/nginx
Run Code Online (Sandbox Code Playgroud)
我编辑我Vagrantfile看起来像这样:
Vagrant.configure("2") do |config|
config.vm.box = "opscode-ubuntu-1204"
config.vm.provision :chef_solo do |chef|
chef.add_recipe "nginx"
end
end
Run Code Online (Sandbox Code Playgroud)
当我跑了vagrant up,我得到了一些食谱,未发现(一些错误build-essential,apt等等),所以我克隆他们从适当的回购协议.现在,当我vagrant up,我得到这个输出:
[2013-10-01T20:31:03+00:00] INFO: Processing package[nginx] action install (nginx::package line 38)
Error executing action `install` on resource 'package[nginx]'
Chef::Exceptions::Exec
----------------------
apt-get -q -y install nginx=1.1.19-1ubuntu0.1 returned 100, expected 0
Resource Declaration:
---------------------
# In …Run Code Online (Sandbox Code Playgroud)