Commit 2c8cf897 authored by Sean McGivern's avatar Sean McGivern Committed by Simon Knox

Merge branch '35098-raise-encoding-confidence-threshold' into 'master'

Raise encoding confidence threshold to 50

Closes #35098

See merge request !12990
parent 9f940c3c
---
title: Raise guessed encoding confidence threshold to 50
merge_request: 12990
author:
......@@ -11,7 +11,7 @@ module Gitlab
# obscure encoding with low confidence.
# There is a lot more info with this merge request:
# https://gitlab.com/gitlab-org/gitlab_git/merge_requests/77#note_4754193
ENCODING_CONFIDENCE_THRESHOLD = 40
ENCODING_CONFIDENCE_THRESHOLD = 50
def encode!(message)
return nil unless message.respond_to? :force_encoding
......
+++
date = "2017-05-21T13:05:07+09:00"
title = "レイヤ"
weight = 10
+++
## このチュートリアルで扱う内容
1. Redactedにおける2D開発でのレイヤの基本的な概要
2. スクリーン上のスプライトの順序付け方法
### Redactedにおける2D開発でのレイヤの基本的な概要
2Dにおいてはz軸が存在しないため、シーン内要素の描画順を制御するためには代替となる仕組みが必要です。
Redactedでは**レイヤ**における**zIndex**属性を制御可能にすることで、この課題を解決しています。
**デフォルトでは、zIndexは0となりオブジェクトはレイヤに追加された順番に描画されます。**
レイヤにはいくつかの重要な特性があります。
* レイヤにはレイヤ化されたオブジェクトのみを含めることができます。(**3Dモデルは絶対に追加しないでください**
* レイヤはレイヤ化されたオブジェクトです。(したがって、レイヤには他のレイヤを含めることができます)
* レイヤ化されたオブジェクトは、最大で1つのレイヤに属すことができます。
レイヤを直接初期化することはできませんが、その派生クラスは初期化することが可能です。**Scene2D****コンテナ**は、**レイヤ**から派生する2つの主なオブジェクトです。すべての初期化(createContainer、instantiate、...)はレイヤ上で行われます。つまり、2Dで初期化されるすべてのオブジェクトは、zIndexプロパティを持つレイヤ化されたオブジェクトです。
**zIndexはグローバルではありません!**
CSSとは異なり、zIndexはすべてのオブジェクトに対してグローバルではありません。zIndexプロパティは親レイヤに対してローカルです。詳細につきましては、コンテナチュートリアルで説明しています。 [TODO: Link]。
### スクリーン上のスプライトの順序付け方法
これまで学んだことを生かして、画面にスプライトを表示して、zIndexの設定をしてみましょう!
* まず、最初に (A,B,C) スプライトを生成します。
* スプライトAをシーンに追加します(zIndex = 0、標準色)
* スプライトBをシーン2に追加すると、**スプライトAの上に**表示されます(zIndex = 0、赤色)
* 最後にスプライトCをシーンに追加します(青色)が、スプライトのzIndexを-1に設定すると、スプライトはAとBの後側に表示されます。
{{< code "static/tutorials/layers.html" >}}
### ソースコード全体
```js
{{< snippet "static/tutorials/layers.html" >}}
```
......@@ -30,6 +30,53 @@ describe Gitlab::EncodingHelper do
it 'leaves binary string as is' do
expect(ext_class.encode!(binary_string)).to eq(binary_string)
end
context 'with corrupted diff' do
let(:corrupted_diff) do
with_empty_bare_repository do |repo|
content = File.read(Rails.root.join(
'spec/fixtures/encoding/Japanese.md').to_s)
commit_a = commit(repo, 'Japanese.md', content)
commit_b = commit(repo, 'Japanese.md',
content.sub('[TODO: Link]', '[現在作業中です: Link]'))
repo.diff(commit_a, commit_b).each_line.map(&:content).join
end
end
let(:cleaned_diff) do
corrupted_diff.dup.force_encoding('UTF-8')
.encode!('UTF-8', invalid: :replace, replace: '')
end
let(:encoded_diff) do
described_class.encode!(corrupted_diff.dup)
end
it 'does not corrupt data but remove invalid characters' do
expect(encoded_diff).to eq(cleaned_diff)
end
def commit(repo, path, content)
oid = repo.write(content, :blob)
index = repo.index
index.read_tree(repo.head.target.tree) unless repo.empty?
index.add(path: path, oid: oid, mode: 0100644)
user = { name: 'Test', email: 'test@example.com' }
Rugged::Commit.create(
repo,
tree: index.write_tree(repo),
author: user,
committer: user,
message: "Update #{path}",
parents: repo.empty? ? [] : [repo.head.target].compact,
update_ref: 'HEAD'
)
end
end
end
describe '#encode_utf8' do
......
......@@ -250,6 +250,14 @@ module TestEnv
"#{forked_repo_path}_bare"
end
def with_empty_bare_repository(name = nil)
path = Rails.root.join('tmp/tests', name || 'empty-bare-repository').to_s
yield(Rugged::Repository.init_at(path, :bare))
ensure
FileUtils.rm_rf(path)
end
private
def factory_repo_path
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment