这是我过去30分钟的问题:我的一个文件中有一些更改消失了,我不知道发生了什么.我想知道是谁做的!
我开始寻找包含我的文件的修订版:
git grep <searched_string> $(git rev-list --all) -- <file>
Run Code Online (Sandbox Code Playgroud)
是文件的路径或*.gsp之类的通配符
我得到了一些修改,我看了最后一个,并尝试得到它的孩子(认为第一个孩子应该是我的变化消失的第一个修订)
git rev-list --children <revision_id>
Run Code Online (Sandbox Code Playgroud)
是从前一个命令的最后一行开始的40个字符
越来越接近!我正在查看输出的开头,然后选择第一个子项然后运行
git log <revision_id_s_first_child> --stat
Run Code Online (Sandbox Code Playgroud)
然后我查看输出并找到我的文件,谁做了更改!(原来,我应该责怪......)
反正有没有更快地做到这一点(git责备不会显示已删除的内容)?
是否有更简洁的方法迭代一组jqlite元素而不是以下?
var els = angular.element(document.getElementById("main").children); // just as an example
for(var i=0, el; el=els[i]; i++) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,这没有任何问题,我很惊讶没有each()或forEach().我在互联网上找不到任何相关信息.
直到今天我才知道write_attribute ...
看起来像update_attribute,虽然没有调用验证仍然调用:before_save回调,而write_attribute则没有.
这是两种方法的区别吗?
我必须使用角度js实现一些标准通知UI.我的方法如下(简化):
<div ng-controller="MainCtrl">
<div>{{message}}</div>
<div ng-controller="PageCtrl">
<div ng-click="showMessage()"></div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
并且页面控制器是:
module.controller("PageCtrl", function($scope){
counter = 1
$scope.showMessage = function(){
$scope.$parent.message = "new message #" + counter++;
};
});
Run Code Online (Sandbox Code Playgroud)
这很好用.但我真的不喜欢我需要调用$ scope.$ parent.
因为如果我在另一个嵌套控制器中,我将拥有$ scope.$ parent.$ parent,这很快成为一个噩梦.
是否有另一种方法来创建这种带有角度的全局UI通知?
我有以下夹具:
link_1:
user: tom
image: boy1
created_at: <%= 5.day.ago %>
Run Code Online (Sandbox Code Playgroud)
我尝试了以下请求:
Links.where("Date(created_at) = ?", 5.day.ago.to_date)
Run Code Online (Sandbox Code Playgroud)
回答:
[]
Run Code Online (Sandbox Code Playgroud)
grrrr ....打字......打字......抓...我终于试过了:
link_1:
user: tom
image: boy1
created_at: <%= 5.day.ago.to_date %>
Run Code Online (Sandbox Code Playgroud)
和
Links.where("Date(created_at) = ?", 5.day.ago.to_date)
Run Code Online (Sandbox Code Playgroud)
终于答案了
[#<Link id: 298486374, user_id: 1038054164, image_id: 482586125, created_at: "2010-11-28 00:00:00", updated_at: "2010-12-03 21:32:19">]
Run Code Online (Sandbox Code Playgroud)
我期待什么,但为什么我需要把to_date?我不清楚,因为当我创建一个没有指定创建日期的对象时,我可以使用以下where子句选择它们而不会出现问题:
Links.where("Date(created_at) = ?", Date.today)
Run Code Online (Sandbox Code Playgroud)
任何的想法?
这是我第四次发送我的应用程序以供审核。我想使用 Instagram Basic Display API,因此需要 instagram_graph_user_media 权限才能访问媒体(顺便说一下 instagram_graph_user_profile)。我有 2 个测试用户,我的个人 IG 帐户有一堆图片,还有一个我用空提要创建的测试用户。我可以用两个用户登录。但是当 Instagram 应用审核者登录时,我的应用无法访问他们的媒体。我成功检索了访问令牌,但是到了调用 Graph API 的时候会发生什么:
https://graph.instagram.com/me/media?fields=media_type,media_url,permalink,thumbnail_url&access_token=IGQV....
返回
{"error":{"message":"Application does not have permission for this action","type":"IGApiException","code":10,"fbtrace_id":"A99vuaAC41DSvlt0Hxvcly-"}}

在遇到问题后,我自己尝试了一些东西,我尝试了文档中的示例,但遇到了类似的问题,文档是错误的,还是我在做一些愚蠢的事情?
我尝试执行的示例是此页面中的示例:https : //www.apollographql.com/docs/apollo-server/federation/introduction/
相关的一段代码是:
const server = new ApolloServer({
schema: buildFederatedSchema([{
typeDefs: gql`
extend type Query {
me: User
}
type User @key(fields: "id") {
id: ID!
username: String!
}
`,
resolvers: [],
}, {
typeDefs: gql`
extend type Query {
topProducts(first: Int = 5): [Product]
}
type Product @key(fields: "upc") {
upc: String!
name: String!
price: Int
}
`,
resolvers: [],
}, {
typeDefs: gql`
type Review {
body: String
author: User @provides(fields: "username")
product: Product
} …Run Code Online (Sandbox Code Playgroud) 当我这样做
{"New York"=>33, :Versailles => 3231}.to_xml
Run Code Online (Sandbox Code Playgroud)
我明白了
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<hash>
<Versailles type=\"integer\">3231</Versailles>
<New York type=\"integer\">33</New York>
</hash>
Run Code Online (Sandbox Code Playgroud)
我原本以为轨道会把"纽约"称为"纽约",不是吗?
这是我使用await / async的漂亮代码
monthlyBuckets(req, res) {
const monthlyBuckets = []
const now = DateTime.local()
let date = config.beginningOfTime
while (date < now) {
monthlyBuckets.push({
epoch: date.toMillis(),
month: date.month,
year: date.year,
actions: await redis.get(`actions_monthly_${date.year}_${date.month}`),
interested: await redis.scard(`sinterested_monthly_${date.year}_${date.month}`),
adventurous: await redis.scard(`sadventurous_monthly_${date.year}_${date.month}`),
active: await redis.scard(`sactive_monthly_${date.year}_${date.month}`),
})
date = date.plus({month: 1})
}
res.status(200).json(monthlyBuckets)
}
Run Code Online (Sandbox Code Playgroud)
我喜欢它,但是不并行执行这么多请求会导致请求时间接近3秒。
因此,这是我没有异步/等待的丑陋解决方案,只是承诺:
monthlyBuckets(req, res) {
const monthlyBuckets = []
const actions = []
const interested = []
const adventurous = []
const active = []
const now = DateTime.local()
let …Run Code Online (Sandbox Code Playgroud) 我正在编写测试,我想知道在测试期间是否有办法更改当前日期?
关键是我正在测试应用程序的统计功能,该功能连接到每次调用操作时创建实例的跟踪模型(仅通过"before_filter only"调用跟踪某些操作)
因此,我需要在不同的时间点在不同的控制器中调用此操作来测试我的分析组件正在进行正确的计算,但我没有找到任何方法在以下示例代码中实现change_current_time:
test "login count" do
change_current_time(2.day.ago)
get "users/login/testuser/testpassword"
assert login_count(2.day.ago) == 1
change_current_time(1.day.ago)
get "users/login/testuser/testpassword"
get "users/login/testuser1/testpassword1"
assert login_count(1.day.ago) == 2
end
Run Code Online (Sandbox Code Playgroud) 我需要得到一个按照我在DB中为这些位置的图片数排序的位置列表,这是我的查询
Location.select(:city).group(:city).order("SUM(images_count) DESC").sum(:images_count)
Run Code Online (Sandbox Code Playgroud)
这很像一个魅力,不幸的是,我现在需要添加省和国家,以防止出现歧义,所以我现在有这个
Location.select(:city, :province, :country).group(:city, :province, :country).order("SUM(images_count) DESC").sum(:images_count)
Run Code Online (Sandbox Code Playgroud)
这不起作用:(
有人可以帮我解决这个问题吗?
activerecord ×3
angularjs ×2
apollo ×1
async-await ×1
es6-promise ×1
fixtures ×1
git ×1
graphql ×1
jqlite ×1
revision ×1
sum ×1
testing ×1
time ×1
unit-testing ×1
xml ×1