愛好家市場の持続性を考える際には、利用者数よりも再生産活動の有無が重要になる。鉄道模型市場はその代表例である。米国の専門誌『Model Railroader』は1934年創刊以来発行が続いている。National Model Railroad Association(NMRA)は1935年設立で、現在も会員組織として活動している。市場規模は限定的であっても、雑誌、規格、イベント、コミュニティが継続することで文化圏が維持されている。
Model Railroader (MR) is an American magazine about the hobby of model railroading. Founded in 1934 by Al C. Kalmbach, it is published monthly by Firecrown Media of Chattanooga, Tennessee. Commonly found on newsstands and in libraries, it promotes itself as the oldest magazine of its type in the United States, although it is the long-standing competitor to Railroad Model Craftsman, which - originally named The Model Craftsman - predates MR by one year.
SPDXはライセンス名を標準化した識別子で記す規格で、表記ゆれを無くし依存関係収集やNOTICE自動化を容易にします。導入は、リポジトリ直下にLICENSE、各ソース先頭へSPDXヘッダ、依存ライセンスを識別子へ正規化、NOTICEをテンプレ化し生成、の順が最短。識別子は単一「MIT」、選択「GPL-2.0-or-later OR MIT」、併用「BSD-2-Clause AND MIT」、例外「… WITH …」を用います。NOTICEは再配布時に帰属が必要な依存のみ列挙し、著作権表示と必須文言を抜粋。自動化はロックファイルから依存を列挙し、識別子・著作権者・NOTICE要否を抽出してテンプレに差し込みます。運用では識別子変換表を整え、本文同梱要件と配布モデルを確認。SBOM出力やREUSE準拠も有効です。
Cannot assign to property: 'self' is immutableというエラーメッセージはSwiftで見られるもので、これはオブジェクトのプロパティや自身の値を変更しようとした際に、そのオブジェクトが不変(immutable)であることを示しています。具体的には、以下のような状況でこのエラーが発生することが一般的です:
def permutation(list, start, end):
if (start == end):
print list
else:
for i in range(start, end + 1):
list[start], list[i] = list[i], list[start] # The swapping
permutation(list, start + 1, end)
list[start], list[i] = list[i], list[start] # Backtracking
permutation([1, 2, 3], 0, 2) # The first index of a list is zero
import copy
_stack=[]
def permutation(list, start, end,count):
if (start == end):
print(list)
else:
for i in range(start, end + 1):
_backup=copy.copy(list);
list[start], list[i] = list[i], list[start] # The swapping
_stack.append(_backup[i])
print("swapped",_backup[start],"->",_backup[i],"then",list,_stack)
permutation(list, start + 1, end,count)
_backup=copy.copy(list);
list[start], list[i] = list[i], list[start] # Backtracking
_stack.pop()
print(" backte",_backup[i],"<-",_backup[start],"then",list,_stack)
permutation(['a', 'b','c'], 0, 2,0) # The first index of a list is zero
結果はこんな感じで推移する
swapped a -> a then ['a', 'b', 'c'] ['a']
swapped b -> b then ['a', 'b', 'c'] ['a', 'b']
['a', 'b', 'c']
backte b <- b then ['a', 'b', 'c'] ['a']
swapped b -> c then ['a', 'c', 'b'] ['a', 'c']
['a', 'c', 'b']
backte b <- c then ['a', 'b', 'c'] ['a']
backte a <- a then ['a', 'b', 'c'] []
swapped a -> b then ['b', 'a', 'c'] ['b']
swapped a -> a then ['b', 'a', 'c'] ['b', 'a']
['b', 'a', 'c']
backte a <- a then ['b', 'a', 'c'] ['b']
swapped a -> c then ['b', 'c', 'a'] ['b', 'c']
['b', 'c', 'a']
backte a <- c then ['b', 'a', 'c'] ['b']
backte a <- b then ['a', 'b', 'c'] []
swapped a -> c then ['c', 'b', 'a'] ['c']
swapped b -> b then ['c', 'b', 'a'] ['c', 'b']
['c', 'b', 'a']
backte b <- b then ['c', 'b', 'a'] ['c']
swapped b -> a then ['c', 'a', 'b'] ['c', 'a']
['c', 'a', 'b']
backte b <- a then ['c', 'b', 'a'] ['c']
backte a <- c then ['a', 'b', 'c'] []
このシリーズは、単なる語彙学習本というより、執筆者の机まわりに置かれる「言葉の周辺ギア」として見るとわかりやすい。書く力そのものを直接売るというより、書く人が言葉を集め、分類し、眺め、取り出しやすくする環境を提供している。楽器でいえば、演奏技術ではなく、ストラップ、ピックケース、コード表、ペダルボードに近い。Rather than viewing this series as a mere vocabulary textbook, it makes more sense to think of it as a set of “writing accessories” kept on the author’s desk. Rather than directly selling writing skills, it provides an environment that helps writers collect, categorize, and easily access words. To use a musical instrument analogy, it’s not about playing technique, but rather about the strap, pick case, chord chart, and pedalboard.https://note.com/rodz/n/na154dcf2957b