我想跟随Michael Hartl的Rails教程,但我遇到了一个错误.
我在Github上注册并发布了一个新的SSH密钥并创建了一个新的存储库.但是当我进入终端的下一行时,我收到以下错误:
Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有其他人遇到过这个问题?
随着基于文档的数据库的NoSQL运动的增长,我最近看了MongoDB.我注意到与如何将项目视为"文档"有惊人的相似之处,就像Lucene(和Solr的用户)一样.
所以,问题是:你为什么要使用NoSQL(MongoDB,Cassandra,CouchDB等)而不是Lucene(或Solr)作为你的"数据库"?
我(我相信其他人)在答案中寻找的是对它们的深入比较.让我们一起跳过关系数据库讨论,因为它们有不同的用途.
Lucene提供了一些重要的优势,例如强大的搜索和重量系统.更不用说Solr的一个方面(Solr很快被整合到Lucene中,是的!).您可以使用Lucene文档来存储ID,并像MongoDB一样访问文档.将它与Solr混合,您现在可以获得基于WebService的负载平衡解决方案.
在讨论MongoDB的类似数据存储和可伸缩性时,您甚至可以对Velocity或MemCached等进程外缓存提供程序进行比较.
MongoDB的限制让我想起了使用MemCached,但我可以使用Microsoft的Velocity,并且对MongoDB有更多的分组和列表收集功能(我认为).无法比内存中的缓存数据更快或更具可扩展性.甚至Lucene都有一个内存提供商.
MongoDB(以及其他)确实具有一些优势,例如API的易用性.新建文档,创建ID并存储它.完成.好,易于.
假设我有一个4核CPU,我想在最短的时间内运行一些进程.这个过程理想上是可并行化的,所以我可以在无限数量的线程上运行它的块,每个线程花费相同的时间.
由于我有4个内核,我不希望通过运行比内核更多的线程来加速,因为单个内核只能在给定时刻运行单个线程.我对硬件知之甚少,所以这只是猜测.
在比线程更多的线程上运行可并行化的进程是否有好处?换句话说,如果我使用4000个线程而不是4个线程运行它,我的进程会更快,更慢,还是在大约相同的时间内完成?
我已经设置好了,我们正在运行GitLab v6.0.1的默认安装(我们即将升级).这是一个"生产"设置,遵循本指南正好写到这封信:
https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
现在,我们如何安全地更改工作安装的URL?
显然我们的网址很长,我们想出了一个新网址.我编辑了许多配置文件,"应用程序状态检查"报告一切正常.我重新启动了服务器,以确保一切正常.
我可以通过原始SSL访问Nginx.我可以浏览GitLab站点,创建一个存储库等.我可以分叉并提交就好了.
一切似乎都没问题; 但是,由于这不是我的原生环境,我想仔细检查我是否已经完成了重命名GitLab网站的所有工作.
我编辑的文件是:
/etc/hosts
127.0.0.1 localhost
10.0.0.10 wake.domain.com wake
10.0.0.10 git.domain.com git
/home/git/gitlab/config/gitlab.yml
production: &base
gitlab:
host: git.domain.com
/home/git/gitlab-shell/config.yml
gitlab_url: "https://git.domain.com"
^- yes, we are on SSL and that is working, even on a new URL
/etc/nginx/sites-available/gitlab
server {
server_name git.domain.com
Run Code Online (Sandbox Code Playgroud) main.go
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
目录结构:
%GOPATH%/src/project_name/main.go
%GOPATH%/src/project_name/static/..files and folders ..
Run Code Online (Sandbox Code Playgroud)
即使在阅读完文档后,我也无法理解http.StripPrefix
这里究竟是做什么的.
1)localhost:8080/static
如果删除,为什么我无法访问http.StripPrefix
?
2)/static
如果删除该功能,哪个URL映射到文件夹?
在Infrastructure层中对所有域层(模块,模型,实体,域服务等)的所有接口进行分组是否有意义?如果没有,创建一个将所有这些组合成共享库的"共享"项目/组件是否有意义?毕竟,"Infrastructure Layer"的定义包括"Domain,Application和UI层的共享库".
我正在考虑围绕DDD层设计我的代码库:UI,应用程序,域,基础架构.这将恭敬地创建4个项目.我的观点是,您从域层引用了基础架构层.但是,如果您在Domain Layer项目中定义接口,比如说IPost,那么当您在定义IPostRepository.Save(IPost post)方法时必须从Infrastructure项目引用Domain Layer项目时,您将有一个循环参考.因此,"定义共享库中的所有接口"的想法.
也许存储库不应该期望一个对象要保存(IPostRepository.Save(IPost post);而是期望对象的params(可能是Save()中的一长串params).给定,这可能是一个理想的情况,显示一个对象变得过于复杂,并且应该为它寻找额外的值对象.
思考?
你喜欢哪个?
每个单元测试的优点和缺点是什么?
编辑:我承认Team System提供的不仅仅是单元测试,例如应用程序和数据库的性能和负载测试.这个问题围绕着编写单元测试,你更喜欢哪个.
VIM的omnicomplete自动完成并没有像预期的那样正常工作.
有没有办法让它变得更聪明?比如,要监控环绕文本的上下文?(例如,如果在评论或引用中不要触发)
我问,因为与IDE中的自动完成/智能感知(如Visual Studio,IntelliJ,Sublime和Atom)相比,自从切换到Vim后我无法进入一个快乐的地方(我过去曾使用所有这些进行开发).
这个问题的基本目标:
我是Vim新手几个月,拼命想要顺利完成工作流程.但是如果没有一个好的自动完成选项,虽然强迫我在学习我试图使用的代码时更加警惕,但它比我过去使用的其他IDE慢得多.
让我们用Atom + Go-Plus来检验我的期望.
我有一个名为func generate(entropy chan<- uint64)
位于同一个包中另一个Go文件中其他位置的func .
当我g
在第22行输入字母时,我立即得到一个以g开头的所有内容的提示:
正如您所看到的,有3个选项可以立即弹出(前两个我认为只是代码片段).我可以使用箭头键向下滚动到任一选项.
如果我选择第3个选项(或者如果我继续输入gen
字段缩小到只有1个选项),press enter
Atom/Visual Studio/Sublime都会为我填写方法的详细信息:
我没有输入任何上述内容.它被插入,我可以覆盖细节,修改它们,或只是TAB关闭并继续键入.
让我们将其与我当前(可能已损坏?)的配置进行比较omnicomplete
.我在.vimrc中有这个:
set completeopt=longest,menuone
在vim中,如果我键入gen
,我得到的就是我之前输入的文本,我在此缓冲区的其他地方输入(并且只在此缓冲区中,而不是在其他缓冲区中).如果我碰巧拼错了一些东西,那么我得到的拼写错误的版本是我之前为了生活而打开的.这告诉我工作中没有智能感知/自动完成 - 只是监控我做的按键操作:
如您所见,自动填充功能无法正常输入.虽然,这确实在其他地方的评论和字符串派上用场,我有点像vim记得我输入的自由文本.
不确定Vim选项启用了什么; 但是,它不是自动完成.
现在,我可以按下CTRL-X + CTRL-O
强制自动完成并generate()
显示出来:
这个更好; 但是,我希望它能在我输入时向我显示自动完成选项:不需要额外的3次击键来实现它.在整个几个小时的编码中,这是很多Cx Co事件.
有没有办法让Vim在INSERT模式下监视我的击键并在有匹配的ctag或函数时显示自动完成? 这可能是此功能的答案.
自动完成有第二个问题omnicomplete
我可以忽略上面的Cx Co要求如果这样做:一旦我选择了我想要自动完成的方法,它就不会为我插入参数/字段.
回到上面的截图,如果我选择那个方法,这就是我得到的:
请注意,它不会插入 func的参数.它与上面发布的第二张图片不匹配,其中Atom,Sublime和Visual Studio中的自动完成功能都完成了参数显示的方法.
我已经阅读了vim wikia,并尝试了各种选项而set completeopt
没有任何可行的选择.
例如,set completeopt+=preview
选择后给我预览窗口: …
我目前正在上一个微服务在线课程,我将小型应用程序部署到docker容器.构建二进制文件的漫长而丑陋的命令行是这样的:
go build --tags netgo --ldflags '-extldflags "-lm -lstdc++ -static"'
Run Code Online (Sandbox Code Playgroud)
到现在为止我只是用来go install
编译我的应用程序.
任何人都可以向我解释这个命令吗?
如果在VIEW的select中包含NOLOCK,NOLOCK是否会向下传播到视图中连接的表中?如果没有,锁定VIEW的目的是什么?
示例查看代码:
CREATE VIEW [my_custom_view]
AS
SELECT
a1.[column_a], a1.[column_b], a1.[column_c], a1.[column_d]
FROM
[table_a] a1
JOIN [table_b] b1 ON b1.[column_a] = a1.[column_b]
Run Code Online (Sandbox Code Playgroud)
和NOLOCK声明:
SELECT
[column_a], [column_b]
FROM
[my_custom_view] NOLOCK
Run Code Online (Sandbox Code Playgroud) go ×2
autocomplete ×1
command-line ×1
compilation ×1
cpu ×1
github ×1
gitlab ×1
http ×1
locking ×1
lucene ×1
memcached ×1
mongodb ×1
nosql ×1
nunit ×1
omnicomplete ×1
server ×1
solr ×1
sql-server ×1
terminal ×1
unit-testing ×1
url-routing ×1
vim ×1