OmniAICreator/Qiita-1.07M huggingface dataset:
siunitx で \pi とか \sigma とかのギリシャ文字を入れる

## はじめに
siunitx の使い方で詰まったところの備忘録です．
日本語文献が見当たらなかったので作成しておきます．

## 失敗例
ふつうにやるとコンパイルが通りません．
```tex
真空の透磁率は $\mu_0 = \SI{4\pi e-7}{N/A^2}$
% Package siunitx Error: Invalid number '4\pi e-7'.
```

## 対策
siunitx の公式で対策方法の記載があります．
プリアンサンブルに以下のコードを追加します．
これによって `\pi` も数値のように扱うことができるようになります．
```tex
\sisetup{input-digits = 0123456789\pi}
```
こんな感じでコンパイルできます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642842/895385cd-624c-7cc0-aa99-f468d104ddcd.png)

## 参考文献
* siunitx – A comprehensive (si) units package∗ https://texdoc.org/serve/siunitx/0#page=72.3
* https://tex.stackexchange.com/questions/539827/error-with-siunitx-package-pi-as-a-number-and-detect-all
Gitの履歴操作: merge、rebase、squashの違い

![スクリーンショット 2025-01-06 15.47.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576061/16bc4883-a5b0-0cbd-caee-cef57571c624.png)

# Gitの履歴操作
チームによってGitの履歴操作のルールは違います。
代表的な３つのGitの履歴操作方法を紹介します。
最後に注意点も記述しているのでお見逃しなく。

## 1. merge
他のブランチの変更をそのまま統合する方法で、マージコミットを生成し、履歴がそのまま保持されます。

**Pro**
- 履歴をそのまま保持できる
- 各ブランチでの変更が明確に分かる
- 他のメンバーと協力して作業しているときに安全
- 履歴にマージコミットが残るので、どのタイミングで統合されたかが分かりやすい

**Con**
- マージコミットが増えて履歴が複雑になる
- 履歴が直線的にならず、ブランチが混ざる
- 履歴が冗長になることがある（無駄なマージコミットが増える）

## 2. rebase
他のブランチの変更を自分のブランチの先頭に適用する方法で、履歴を直線的に整理できますが、履歴が書き換えられます。

**Pro**
- 履歴が直線的になり、理解しやすくなる
- マージコミットが生成されないため、履歴がすっきりする
- 履歴が一貫しているので、後からの追跡が容易
- 自分の作業ブランチを最新のリモートに合わせて整理できる

**Con**
- 履歴が書き換えられるため、公開後にリベースを行うと問題が生じる可能性がある
- 初心者には操作が少し難しい（特にコンフリクト時）
- 他のメンバーと共有した後にリベースを行うと、履歴が混乱する可能性がある

## 3. squash
複数のコミットを1つにまとめて、履歴を整理し、不要な中間コミットを排除します。

**Pro**
- 複数のコミットを1つにまとめて履歴を整理できる
- 細かいコミットが不要な場合にスッキリとまとめられる
- コードレビューがしやすくなる（1つのまとまったコミットでレビューできる）
- 無駄な中間コミットを履歴から排除できる

**Con**
- 各コミットの詳細が失われ、履歴が単純化されすぎる可能性がある
- 履歴の透明性が低下し、後から変更の理由や流れを追いづらくなることがある
- 途中の変更がまとめられるので、どの段階でどんな作業をしたかが分かりにくくなる

## 注意点

コミット履歴を直線的（linear）にしたいならば、rebaseやsquashが推奨されますが、上記のproとconの記載通り注意しないといけない点があります。

それは**rebaseするとコミット履歴が書き換えられる**という点です。
どういうことかというと以下の図の通りです。
![スクリーンショット 2025-01-06 16.17.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576061/a296176e-da6d-3100-2bb5-bfd4f3ae8940.png)

一度プッシュされたブランチでrebaseしてしまうと、remoteとlocalのリポジトリでコミットの不一致が起きます。他のメンバーがそのブランチで作業しているならなお最悪です。

そのためrebaseをする際は十分に注意を払い、**既にプッシュされたブランチではrebaseは行わない**というルールを設けましょう。
Enumについて調べていたらconst enumに出会った話

# 前回の記事の振り返り
先日TypeScriptのEnumについての記事を書かせていただきました
その時のEnumは
- 定数名 => 定数
- 定数 => 定数名
のように相互マッピングされているオブジェクトらしいです
```TypeScript:Node.js
var testEnum;
(function (testEnum) {
    testEnum[testEnum["AAAAA"] = 0] = "AAAAA";
    testEnum[testEnum["BBBBB"] = 1] = "BBBBB";
    testEnum[testEnum["CCCCC"] = 2] = "CCCCC";
    testEnum[testEnum["EEEEE"] = 5] = "EEEEE";
    testEnum[testEnum["DATE"] = date] = "DATE"; // Unix時間になる
})(testEnum || (testEnum = {}));
```
これがトランスパイル後のコードなんですが、よく見るとそこまで難しい話ではなくて
即時実行関数に`var testEnum`で宣言された変数を渡していて、OR演算子の短絡評価で空オブジェクトで初期化され
キー内から評価されるので`testEnum["AAAAA"] = 0`が評価され、testEnum.AAAAAに0が入っています
代入演算子は返り値として代入する値を返すので`0`が返され、`testEnum[0] = "AAAAA";`となります
その結果
- `testEnum["AAAAA"]`=>`0`
- `testEnum[0]`=>`"AAAAA"`
の両方が成り立つオブジェクトが出来上がります

ただの型安全性に守られているだけオブジェクトなので、型安全性を破壊されてしまうと普通に上書きされてしまうという......

ここから本編です

# const enumについて

Enumについて調べている途中const Enumというものを見つけました
Enumと違ってインライン展開される、という説明があったんですが、いまいちピンとこないので実際に書いて動かして見ます
```TypeScript:TypeScript
const enum testEnum {
  AAAAA,      // 0
  BBBBB,      // 1
  CCCCC,      // 2
  EEEEE = 5,  // 明示的に5になる
}

/* 
  という形で宣言し
  以下のように使用する
*/

console.log(testEnum.AAAAA)       // 0

const testVar1 = testEnum.BBBBB
console.log(testVar1)             // 1

let testVar2 = testEnum.CCCCC     // 2
testVar2 += 10
console.log(testVar2)             // 12

console.log(testEnum.EEEEE)       // 5

//testEnum.AAAAA = 10 //これはエラー

//@ts-expect-error
testEnum.AAAAA = 10               //型チェックを無視すればコンパイルはできる
console.log(testEnum.AAAAA)       // error
```

このコードのコンパイル結果が以下です
```TypeScript:TypeScript
// const enum文が消えている

console.log(0 /* testEnum.AAAAA */);

const testVar1 = 1 /* testEnum.BBBBB */;
console.log(testVar1);

let testVar2 = 2 /* testEnum.CCCCC */;
testVar2 += 10;
console.log(testVar2);

console.log(5 /* testEnum.EEEEE */);

//@ts-expect-error
0 /* testEnum.AAAAA */ = 10;       // ランタイムエラー
console.log(0 /* testEnum.AAAAA */);
```

testEnumだった部分が数値リテラルに変換されています
これによって型安全性が破壊されてしまったとしても、リテラルにリテラルを代入することになるのでランタイムエラーになります
代わりに変数をenumで定義することができくなるのですが定数を定義するものなのでそこまで問題は無いでしょう

基本的に管理する、人が読む可能性のあるのは.tsファイルでトランスパイル後を読むことはなかなかないと思います
そうならばconst enumのほうがいいのかも知れませんね

今日も型安全に

# まとめ
- 基本的にはenumと変わらない
- 変数を指定できない
- 参照はリテラルに変換される
- 型安全性が破壊されても実態がリテラルなのでランタイムエラーになる
ubuntu22.04のネットワークを管理しているソフトを特定する方法


ネットワーク接続を管理するとき、OSにもよりますが複数の方法がありますよね
debian系のosならnetplanだとか、systemd-networkdだとか、他にも複数の管理ツールがあります
それぞれ設定方法が違って、設定ファイルのパスを間違えれば適応されないし
合ってたとしても違う管理ツールの設定をしていたらもちろん適応されません

まずはどのツールで管理されているのか特定したいです
最近改めてその方法を知ったので書き残しておきます

# 環境
- OS: ubuntu22.04
- kernel: 5.15.0-130-generic
- systemd: 249.11-0ubuntu3.12

k8sのコントロールプレーンとして稼働させているVM上のubuntuです

# ネットワークを管理しているツールの特定

といってもそこまで仰々しいものではなく、言われてみればという内容なのですが

```bash:bash
sudo systemctl is-active "<任意の管理ツール>"
```

これの出力結果がactiveかinactiveか確認するというだけのものです
activeであると分かればあとは対応する設定方法を調べて適応するだけです
海外時間→日本時間への変換で addHours 関数を使ってはいけない理由

# はじめに
ごきげんよう、百合宮桜です。
最近、SNS で Power Automate 内でのタイムゾーン変換に addHours 関数を使う方々が散見されます。

https://learn.microsoft.com/ja-jp/power-automate/minit/date-and-time-operations#addhoursdatecount

タイムゾーンの変換するには **推奨できない方法** なので、なぜやってはいけないのか？を書き留めておこうと思います。

# 正確性にかける

addHours 関数で行えることは日時の加算 / 減算であり、時差計算は正確に行えない可能性があります。
例えば、アメリカ / ワシントン には夏時間（サマータイム）というものが存在します。これは日中の明るい時間を有効活用するために、通常の時間よりも時計を数時間すすめる制度です。このため、季節によって時差の計算がずれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/240c786e-7ff6-d097-723e-da6d6da80149.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/77daa531-eb3b-966d-8a74-6d2247e89d4c.png)

addHours 関数でこの計算を行うには日付による条件分岐を挟まなくてはならず、現実的には言えません。
また、時差の計算は単なる加算 / 減算ではなく、地球の自転と経度に基づいて計算されています。そのため、単なる加算 / 減算を行うための関数では計算すると **考慮不足** が発生します。

https://e-manabi-kobetsu.com/1881/

# メンテナンス性が悪い
夏時間の期間は各国の政府や関連機関が決めています。addHours 関数で時差計算を行う場合はそれに合わせて、条件分岐のメンテナンスを行わなければならず非効率です。

# タイムゾーン変換を変換するためのアクションや関数が存在する

Power Automate にはタイムゾーン変換をササッとやってくれる便利なアクションや関数が存在ます。これらを使えば、夏時間を考慮したメンテナンスは不要なので、こっちを使う方が断然効率的です。

## タイムゾーンの変換

Power Automate で使えるアクションです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/3e7a0771-93e9-78fd-eb74-41782b9666a4.png)

以下の項目をプルダウンからポチポチ選ぶだけであっという間に変換できる優れものです(≧▽≦)

- Base time : 変換したい日時
- Source time zone : 変換前のタイムゾーン
- Destination time zone : 変換後のタイムゾーン
- Time unit : 日時の形式

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/e52b2ee1-79f0-193b-9407-999383830bbf.png)

詳細は以下のドキュメントをご確認ください。

https://learn.microsoft.com/ja-jp/power-automate/convert-time-zone#convert-a-time-zone-using-an-action

## convertTimeZone 関数
Power Automate で使用できる関数です。式を書きたいときはこちらを使います。

```
convertTimeZone(
    変換する日時,
    変換前のタイムゾーン，
    変換後のタイムゾーン,
    日時の形式
)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/d3a36c42-2db1-7302-3209-47623ba3e20c.png)


https://learn.microsoft.com/ja-jp/power-automate/convert-time-zone#convert-a-time-zone-using-an-expression

タイムゾーン名は以下を参照してください。

https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11

日時の形式（書式）パターンについては以下を参照してください。

https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/standard-date-and-time-format-strings#LongTime

# おわりに
関数やアクションにはそれぞれ役割があります。
役割にあった活用をしてあげてくださいね！
それではごきげんよう。
Lambda レイヤー カスタム makefile を使用してレイヤーを構築する

# Lambda レイヤー カスタム makefile を使用してレイヤーを構築する

[Lambda レイヤー カスタム makefile を使用してレイヤーを構築する](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/building-layers.html)

# ディレクトリ構成
```
├── layer
│   └── node-base-layer
│       └── Makefile # 大文字「M」
├── package.json
└── template.yaml
```

# SAM template
```./template.yaml
Globals:
  Function:
    Layers:
      - !Ref NodeBaseLayer  # 使用するレイヤー

Resources:
  # -------------------------
  # Lambda レイヤーの構築
  # -------------------------
  NodeBaseLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: node-base-layer  # レイヤーの名前
      ContentUri: layer/node-base-layer  # レイヤーのコンテンツURI
      CompatibleRuntimes:
        - !Ref FunctionRuntime  # 対応するランタイム
      RetentionPolicy: Delete  # レイヤーの保持ポリシー
    Metadata:
      BuildMethod: makefile

  NodeBaseLayerPermission:
    Type: AWS::Lambda::LayerVersionPermission
    Properties:
      Action: lambda:GetLayerVersion  # アクション: レイヤーのバージョン取得
      LayerVersionArn: !Ref NodeBaseLayer  # 対象のレイヤーARN
      Principal: !Ref AWS::AccountId  # アクセスを許可するプリンシパル
```

# Makefile
- ファイル名は、大文字から始める
- `cd`は使えない
- リソースには、`ARTIFACTS_DIR`からの相対パスで！

```./layer/node-base-layer/Makefile

# build-(LogicalResourceId)
build-NodeBaseLayer:
	mkdir -p "$(ARTIFACTS_DIR)/nodejs"

	# package.jsonをコピー
	cp "$(ARTIFACTS_DIR)/../../../package.json" "$(ARTIFACTS_DIR)/nodejs" 

	# モジュールのインストール
	npm install --omit=dev --prefix "$(ARTIFACTS_DIR)/nodejs"
```
CodeGeneratorを見てみた

# CodeGenerator 
```rb
module ActiveSupport
  class CodeGenerator 
...
    def initialize(owner, path, line)
      @owner = owner
      @path = path
      @line = line
      @namespaces = Hash.new { |h, k| h[k] = MethodSet.new(k) } # 空のハッシュができる
      @sources = []
    end
```
https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activesupport/lib/active_support/code_generator.rb#L53C4-L59C8

#### `@namespaces = Hash.new { |h, k| h[k] = MethodSet.new(k) }`
https://qiita.com/masatom86650860/items/2642c1b7996bbd513ddb

### MethodSetクラス　
```rb
    class MethodSet
      METHOD_CACHES = Hash.new { |h, k| h[k] = Module.new }

      def initialize(namespace)
        @cache = METHOD_CACHES[namespace]
        @sources = []
        @methods = {}
        @canonical_methods = {}
      end
```
https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activesupport/lib/active_support/code_generator.rb#L5C1-L13C10
AIを使ったゲームを作成しました（Star Hands）

# 動機
Tensorflow.jsを使うとブラウザだけでAIを使ってハンドジェスチャーを識別できることを知りました。ハンドジェスチャーをいろいろと機械学習させているうちに、ゲームに使えそうだなと思って作り始めました。

# ゲーム概要
カメラに映った手のポーズで敵を攻撃する3Dシューティングゲームです。効果音を入れて敵を倒した時の爽快感を重視してます。

# URL
https://masic-code.github.io/star-hands/game

# 技術要素
クライアント側（ブラウザ）で動作するものだけです。サーバー処理は一切ありません。
- Tensorflow.js
- Three.js
- React

# 動作環境
- カメラが付いているノートPC、デスクトップPCを推奨
- ブラウザはChromeを推奨
- 処理が重めなので、まあまあスペックの良いPCを推奨

# 画面
![{529DA779-9FF3-4668-A27B-2F3F8D7E04A9}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255657/c83be46a-2c29-b06b-0d09-24bfc5b51a9e.png)

![{790D69FE-CD09-402B-A32A-16A65D023599}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255657/431a8143-4f97-ab54-5ea0-6273ed473491.png)

# ゲームで使えるジェスチャー
- 通常攻撃
    - 銃のポーズで構えてバーンって撃つ感じで攻撃できます
- チャージショット
    - 銃のポーズで停止しているとチャージされます（最大5段階）。この状態でバーンって撃つ感じで貫通攻撃できます
- デコピン
    - 敵をデコピンすると敵を後ろに下げることができます

# ジェスチャーの学習
ジェスチャーの認識が悪い場合に再学習できるようにトレーニング用の画面も作ってあります。

# 今後の予定
アイテムを取得したら武器の威力が強くなるとか入れようかなと思ってます。他のジェスチャーを使った攻撃や防御もアイディアが浮かんだら入れる予定です。
Azure OpenAI Serviceの活用


# 1. Azure OpenAI Serviceの基本構造
Azure OpenAI Serviceは、OpenAIのモデル（GPT、Codex、DALL-Eなど）をAzureプラットフォーム上で利用可能にするサービスです。このサービスでは、REST APIやAzure SDKを使用してモデルを呼び出すことができます。

## 基本構成要素
### モデルの種類:
①GPTモデル: 自然言語処理全般（会話、要約、分類など）。
②Codex: プログラムコード生成や解析。
③DALL-E: テキストから画像生成。
### エンドポイント: Azure OpenAIは専用エンドポイントを提供。APIキーを使って認証を行います。

### スケーラビリティ: リクエスト負荷に応じたスケールアウトが可能。

API呼び出し例（Pythonによる実装）
python
import openai

openai.api_key = "your-api-key"
openai.api_base = "https://your-resource-name.openai.azure.com"

response = openai.Completion.create(
    engine="text-davinci-003",  # 使用するモデル
    prompt="Explain the concept of cloud computing.",
    max_tokens=100,
    temperature=0.7,
)

print(response["choices"][0]["text"].strip())
# 2. 実践的なユースケース
(1) 自然言語処理を活用した業務効率化
課題: 顧客サポートの自動化。
解決: GPTモデルを用いたFAQ生成や、問い合わせの自動回答システムを構築。
実装ポイント:
ユーザーの入力テキストをAPIに送信し、推奨される回答を取得。
Azure Logic Appsと統合して、回答プロセスを自動化。
(2) プログラムコードの自動生成
課題: 開発プロセスの効率化。
解決: Codexを利用して、コードスニペットの自動生成やドキュメントの生成を実現。
実装例: 開発環境（VS Code）に統合することで、リアルタイムのコード提案を実現。
python
response = openai.Completion.create(
    engine="code-davinci-002",
    prompt="Write a Python function to calculate Fibonacci sequence.",
    max_tokens=150,
)
print(response["choices"][0]["text"].strip())
(3) カスタムモデルのトレーニング
Azure OpenAIでは、企業のドメイン知識に基づいてカスタムモデルを微調整可能。
手順:
トレーニングデータ（JSON形式）を準備。
Azure Machine Learningと連携してトレーニングを実施。
カスタムモデルをデプロイし、専用エンドポイントを生成。
# 3.複雑なマルチクラウド運用
1. マルチクラウド環境の設計戦略
(1) 基本アーキテクチャ
各クラウドの強みを活かすハイブリッドアプローチ。
例:
Azure: AIモデルやデータ分析の基盤。
AWS: 大容量のデータストレージとマイクロサービス。
Google Cloud: 高速なデータ処理（BigQueryなど）。
(2) マルチクラウド用ツールの選定
インフラ管理:
Terraform: IaCを用いたクラウド間のリソース管理。
Pulumi: プログラミング言語ベースのIaC。
ネットワーク管理:
AWS Transit GatewayやAzure Virtual WANを使用してクラウド間接続を最適化。
コンテナ管理:
Kubernetes（K8s）: マルチクラウド間でのコンテナ化アプリケーションの一元管理。
(3) データ連携
ETLパイプライン:
Azure Data Factoryを使用して、異なるクラウド間のデータを同期。
AWS Glueとの組み合わせで大規模データを処理。
python
Azure Data FactoryでのETLワークフロー例
from azure.identity import DefaultAzureCredential
from azure.mgmt.datafactory import DataFactoryManagementClient
クライアント初期化
credential = DefaultAzureCredential()
adf_client = DataFactoryManagementClient(credential, "your-subscription-id")
データセットとパイプラインを作成するコード...
2. 技術的な課題と解決策
(1) 複雑性の管理
課題: 異なるクラウドのAPIや管理手法の習熟が必要。
解決: 共通ツール（Terraform、Kubernetes）で標準化。
(2) データセキュリティ
課題: 複数クラウド間でのデータ転送時の暗号化が必須。
解決策:
各クラウドの暗号化サービス（Azure Key Vault、AWS KMS）を活用。
クラウド間通信でVPNやSSL/TLSを使用。
(3) コスト管理
課題: 複数クラウドの使用によりコストが不透明に。
解決策:
FinOpsツール（CloudHealth、Spot.io）でリアルタイムコスト分析を実施。
各サービスのリソーススケーリングを自動化。
# 4.具体的なシナリオ例: Azure OpenAIとマルチクラウド運用の融合
シナリオ:
eコマースプラットフォームで、Azure OpenAIを活用したカスタマーサポートボットを構築し、AWS上のデータウェアハウスと連携して顧客データをリアルタイム分析する。

アーキテクチャ:
Azure: OpenAI Service + Logic Appsで問い合わせ対応。
AWS: 顧客データをRedshiftに格納。
Google Cloud: BigQueryでの行動パターン分析。
【GitHub】リモートにあるブランチをローカルブランチに持ってくる

メンバーが手元のブランチでエラーが出た内容を自身のローカルに複製する際に、使用しました。
誰かの参考になれば幸いです。





1. **リモートリポジトリの最新情報を取得する**

   ```bash
   git fetch
   ```

   これにより、リモートリポジトリから最新のブランチ情報がローカルに取得されます。

2. **リモートの `dev` ブランチをローカルに切り替える**

   ```bash
   git switch dev
   ```

   このコマンドを実行すると、ローカルに存在しない `dev` ブランチがリモートから自動的に作成されます。

   git switch -cを使用し、明示的に作成することも可能です。

   ```bash
   git switch -c dev origin/dev
   ```

   これで、リモートの `origin/dev` ブランチを基にしたローカルの `dev` ブランチが作成されます。

3. **ブランチが正しく作成されたか確認する**

   ```bash
   git branch
   ```

   このコマンドで、現在のローカルブランチ一覧が表示され、`dev` ブランチが存在することを確認できます。

これで、ローカル環境にリモートの `dev` ブランチと同じ内容のブランチが作成されました。
Git の基本的な流れ

![スクリーンショット 2025-01-06 14.55.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576061/9a7c2b4d-0572-a277-4775-3af3dd7f83e1.png)

# チーム開発における Git の基本的な流れ

**1. プロジェクトを手元にコピー（初回のみ）**

```git clone <リポジトリURL>```

**2. 自分が作業するブランチに切り替え**

```git switch <ブランチ名>```

```git switch -c <新しいブランチ名>```

**3. 変更したファイルをステージング**

```git add .```


**4. ローカルリポジトリにコミット**

```git commit -m "作業内容の説明"```

**5. リモートリポジトリに変更を送信:**

```git push origin <ブランチ名>```

**6. 他のメンバーの変更を取り込む（必要に応じて)**

```git pull origin <ブランチ名>```
【kintoneノーコード開発】選択式のフィールドはどれを選ぶ？

# はじめに
こんにちは、現在kintoneノーコード開発で日々試行錯誤しているばんちゃん（[@Banchan_k12](https://x.com/Banchan_k12)）です。
今回はkintoneアプリフィールドのうち、選択式のフィールド４種類をどんなときにどう選ぶかについて、考えていった過程を記録しようと思います。

### 対象
- kintoneアプリ設定を始めたが、選択式のフィールド区別がよくわからずどれを設定したらよいかお悩み中の方
- 選択式のフィールドについてあまり認識がないままとりあえず設定している方

# 導入
kintoneアプリのフィールド設定をする中で、選択式のフィールドを用いる機会がありますが、どんな場合にどの選択式フィールドを選ぶかということを改めて考えると結構悩みます。

### 選択式フィールドの特長
![スクリーンショット 2025-01-08 225040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957411/004d0c26-507c-a024-03fd-f5b4cf75d8fc.png)



### いざ、どれを選ぶ？
特長を比較したところで、どれを選んでいくかですが（私個人の判断基準です）
##### 1つ選択の場合
- 基本的には「ドロップダウン」を選択
- 初期値が固定で入力必須の場合は「ラジオボタン」を選択
:::note info
例えば、下記のステータス項目のように、初期値が「進行中」で入っていて、
進捗によって初期値から変更する場合など

![スクリーンショット 2025-01-05 171635.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957411/96293428-f723-13b7-05fd-636b8e966319.png)
:::
##### 複数選択の場合
- 選択肢の数が多い、文字が長い場合は「複数選択」を選択
- 選択肢の数が少ない、文字が短い場合は「チェックボックス」を選択
:::note info
例えば、チェックボックスは「済」のときのレ点チェックに使ったりなど、
使い勝手は様々あります。

![20250105_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957411/1785f59b-7e6c-4991-6c16-d69a2cce0450.png)
:::

# まとめ
選ぶ基準としては、好み！もありますね。
各選択式のフィールドの特長と、自分が設定したい内容を照合しながら、
運用時の入力不都合がないようにフィールドを選んでいきたいと思います。
【勉強記録】USキーボードに変えてみた

# はじめに
こんにちは！アメリカで独学でソフトウェアエンジニアを目指しているものです。
実は先日現在使っているキーボードを日本のキーボードからUSキーボードに変えたので日本のキーボードと違う点を書いていきたいと思います

## USキーボードに変えた理由
もともとは日本のキーボードを使っていましたが、以下の理由でUSキーボードに変えました

* 日本のキーボードのタイプ音がうるさくて怒られた
妻からタイピングの音がうるさいといわれたので変えました！それが一番大きいですね
* USキーボードはプログラミングに向いていると聞いたから
どこかのタイミングで変えようとは思っていたのでとてもいい機会だと思っています
## 日本のキーボードとUSキーボードの違い
日本のキーボード（JIS配列）とアメリカのキーボード（US配列）の主な違いは以下のような点にあります。

### 配列の違い
#### Enter
日本のキーボードではEnterキーが縦長でL字型です。一方でUSキーボードではEnterキーが横長で水平になっています。ここはそれほど大きな変化ではないような気がします

#### スペースキー:
日本のキーボードではスペースキーが短く、両端に「変換」「無変換」キーがありますが、USキーボードではスペースキーが長く、両端に「変換」「無変換」はありません。

#### 記号の位置:
USキーボードでは、記号が打ちやすくシングルクォーテーションやバッククォーテーションがshift を押さなくても押せるのがメリットだと思います

### 日本語入力のキー
日本のキーボードの場合は、右上にあるボタンを押せば簡単に日本語切替にできますが、USキーボードの場合は、Shift+caps(別途設定必要)を押す必要があります。

## 個人的な感想
買ったキーボードの矢印ボタンがとても小さいのでUSキーボードはとても使いずらく感じますが、まだ使い始めて2日くらいしかたっていないのでこれから慣れてくるかなと思います。
一番の魅力はやはりシングルクォーテーションやバッククォーテーションがshift を押さなくても押せることですね。これを加味するとプログラムを書く方はかなりいいのではないでしょうか
日本でもおそらくUSキーボードは買えるので一度試してみるのもありかもしれません。

# まとめ
本日はUSキーボードに切り替えてどのような特徴があったかと個人的な感想を上げました。
USキーボード以外にも気になったらすぐに試してみたい性格なので、また何か試して面白そうなら記事にしようと思います。
皆さんもぜひUSキーボードに変えて快適なプログラミングライフを過ごしてください！
【AWS】Amazon S3 Glacier のボールトロック

## S3 Glacier のボールトロックって何？
　AWS-SCSの資格勉強中にどうしてもイメージが沸かなかったので、実際にハンズオンしてみることにしました。

 私は、勘違いしていたのですがS3 Glacierのボールトロック操作は、S3のコンソール画面からは出来ません！
 （あれ、何でS3バケットにアップロードしたオブジェクトのファイルに対して、ボールトロック操作ができないんだろう？と悩んでいました。）

 そしてボールトというのは、アーカイブされたデータ（動画や画像、テキストなど）を保管しておく保管庫みたいなものであり、ボールトロックはその保管庫をロックして、アクセスや削除、編集操作を禁止すること。

## 作業手順
1. S3 Glacier画面にてボールトの作成
2. 1で作成したボールトにボールトロック開始操作（initiate-vault-lock）
3. ボールトロック中止操作（abort-vault-lock）
4. 再度、ボールトロック開始操作
5. ボールトロック完了操作
6. ボールトの削除
※こちらのサイトを参考にしました。

https://docs.aws.amazon.com/ja_jp/amazonglacier/latest/dev/vault-lock-walkthrough.html



### 1. S3 Glacier画面にてボールトの作成
・S3 Glacier画面にて「ボールトを作成」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/f363c836-5c5d-75c1-ac46-372513f90af0.png)

・作成されたボールトの確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/5e8d631b-5c65-f158-76e8-776d63fd34b0.png)


### 2. 1で作成したボールトにボールトロック開始操作（initiate-vault-lock）
・ボールトロックポリシー作成
（ポリシー内容：365 日経過していないアーカイブの削除権限を拒否する）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/0c9eb5f9-dca6-b7e0-50eb-fa1a51634631.png)


### 3. ボールトロック中止操作（abort-vault-lock）
・「ボールトロックポリシーを削除」押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/9b8774f1-7682-2a75-a267-cc26351fe15b.png)


### 4. 再度、ボールトロック開始操作
・2と同様の操作を実施


### 5. ボールトロック完了操作
・「ボールトロックポリシーを完了」押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/f8d5ab3b-84fc-8676-aa34-1a1aee2ecab5.png)

・ロックIDを入力し、「ボールトロックを完了」押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/622ddee3-341a-7853-fb70-b088f0b226d4.png)

・「ボールトロックポリシー」がロック済みであることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/acf28c37-6bf0-46fc-857d-0d505c7143ed.png)


### 6. ボールトの削除
・自身が作成したボールトの削除
※ボールトロックが完了後（24時間経過後もしくは任意のタイミング）、ボールト内のデータの編集などはできないため、新規でボールトを作成し、古いボールト内のアーカイブデータを削除した後に、古いボールトの削除処理を行う必要がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3898218/025f6e81-74ed-bca3-2b3c-0060a44b57ba.png)


## さいごに
　AWS-SCS演習問題で出題された「initiate-vault-lock」、「abort-vault-lock」の理解がハンズオン通して、さらに深くなりました。
【情報処理安全確保支援士】合格体験記

# はじめに
令和6年秋の情報処理安全確保支援士試験に合格しました。先輩方の合格体験記を参考にさせていただいたので還元できればと思います。お役に立てれば幸いです。

# 業務経験と保有資格について
現在24歳で、製造業で情シスをしています。業務経験としては一年半ほどです。情報セキュリティについて業務上関わることはなく、令和6年春に応用情報を取得した際、軽く勉強した程度でした。

# 勉強期間について
4月に応用情報技術者試験を受験した翌日から勉強を開始しました。しかし、大学の授業と並行していたため、試験まで一貫して勉強を継続できたわけではありませんでした。

また、セキュリティ分野は初学者だったこともあり、具体的なイメージが湧きにくく、次第に勉強が苦しく感じるようになりました。そこで、学習の助けになればと考え、ハンズオン形式の学習を取り入れるために [TryHackMe](https://tryhackme.com) を始めました。

これらを総合すると、試験のために実際に勉強した期間は約120時間（2か月）ほどになります。

## TryHackMe について

>[TryHackMe](https://tryhackme.com)とは、サイバーセキュリティを実践的に学べるオンラインプラットフォームです。初心者にはLinuxやネットワークの基礎から始められる教材が用意されており、上級者にはペネトレーションテストやCTF（Capture The Flag）を通じて高度なスキルを磨く機会を提供します。仮想環境で学習しながら進捗を可視化できるため、効率よく体系的にセキュリティスキルを習得できます。（ChatGPTより）

TryHackMeを始めてみると、意外にも楽しく、試験勉強そっちのけで一か月ほど熱中してやっていました。しかし、この経験を通してCVEやハッキング手法に関する知識が身につきました。

寄り道のようで、結果的にこの経験が試験勉強の効率を高めてくれたなと後から思いました。セキュリティ初学者の方にはおすすめのサービスです。
なによりRoomの攻略が楽しい！

![スクリーンショット 2025-01-06 101648.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522032/8ca9113e-6051-f48d-5d94-d1600064846e.png)

余談ですが、昨年8月ごろにRankを50,000位まで上げたものの、現在（2025年1月時点）では65,000位まで下がっていました。:sob:
今年は継続してRoom攻略に励み、[GOD]を目指したいと思います。

![スクリーンショット 2025-01-06 101726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522032/6b949922-970e-2152-5c5a-e2139898a1ce.png)

# 午前Ⅱ対策
[過去問道場](https://www.sc-siken.com/sckakomon.php)で空き時間を見つけてポチポチ解いていました。過去問からの流用が非常に多いので、やらない手はないです。最終的には過去22回分の過去問をすべて即答できるまでやりこみました。

![スクリーンショット 2025-01-06 132906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522032/ffd8be6e-19c4-3c07-8142-7d3729c3406b.png)

# 午後対策
試験の1か月前から過去問の演習を開始し、直近10回分の試験を一通り解きました。毎朝の通勤時間を活用し、大問を1つずつバインダーに挟んで電車内で解くことを習慣化していました。

よく言われていることですが、午後試験では国語力が求められる場面が多く、問題に対して正確に解答を作成する能力が試されます。そのため、過去問を多く解くことが有効な対策だと感じました。

さらに、出題傾向を把握し、本番で解く問題をあらかじめ決めておくことも重要です。私の場合、フロントエンド技術には詳しくなかったため、XSSなどに関連する問題は避け、得意分野であるネットワーク系の問題に集中しました。

また、採点基準が明確でない以上、少しでも部分点を積み上げることが合格への近道です。過去問演習の段階から「わからないから空欄にして答えを確認する」のではなく、「わからないなりに考え、自分なりに解答を埋める」練習をすることが効果的だと感じました。

# 結果
![スクリーンショット 2025-01-06 134209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522032/7286d36b-4773-86aa-b288-901036106941.png)
午後はかなりギリギリでしたが、合格できました。
試験後の手ごたえ的には五分五分だったので、試験結果を見たときにはホッとしました。

# さいごに
情報セキュリティ業界や、情報セキュリティを勉強しているお友達がいないので募集中です。Twitterをやっているので気軽に話しかけてください。よろしくお願いします！

https://twitter.com/7UD4NUM4
VSCodeのクイックオープンを使いこなす

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94360/28eea4ac-fb36-3136-4e3c-88bcae0a2919.png)

Visual Studio Codeの便利機能のひとつである「クイックオープン」は、ファイル数が多いプロジェクトでも、ファイルの検索をスムーズに行える強力なツール。本記事では、クイックオープンの基本的な使い方から、応用的な使いこなしについて解説します。

---

## 基本的な使い方

- Windows/Linuxの場合: `Ctrl + P`
- macOSの場合: `Cmd + P`

このショートカットでパレットを開くことができます。

パレットが表示されたら、開きたいファイル名を入力するだけで、簡単にファイルを開くことができます。ファイル名は完全一致でなくてもよく、一部が合っていれば、似ているファイル名の順に一覧表示します。

### 裏技：`P`キー連打でファイルを選択できる！

パレットを開いた状態で、Ctrl キーを押したまま `P` を何度か押すと、押した数だけカーソルが下に移動していきます。そして Ctrl キーから指を離すと、選択したファイルが開きます。直前に開いたファイルをまた開くなら、2ストロークで済みます（※後述のctrl + tab なら1ストロークですが）。

---

## 「最近開いたもの」順に表示されるから便利

オープン済みのファイルをまた編集する場合、サイドバーの『開いているエディター』を使うエンジニアが多いと思いますが、多くのファイルが並ぶ中、目視で探すのは疲れる作業です。クイックオープンでは、**直近で作業したファイルが上位に表示される**ため、この負担を大幅に軽減できます。

**具体例:** Laravel・CakePHPのようなMVCフレームワークで開発を行う場合を考えてみます。MVCフレームワークでひとつの機能改修を行う場合、複数のファイルに実装が分散するのが普通です。

- **テンプレートファイルの編集**
- **モデルの確認**
- **マイグレーションの変更**

これらを頻繁に行き来する際、クイックオープンを利用すれば、対象ファイルへスムーズにアクセスできます。「さっき開いたファイルをまた開く」のであれば、ほとんど画面を見ずに開くことができます。

---

## その他の便利な使い方

クイックオープンには、さらに便利な機能があります。

### 1. 行番号に移動する

ファイル名の後に `:` を付けて行番号を記入すると、指定した行に直接移動できます。

```
index.php:25
```

これで、`index.php` の25行目に移動します。

### 2. シンボルに移動する

`@` を入力すると、現在のファイル内で利用可能なシンボル一覧が表示され、メソッドやプロパティなどにスムーズに移動できます。

```
userctrl@edit
```

Usersコントローラのeditメソッドだったら、こんな感じで一発です。`ctrl` という文字列でも controller と認識されます。



### 3. カテゴリー別のシンボルに移動する

`@:` を入力すると、シンボルがカテゴリーごとに整理して表示されます。

### 4. プロジェクト内テキスト検索

`%` を入力すると、パレット内でテキスト検索ができます。サイドバーを使わずにキーボードだけで軽快に検索できるのがポイントです。

---

## 補足：`Ctrl + Tab` で最近使ったファイルを高速に切り替え！

「クイックオープン」と合わせて覚えておくと便利なのが、**`Ctrl + Tab`** です。クイックオープンと違い、開いているファイルのみを対象とします。

これは「最近使ったファイル」の一覧を、順番にすばやく切り替えることができるショートカットです。「最近使ったファイル」ビューと比べて、直近に開いた順で並んでくれるのが大きなポイントです。2～3ファイルくらいを対象に集中的に作業をしている時にはとても強いです。

普段「最近使ったファイル」をよく使う人でも、ファイルを開きすぎて探しにくくなったときに、この `Ctrl + Tab` が真価を発揮します。「最近使ったファイル」は卒業していいと思います。

とても使いやすくて、私の場合、何も考えず手クセでパカパカ切り替える感じなので、１時間あたり数百回くらい `Ctrl + Tab` を叩いてます。あ、切り替えなくてもよかった！って時はもう一回 `Ctrl + Tab` で戻るだけで、ほぼ無意識です。

いったん閉じてしまうと `Ctrl + Tab` では開けないので、クイックオープンもまあまあの頻度で使います。

---

## 終わりに

クイックオープンの基本的な使い方と、「最近開いたもの」を最大限利用する `Ctrl + Tab` の便利さを紹介しました。

これらをうまく使いこなせば、プロジェクト内のファイル操作が驚くほどスムーズになり、開発効率もアップします。今日からぜひ実践してみてください！
WSL2のUbuntuでdocker構築

# はじめに
WSL2上のUbuntuにdockerを構築したのでその備忘録です。

## 記事の要約

- WSL上のUbuntuにDockerをインストールする手順を説明
  - 古いDockerパッケージを削除し、新しいGPGキーを追加してから、DockerとDocker Composeを正常にインストールすることができる
  - 注意点として、古いパッケージを削除しないとインストールに失敗することがある
- sudoなしでDockerを実行するためにユーザーをdockerグループに追加する必要がある

# 手順

## インストール

WSLでUbuntuを起動

```powershell
PS C:\Users\Nichi\work> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-24.04    Stopped         2
PS C:\Users\Nichi\work> wsl -d Ubuntu-24.04
```

古いDocker関連パッケージを削除

```bash
sudo apt-get remove docker docker-engine docker.io containerd runc

```

パッケージリストの更新

```bash
sudo apt-get update
```

必要な依存パッケージのインストール

```bash
sudo apt-get install -y ca-certificates curl gnupg lsb-release
```

Docker公式GPGキーの追加

```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

再度パッケージリストの更新

```bash
sudo apt-get update
```

dockerのインストール

```bash
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

インストールできたか確認

```bash
nichi@Priv-001:/mnt/c/Users/Nichi/work$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:5b3cc85e16e3058003c13b7821318369dad01dac3dbb877aac3c28182255c724
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
```

## sudoなしでDockerを実行する設定

ユーザーをdockerグループへ追加

```bash
sudo usermod -aG docker $USER
```

## Docker composeのインストール

既に入ってました。

```bash
nichi@Priv-001:/mnt/c/Users/Nichi/work$ sudo apt-get install docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
docker-compose-plugin is already the newest version (2.32.1-1~ubuntu.24.04~noble).
0 upgraded, 0 newly installed, 0 to remove and 39 not upgraded.
```

バージョン確認

```bash
nichi@Priv-001:/mnt/c/Users/Nichi/work$ docker compose version
Docker Compose version v2.32.1
```

# まとめ

- 普通にUbuntu上に構築するのと変わらない
- 古いDocker関連パッケージ削除を端折ると失敗するで注意
生成AI時代のプログラミング科目の試験問題の試み（その２）

[昨年の記事](https://qiita.com/Yh_Taguchi/items/8c8ad130a3032720fa66)に続いて今年もやってみました。o1がリリースされたりしていて更にLLMの能力が上がっており、LLMに丸投げしても正解は得られないが学生でも答えられる問題はなかなか作るのが難しくなっています。今年はこんな問題でした。
>dy/dx=f(x,y)をルンゲクッタで解く。x=1からx=100までの解yを１０×１０の行列にしたものをAとする。bを長さ１０のベクトルとし1,...,10が入っているとする。Ax=bという連立一次方程式の解をガウスの消去法で求めるプログラムを作ってください。Numpyは使ってよいが、出来合いのプログラム（例えばルンゲクッタやガウスの消去法を行うパッケージをimportして使うなど）は使わないでください。f(x,y)とy(0)の値は適当に決めてよい。

o1にやらせてみた結果は[ここ](https://chatgpt.com/share/677b67c4-f720-8004-b942-c40dd6046a4c)にあります。
実はこの設問には罠があります。o1は勿論、この問題をちゃんと解くのですがdy/dx=f(x,y)を「素直なf」で解くと行列に入れるべき１００個の数も「なめらかな数」になってしまうのでAは正則ではない（列ベクトル、または、行ベクトルが線形従属）場合が多く、o1の作ったプログラムはうごきません（o1は最初dy/dx=-yを選択したので見事にＡが正則ではなくなってしまってうごかないです）。
さすがのo1もそこまでは頭がまわりません。ここで学生は「○○というエラーが出てしまった」とo1に尋ねるべきで、そうするとo1は正しく「Ａが特異行列になっています。ODEを工夫してください」と答えるので「答えが得られるようなfを工夫してください」とお願いするとやっと正しいコードを出します。
実際には学生は課金していないでしょうから、o1は使えないでしょうし、無料版だともっと苦労するかもしれません。それでもただコピペをしただけでは答えが出ない問題は作れましたし、学生は線形従属だと連立方程式は解けないという（１年生の時に習った線形代数の）知識を覚えていないと先にはすすめないかもしれません。まだ採点していないのでわかりませんが、あんまり学生はできていないかも、ですね。
以上、o1でも簡単には答えをだせないけど、学生が頑張れば答えられるような問題の試みでした。みなさんはどんな工夫をしていますか？
基本的な送信と受信

### フレームの中身
>データ・リンク層が送信側のネットワーク層からパケットを受け取ると、パケットに`データ・リンク・ヘッダー`と`トレーラー`を付加してフレームの中に格納する。したがって、フレームは中に入られた`パケット`と(ヘッダー中の)
`制御情報`、`（トレーラ中の）チェックサム`とから構成されている。

#### トレーラとは
>イーサネットでは、データの前に附加するヘッダに加えて、データの後にトレーラが附加されます。このトレーラは、`FCS（Frame Check Sequence）フィールド`と呼ばれ、`送信途中でエラーが起こっていないかをチェックする機能`を担っています。送信側で`FCSフィールドにエラーチェック用にCRC（Cyclic Redundancy Check）`という値を入れて送信し、受信側でその値を使用してエラーが起こっていないかを判断します。

https://www.miraclejob.com/recommend/detail?cd=810#:~:text=%E3%81%8C%E5%85%A5%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E3%83%88%E3%83%AC%E3%83%BC%E3%83%A9,%E3%81%8C%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%8B%E3%82%92%E5%88%A4%E6%96%AD%E3%81%97%E3%81%BE%E3%81%99%E3%80%82,-%E4%BB%A5%E4%B8%8A%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%AF%E5%B1%A4

### フレームを物理層へ/からの送受信するための手続き
>次いでフレームは相手のマシン上のデータ・リンク層へと伝送される。フレームを送出させるための`to_physical_layer`という手続きと、フレームを受信するための`from_physical_layer`という手続きがあるものとしよう。これらの手続きを計算して付け加えたり検査したりする（これらはハードウェアで行われる）ので、本項で開発するプロトコルの観点からそれについて心配する必要はない。

### フレームを受信時チェックサムが正しくない、正しいかのどちらかがデータリンク層に伝わる
>フレームが受信側に到着すると受信側はチェックサムを計算する。フレーム中のチェックサムが正しくない(すなわち送信誤りがあった）時はには、データ・リンク層にそのことが伝わる(event = cksum_err)。また入力フレームが損傷なく到着した場合には、データ・リンク層にその旨が伝わる(event = frame_arrival)ので、from_physical_layerを用いてフレームを獲得して検査する。

### パケット以外はネットワーク層に渡さない
>受信側のデータ・リンク層は損傷ないフレームを得ると直ちにヘッダーの制御情報を調べすべてが正しければ、パケットの部分をネットワーク層に渡す。決してヘッダーがネットワーク層に渡されることはない。

### ネットワーク層とデータリンク層を分けることで変更による影響をなくす
>ネットワーク層にフレーム・ヘッダーを決して渡さないのにはちゃんとした理由がある。`ネットワーク層のプロトコルとデータ・リンク層のプロトコルを完全に分離する`ためである。ネットワーク層がデータ・リンク・プロコトルやフレーム・フォーマットについて何も知らなければ、`ネットワーク層のソフトウェアを何も変更することなくこれらのものを変更することができる`。これは、コンピュータに新たなNICを設置するたびに起こる。ネットワーク層とデータ・リンク層の間の厳格なインタフェースを用意することで、`異なる層のプロコトルを独立に進化させる`ことができるため、設計作業がずっと簡単になる

https://bookplus.nikkei.com/atcl/catalog/23/03/16/00728/
エッジコンピューティング vs. クラウドコンピューティング：トレンドと将来の展望

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/edge-computing-vs--cloud-computing-trends-and-future-projections_601915?spm=a2c65.11461433.0.0.4ee353553LTf3v)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# クラウドコンピューティングとエッジコンピューティング：それぞれの意味と重要性

スマートフォンで写真を撮影していると想像してみてください。これらの写真は、エッジコンピューティングのようにスマートフォンに直接保存することも、クラウドコンピューティングのようにGoogle Photosにアップロードすることもできます。両方にはそれぞれ利点があり、今日のテクノロジーではしばしば両方を使用しています。これらの用語が何を意味し、私たちの日常生活にどのように影響を与えるのか詳しく見ていきましょう。

## クラウドコンピューティングとは？

クラウドコンピューティングをインターネットを通じてアクセスできる巨大なデジタルストレージユニットと考えてみてください。自分のデバイスにすべてを保存する代わりに、このクラウド（実際には大規模データセンターにある強力なコンピューター）に保存します。これはどこからでもアクセスできる巨大な外部ハードドライブのようなものです！

クラウドコンピューティングには主に3つのタイプがあります：
- インターネットを通じて使用するソフトウェア（例: Gmail）
- インターネット上のストレージスペース（例: Google Drive）
- オンラインでアプリを作成するためのツール（開発者が使用するもの）

日々使用している可能性のあるクラウドコンピューティングの例：
- Netflixがストリーミングできる映画や番組を保存
- Google Docsが文書をオンラインで保存
- Spotifyが数百万曲の音楽を再生可能にする
- iCloudがiPhoneの写真をバックアップ

## エッジコンピューティングとは？

エッジコンピューティングは、あなたの近くにある小さなコンピューターです。遠くのサーバーにデータを送信する必要はありません。情報はソースのすぐそばで処理されます。町の向こう側の人間ではなく、ポケットにある電卓で数学の問題を解くことを想像してください。これが人々がエッジコンピューティングを好む理由です：
- データが遠くまで移動する必要がないので速い
- 敏感な情報が近くに保たれる
- インターネット経由で送信するデータ量が少ないのでコストが低い
- インターネットが不安定でも動作し続ける

現実世界でのエッジコンピューティングの例：
- スマートドアベルカメラがローカルでビデオを処理
- 自動運転車が即座に決定を行う
- 工場のロボットが環境に対応
- スマートスピーカーが即座に音声コマンドを理解

## 両者の比較

主な違いを見てみましょう：

### 速度
- **クラウド**: データが遠くまで移動するので時間がかかる
- **エッジ**: データが近くに留まるので速い

### 成長可能性
- **クラウド**: 非常に大きく、非常に早く成長できる
- **エッジ**: 地元の設備によって制限される

### 安全性
- **クラウド**: すべての卵を1つの籠に入れるようなもの
- **エッジ**: リスクが分散される

### コスト
- **クラウド**: 使用した分だけ支払うが、インターネットのコストがかさむ
- **エッジ**: 地元のタスクに対してコスト効率が高い

### 最適な用途
- **クラウド**: 大量のデータを保存するのに最適
- **エッジ**: 即時のレスポンスが必要なものに最適

## 未来の展望

### クラウドコンピューティングの未来
- 複数のクラウドサービスを使用する企業が増え、異なる銀行に口座を持つようなものになる
- 人工知能がクラウドサービスをより賢くする
- データセンターがより環境に優しくなる

### エッジコンピューティングの未来
- ローカルでデータを処理するデバイスが増える（例: よりスマートな家庭電化製品）
- 5Gネットワークによりエッジコンピューティングがさらに高速になる
- AIがクラウドではなく直接デバイス上で動作する

## どちらを使うべきか？

### クラウドコンピューティングは以下の方向に向かっている：
- 複数のクラウドサービスを一緒に使用
- 人工知能を追加
- 環境に優しいデータセンターを構築

### エッジコンピューティングは以下により成長している：
- より多くのスマートデバイス
- 5Gネットワークの高速化
- ローカルでのよりスマートな処理

## よくある質問 (FAQs)

Q: 両者の最大の違いは何ですか？
A: エッジコンピューティングはデータの発生源に近い場所で動作します。クラウドコンピューティングはデータを遠くのサーバーに送信します。

Q: どちらが速いですか？
A: エッジコンピューティングは、データが遠くまで移動しないため、即時タスクに対して速いです。

Q: 両者は一緒に機能しますか？
A: はい！多くの企業は最良の結果を得るために両方を使用しています。

Q: どちらが安全ですか？
A: エッジコンピューティングは、データが近くに保たれるため、敏感なデータに対してより安全です。

Q: どの業界が最もエッジコンピューティングを必要としていますか？
A: 即時のレスポンスが必要な会社 - 例えば病院、工場、小売店、自動車メーカーなど。

## まとめ

クラウドコンピューティングとエッジコンピューティングをライバルではなくチームメイトと考えてください。前者は大量のデータの保存と処理に優れていますが、後者は即時的なローカルレスポンスに優れています。テクノロジーが進化するにつれて、これらの方法がより完璧に連携して、私たちのデジタルライフをより簡単かつ効率的にするでしょう。最善のアプローチは通常、即時的なニーズにはエッジコンピューティング、そして大量のデータの保存や重い処理にはクラウドコンピューティングを使用することです。これは、すぐに現金にアクセスできる財布と大きな貯蓄のために銀行口座を持つことと同じで、それぞれが生活をより便利にする役割を果たします。

**免責事項: ここに表明されている見解は参考用であり、必ずしもアリババクラウドの公式見解を表すものではありません。**
アリババクラウド、強化された視覚的推論のための新しい研究モデルを発表

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/alibaba-cloud-unveils-new-research-model-for-enhanced-visual-reasoning_601914?spm=a2c65.11461433.0.0.4ee353553LTf3v)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# アリババクラウド、新たな研究モデルQVQ-72B-Previewを発表

![1_jpeg](https://yqintl.alicdn.com/f41cef260ab226548cabf2aab636c9594883596f.jpeg)

アリババクラウドは最近、視覚的推論能力の向上を目指して設計されたオープンソースの実験的研究モデル<a href=https://qwenlm.github.io/blog/qvq-72b-preview/ target=_blank>QVQ-72B-Preview</a>（以下「QVQ」）を導入しました。QVQは、多様なベンチマークで優れたパフォーマンスを発揮するマルチモーダル推論用のオープンウェイトモデルです。特に注目すべきは、マルチモーダル大規模マルチタスク理解（MMMU）ベンチマークにおいて70.3%という印象的なスコアを達成し、その強力な多分野理解と推論能力を示したことでしょう。<a href=https://mathvision-cuhk.github.io/ target=_blank>MathVision</a> — マルチモーダル数学的推論テストセット — においても、先行モデルであるQwen2-VL-72Bモデルを超える結果を達成しています。さらに、オリンピック競技レベルのバイリンガルマルチモーダル科学ベンチマークテストセットであるOlympiadBenchでの優れたパフォーマンスは、QVQが複雑かつ挑戦的な問題を効果的に解決する能力を強調しています。

![2](https://yqintl.alicdn.com/bb8c3d8fcdc00ea058928d18a039e08dc0b12a61.png)

段階的な推論を通じて、QVQは視覚的推論タスクにおける性能を強化しており、特に高度な分析思考が必要なシナリオで優れた成果を上げています。しかし、有望なパフォーマンスにもかかわらず、QVQにはいくつかの制限があります。例えば、複数ステップの視覚的推論において、モデルは画像の内容に徐々に焦点を失い、幻覚を引き起こす可能性があります。QVQはオープンソース化されており、<a href=https://huggingface.co/Qwen/QVQ-72B-Preview target=_blank>Hugging Face</a>、<a href=https://qwenlm.github.io/blog/qvq-72b-preview target=_blank>Github</a>、およびアリババのオープンソースコミュニティ<a href=https://modelscope.cn/models/Qwen/QVQ-72B-Preview target=_blank>Model Studio</a>で実験することができます。

![3](https://yqintl.alicdn.com/3028e627029169826e0bf5ae638b353463d42b32.jpeg)
QVQによる数学問題の解決例

[QVQが数学の質問に応答するデモビデオ](https://video-intl.alicdn.com/2025/Blog/QVQ-math-1.mp4)

先月、アリババクラウドは推論AIモデルQwQ（Qwen with Questions）をリリースしました。リリースされたバージョン<a href=https://www.alizila.com/news-roundup-key-developments-in-ai-black-friday-kick-off-and-accessibility-initiatives/ target=_blank>QwQ-32B-Preview</a>は、320億パラメータを持つオープンソースの実験的研究モデルで、印象的な分析能力を持ち、数学やプログラミングの複雑な問題解決に優れています。2023年に初めてオープンソース化されて以来、Hugging FaceではQwenファミリーのモデルに基づいて78,000以上の派生モデルが開発され、世界で最も広く採用されているオープンソースモデルの一つとしてその地位を確立しています。

この記事は<a href=https://www.alizila.com/alibaba-cloud-unveils-new-research-model-for-enhanced-visual-reasoning/ target=_blank>Alizila</a>にCrystal Liuによって元々掲載されました。
cookieとセッションの違いをかみ砕きすぎるくらい説明

## 結論
結論から話しますが、**セッション管理の手段としてのcookie**って感じです。
よくわからないと思うので、次からの解説を読んでください。
## 注意
あくまで、意味を大雑把に理解するのが目的なので結構、抽象的に書いてます。正確性に欠けてます。
正確性を目的としている方は他を参考にしてください。

## セッションとは？
そもそもセッションっていうのは何なんでしょう？

webサーバは、基本的に忘れっぽいんです。
誰かがサーバーを訪れました、次の瞬間には訪れた人のことを忘れます。
この忘れっぽさのことを専門的にはステートレスな通信とか言います。
（まぁ正確に言えばちょっと違うけど、、、）
でもそれじゃぁ困るときありますよね！？

例えば、Amazonで買い物をしたとき、
買い物かごに商品を入れました。次にページに遷移したら買い物かごの商品が分からなくなった。
こんなことあっていい訳ない。
サーバーはすぐ忘れるから、買い物かごに商品を入れた！っていう処理をした次の瞬間には、誰の買い物かごに入れた処理だったのかわかんなくなってしまうんですね。
（まぁここも正確に言えばちょっと違うけどニュアンスこんな感じね、、、）

そんなこんなでこれを防ぐ仕組みとして、**セッションID**ってのがあるんです。
セッションIDを一言で言うならば**整理券（メモ）配布作戦**のこと
どういうことか、今の例を参考にするなら、

誰かが買い物かごに商品を入れました。入れた瞬間にwebサーバーは商品を入れたっていう処理と**同時に、あなたは、何番の人ですっていうメモ的なものっていう情報をブラウザ側に渡します。**
そしてその情報を次にサーバーに通信するときに渡せば、サーバー側は、「あなたは何番の人だね！そういえば、カートに商品入れてたよね！！」って**番号をもとに前まで行っていた処理を思い出すことができます。**

なんて画期的な方法でしょう！
よく言われる、仕事内容忘れるからメモしておけっていうのをそのままサーバーもやってるっていう話です。
この時の整理券（メモ）的なのでやり取りする管理を**セッション管理**といいます。

## cookieとは？
さぁここで疑問に思った人もいるんじゃないでしょうか？

【誰かが買い物かごに商品を入れました。入れた瞬間にwebサーバーは商品を入れたっていう処理と**同時に、あなたは、何番の人ですメモ的なものっていう情報をブラウザ側に渡します。**】

この部分、　**「ブラウザ側に渡しますってどう渡すの？」**　と、疑問に思った人は天才です。
ここで出てくるのがcookieです。
メモ的なものをブラウザで保存します。
その方法の一つにcookieがあります。

cookieを一言でいえば、**ユーザーの情報だったりあれやこれらをブラウザに保存しておく仕組みです。**
保存している情報は様々です。
ログイン情報や場合によっては個人情報なんかも保存されます。

そこでピンときませんか？

【そんないろんな情報を格納するなら、ここにさっきの整理券（メモ）みたいなのも保存しておけばいいじゃんと。】

そうなんです。それを実現するのが**Session Cookie**というやつなんです。

cookieについて少し深堀たいんですが、cookieは主に２種類分けられます。
**Persistent CookieとSession Cookie**です。
Persistent Cookieっていうは、我々が普段から想像するであろう、cookieの印象に近いcookieです。ログイン情報の保存や永続的なデータの保存がされます。

そしてもう一つが、今話題に上がってるSession Cookieです。
（英語嫌なので以下セッションcookieって言います）
もうお気づきでしょう。セッションはセッションcookieに保存されます。これは我々が想像する印象に近いcookieとは種類の違うcookieです。セッションcookieは一時的なcookieっていうイメージです。イメージですというかそういうものです。
そこにメモを保存して次にサーバーを訪れるときにそのメモを渡せば、サーバーが物忘れしても問題ないです！

＊**補足（誤解を生まないために）**
セッションcookieはセッションを管理する専門のcookieというわけではありません。
また、セッションの管理の方法は、セッションcookieを使ったものだけではありません。
URLにセッションIDを含める方法などもあります。
あくまで、セッション管理にcookieが使われるからそこをごちゃごちゃにならないようにねという説明のための文章なので、抽象的な説明ですがご考慮いただければ幸いです

## まとめ
今までのをまとめると、
　- webサーバー忘れっぽいんだよね～（ステートレスな通信のため）
　- なんかいい方法ないかな？
　- そうだ整理券（メモ）を使おう！（セッションIDで管理する方法）
　- cookieにメモを保存して次通信するときに一緒に持ってきてもらおう！
　- 
結論をまとめるとすれば、
**セッションは、サーバーがだれかを識別するための手段であり、それにcookieが使われるよっていう話です。**
だから初めに話した通り,セッション管理の手段としてcookieがあるのでcookieとセッションは、全然違うのです。

## 最後に
だいぶかみ砕いています。
大方cookieとセッションの違いについてのイメージは伝わったでしょうか？
何度も言いますが正確性に欠けます。
そこについては各自で調べてください。
picoCTF 2019 writeup vault-door-training

## vault-door-training (Reverse Engineering)

Your mission is to enter Dr. Evil's laboratory and retrieve the blueprints for his Doomsday Project. The laboratory is protected by a series of locked vault doors. Each door is controlled by a computer and requires a password to open. Unfortunately, our undercover agents have not been able to obtain the secret passwords for the vault doors, but one of our junior agents obtained the source code for each vault's computer! You will need to read the source code for each level to figure out what the password is for that vault door. As a warmup, we have created a replica vault in our training facility. The source code for the training vault is here: VaultDoorTraining.java

添付ファイル
・VaultDoorTraining.java

とりあえず、添付ファイルを確認する。
```java
import java.util.*;

class VaultDoorTraining {
    public static void main(String args[]) {
        VaultDoorTraining vaultDoor = new VaultDoorTraining();
        Scanner scanner = new Scanner(System.in); 
        System.out.print("Enter vault password: ");
        String userInput = scanner.next();
	String input = userInput.substring("picoCTF{".length(),userInput.length()-1);
	if (vaultDoor.checkPassword(input)) {
	    System.out.println("Access granted.");
	} else {
	    System.out.println("Access denied!");
	}
   }

    // The password is below. Is it safe to put the password in the source code?
    // What if somebody stole our source code? Then they would know what our
    // password is. Hmm... I will think of some ways to improve the security
    // on the other doors.
    //
    // -Minion #9567
    public boolean checkPassword(String password) {
        return password.equals("w4rm1ng_Up_w1tH_jAv4_be8d9806f18");
    }
}
```

フラグが得られた。
`picoCTF{w4rm1ng_Up_w1tH_jAv4_be8d9806f18}`
エッジコンピューティング vs. クラウドコンピューティング：トレンドと将来の展望

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/edge-computing-vs--cloud-computing-trends-and-future-projections_601915?spm=a2c65.11461433.0.0.4ee353553LTf3v)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# クラウドコンピューティングとエッジコンピューティングの違いと重要性

スマートフォンで写真を撮影していると想像してみてください。これらの写真は、エッジコンピューティングのようにスマートフォンに直接保存することも、クラウドコンピューティングのようにGoogle Photosにアップロードすることもできます。両方にはそれぞれメリットがあり、現代の技術ではどちらもよく使われています。これらの用語が何を意味し、私たちの日常生活にどのように影響するのかを詳しく見ていきましょう。

## クラウドコンピューティングとは？

クラウドコンピューティングをインターネットを通じてアクセスできる巨大なデジタルストレージユニットと考えてください。自分のデバイスにすべてを保存する代わりに、このクラウド（実際には大規模データセンター内の強力なコンピュータ）に保存します。これは、どこからでもアクセスできる巨大な外付けハードディスクを持っているようなものです。

クラウドコンピューティングには主に3つのタイプがあります：
- インターネットを通じて使用するソフトウェア（Gmailなど）
- インターネット上のストレージスペース（Google Driveなど）
- オンラインでアプリを作成するためのツール（開発者が使用するものなど）

日々使用しているかもしれないクラウドコンピューティングの例：
- Netflix：映画や番組をストリーミングで視聴できるように保存
- Google Docs：文書をオンラインで保存
- Spotify：数百万曲の音楽を再生可能に保持
- iCloud：iPhoneの写真をバックアップ

## エッジコンピューティングとは？

エッジコンピューティングは、あなたがいる場所に近いミニコンピュータです。遠くのサーバーにデータを送る必要はありません。情報はソースのすぐ近くで処理されます。たとえば、数学の問題を解かせるために街の反対側にいる人に頼む代わりに、ポケットにある計算機を使用するようなイメージです。

エッジコンピューティングが好まれる理由：
- データが遠くまで移動しないため高速
- 敏感な情報が近くに保たれる
- インターネットを介して大量のデータを送信する必要がないためコストが低い
- インターネットが不安定でも動作し続ける

エッジコンピューティングの実際の例：
- スマートドアベルカメラ：ビデオを局所的に処理
- 自動運転車：即時的な決定を下す
- 工場のロボット：環境に応答
- スマートスピーカー：音声コマンドを即時に理解

## 両者の比較

主な違いを見てみましょう：

### 速度
- **クラウド**：データが遠くまで移動するため時間がかかる
- **エッジ**：データが近くに留まるため高速

### 成長可能性
- **クラウド**：非常に速く大きく成長できる
- **エッジ**：地元の設備によって制限される

### 安全性
- **クラウド**：すべての卵を1つの籠に入れるようなもの
- **エッジ**：リスクを分散させる

### コスト
- **クラウド**：使用した分だけ支払うが、インターネットコストが加算される
- **エッジ**：局所的なタスクに対してコスト効率が高い

### 最適な用途
- **クラウド**：大量のデータを保存するのに適している
- **エッジ**：即時的な応答が必要なものに適している

## 未来の展望

### クラウドコンピューティングの未来
- 複数のクラウドサービスを使用する企業が増える（異なる銀行に口座を持つようなもの）
- 人工知能によりクラウドサービスがよりスマートになる
- データセンターがより環境に優しくなる

### エッジコンピューティングの未来
- より多くのデバイスが局所的にデータを処理する（スマート家電など）
- 5Gネットワークによりエッジコンピューティングがさらに高速化
- AIがクラウドではなくデバイス上で直接動作する

## どの場合にどの技術を使うべきか？

### クラウドコンピューティングの進展
- 複数のクラウドサービスの併用
- 人工知能の追加
- より環境に優しいデータセンターの構築

### エッジコンピューティングの進展
- より多くのスマートデバイス
- 高速な5Gネットワーク
- 地元でのよりスマートな処理

## よくある質問 (FAQs)

Q: 両者の最大の違いは何ですか？
A: エッジコンピューティングはデータの発生源に近いところで動作します。クラウドコンピューティングはデータを遠くのサーバーに送ります。

Q: どちらが速いですか？
A: 即時的なタスクでは、データが遠くまで移動しないためエッジコンピューティングの方が速いです。

Q: 両者は一緒に働けるのでしょうか？
A: はい！多くの企業は最高の結果を得るために両方を使用しています。

Q: どちらが安全ですか？
A: エッジコンピューティングはデータが近くに留まるため、敏感なデータに対してより安全です。

Q: どの業界が最もエッジコンピューティングを必要としていますか？
A: 即時的な応答が必要な企業 - 病院、工場、小売店、自動車メーカーなど。

## まとめ

クラウドコンピューティングとエッジコンピューティングをライバルではなくチームメイトと考えてください。前者は大容量データの保存と処理に優れていますが、後者は局所的な迅速な応答に優れています。技術が進化するにつれて、これらの方法がよりうまく協調して私たちのデジタルライフをより簡単かつ効率的にするでしょう。

最良のアプローチは通常、即時的なニーズにはエッジコンピューティング、ストレージと重い処理にはクラウドコンピューティングを使用することです。これは、現金への即時アクセスには財布を使い、大規模な貯蓄には銀行口座を使うようなもので、それぞれがあなたの生活をより簡単にします。

免責事項：本記事の見解は参考用であり、必ずしもアリババクラウドの公式見解を表しているわけではありません。
アリババクラウド、強化された視覚的推論のための新しい研究モデルを発表

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/alibaba-cloud-unveils-new-research-model-for-enhanced-visual-reasoning_601914?spm=a2c65.11461433.0.0.4ee353553LTf3v)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# アリババクラウド、視覚的推論能力を進化させる研究モデル「QVQ-72B-Preview」を発表

![1_jpeg](https://yqintl.alicdn.com/f41cef260ab226548cabf2aab636c9594883596f.jpeg)

アリババクラウドは最近、視覚的推論能力の進化を目的としたオープンソースの実験的研究モデル「[QVQ-72B-Preview (QVQ)](https://qwenlm.github.io/blog/qvq-72b-preview/)」を導入しました。QVQはマルチモーダル推論用のオープンウェイトモデルであり、様々なベンチマークで優れた性能を発揮しています。特に注目すべきは、マルチモーダル大規模マルチタスク理解（MMMU）ベンチマークで70.3%という印象的なスコアを達成したことにより、その強力な多分野理解と推論能力が明らかになったことです。

また、QVQはマルチモーダル数学的推論テストセットである[MathVision](https://mathvision-cuhk.github.io/)でも大きな進歩を遂げ、先代のQwen2-VL-72Bモデルを超える結果を達成しました。さらに、オリンピック競技レベルのバイリンガルマルチモーダル科学ベンチマークテストセットであるOlympiadBenchでの優れた性能は、QVQが複雑かつ挑戦的な問題を効果的に解決する能力を強調しています。

![2](https://yqintl.alicdn.com/bb8c3d8fcdc00ea058928d18a039e08dc0b12a61.png)

段階的な推論を通じて、QVQは視覚的推論タスクにおける性能を向上させ、特に高度な分析思考が必要なシナリオで優れた成果を示しています。しかし、有望な性能にもかかわらず、QVQにはいくつかの制限があります。たとえば、複数ステップの視覚的推論中にモデルは徐々に画像の内容に焦点を失い、これが幻覚につながることがあります。

QVQはオープンソース化されており、[Hugging Face](https://huggingface.co/Qwen/QVQ-72B-Preview)、[Github](https://qwenlm.github.io/blog/qvq-72b-preview)、およびアリババのオープンソースコミュニティ[Model Studio](https://modelscope.cn/models/Qwen/QVQ-72B-Preview)で実験することができます。

![3](https://yqintl.alicdn.com/3028e627029169826e0bf5ae638b353463d42b32.jpeg)
QVQによる数学問題の解決例

[QVQによる数学問題への対応デモビデオ](https://video-intl.alicdn.com/2025/Blog/QVQ-math-1.mp4)

先月、アリババクラウドは推論AIモデルQwQ（Qwen with Questions）をリリースしました。リリースされたバージョン[QwQ-32B-Preview](https://www.alizila.com/news-roundup-key-developments-in-ai-black-friday-kick-off-and-accessibility-initiatives/)は、320億パラメータのオープンソース実験的研究モデルであり、優れた分析能力を持ち、数学やプログラミングの複雑な問題解決に優れています。現在、Qwenファミリーのモデルに基づいてHugging Face上で78,000以上の派生モデルが開発されており、これはQwenが世界で最も広く採用されているオープンソースモデルの一つであることを示しています。

この記事は[Alizila](https://www.alizila.com/alibaba-cloud-unveils-new-research-model-for-enhanced-visual-reasoning/)にCrystal Liuによって最初に掲載されました。
picoCTF 2024 writeup interencdec

## interencdec (Cryptography)

Can you get the real meaning from this file.  
Download the file here. 

添付ファイル
・enc_flag

enc_flagをメモ帳で開くと、以下の謎文字列が出てきた。
`YidkM0JxZGtwQlRYdHFhR3g2YUhsZmF6TnFlVGwzWVROclgyZzBOMm8yYXpZNWZRPT0nCg==`
これをcyberchefでbase64 decodeする。
謎文字列`b'd3BqdkpBTXtqaGx6aHlfazNqeTl3YTNrX2g0N2o2azY5fQ=='`が出力された。
`'`で囲まれた部分を取り出して。もう一度base64 decodeする。
謎文字列`wpjvJAM{jhlzhy_k3jy9wa3k_h47j6k69}`が出力された。
rot19する。
フラグが得られた。
`picoCTF{caesar_d3cr9pt3d_a47c6d69}`
SnowflakeやBigQueryを最適化！ClickHouseでDataウェアハウスを高速化する方法

# 新年あけましておめでとうございます！
皆さま様は年末年始を如何お過ごしでしたでしょうか？最大で9連休ということもあり海外にいかれた方も多いようですね。私は大掃除をして紅白を見て、実家に帰省をしておせちを食べ初詣にいく。という典型的なお正月を過ごしました。年齢を重ねるとありふれたお正月が一番充実した気分になります。さて、2025年もClickHouseのUsecaseや事例についてたくさん紹介をしていきます！また、1月23日にCommunity Eventを開催しますのでぜひご参加ください。
[ClickHouse Meetup Tokyo](https://www.meetup.com/clickhouse-tokyo-user-group/events/305126993/?utm_medium=referral&utm_campaign=share-btn_savedevents_share_modal&utm_source=link)

![600_525265704.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3963043/5f20c378-7ad9-50bd-0531-bfb6f4f55bc3.jpeg)


# ClickHouseをキャッシュ層として活用するメリットと事例

データベースやデータウェアハウスの運用において、クエリ負荷を削減しつつ、パフォーマンス向上やコスト削減を図ることは重要な課題です。特に、ClickHouseをキャッシュ層として活用することで、これらの課題を効率的に解決することが可能です。本記事では、その具体例やメリットについてご紹介します。

---

## ClickHouseのキャッシュ層活用とは？

ClickHouseは、高速でスケーラブルなカラム型データベースとして知られています。その一環として、キャッシュ層として利用することで、以下の効果が期待できます：

- **クエリ負荷の削減**  
  頻繁に実行されるクエリをキャッシュし、データベースへのアクセス回数を最小限に。
- **コストの最適化**  
  従量課金型データウェアハウス（例: Snowflake, BigQuery）への直接クエリを減らし、コストを削減。
- **パフォーマンスの向上**  
  キャッシュされたデータに対するクエリは高速に処理可能。

---

## 事例紹介

### **事例1: ClickHouseのクエリキャッシュを活用したパフォーマンスとスケーラビリティの向上**

**背景:**  
ある企業では、複雑なクエリを繰り返し実行することでパフォーマンスにボトルネックが発生していました。

**解決策:**  
ClickHouseのクエリキャッシュ機能を活用し、頻繁に実行されるクエリの結果をキャッシュに保存。これにより、後続のクエリ実行時にはキャッシュから直接結果を取得し、実行時間を大幅に短縮しました。

**成果:**  
- クエリ実行時間が大幅に短縮。
- システム全体のパフォーマンスとスケーラビリティが向上。

*参考リンク: [ClickHouseのクエリキャッシュによるパフォーマンス向上](https://chistadata.com/knowledge-base/enhancing-performance-and-scalability-using-query-cache-in-clickhouse/)*

---

### **事例2: ClickHouseのライブラリキャッシュでクエリ計画を効率化**

**背景:**  
クエリの解析、コンパイル、最適化に関連するオーバーヘッドを削減したいというニーズがありました。

**解決策:**  
ClickHouseの「ライブラリキャッシュ」を利用して、頻繁に使用されるクエリプランをキャッシュに保存。これにより、クエリの再実行時に迅速な処理が可能になりました。

**成果:**  
- クエリパフォーマンスが向上。
- データベースの効率性についてのインサイトが得られるように。

*参考リンク: [ClickHouseのライブラリキャッシュの活用](https://chistadata.com/monitoring-query-plans-library-cache-clickhouse/)*

---

## リソース紹介

### **ClickHouseクエリキャッシュの導入ガイド**

ClickHouseはバージョン23.1からクエリキャッシュ機能を導入。SELECTクエリの結果をキャッシュに保存することで、繰り返し実行されるクエリの負担を削減し、パフォーマンスを向上させることが可能です。

*参考リンク: [ClickHouseクエリキャッシュの概要](https://clickhouse.com/blog/introduction-to-the-clickhouse-query-cache-and-design)*

---

### **ClickHouseとSnowflakeにおけるクエリ最適化の手法**

SnowflakeのクエリキャッシュとClickHouseのベクトル化クエリ処理の技術を比較。両者ともクエリパフォーマンスの向上を目的としており、それぞれの特徴について詳しく解説しています。

*参考リンク: [ClickHouseとSnowflakeのクエリ最適化](https://chat2db.ai/resources/blog/query-optimization-techniques-in-clickhouse-and-snowflake)*

---

## ClickHouseをキャッシュ層として導入する際のポイント

ClickHouseを効果的に導入するためには、以下のポイントを考慮する必要があります：

1. **データの特性分析**  
   どのデータをキャッシュすることで最も効果が得られるかを分析する。
2. **クエリ頻度の把握**  
   頻繁に実行されるクエリを特定し、キャッシュ対象とする。
3. **システム設計の見直し**  
   ClickHouseの導入に伴い、既存のデータフローやシステム全体のアーキテクチャを最適化する。

---

## まとめ

ClickHouseをキャッシュ層として活用することで、クエリ負荷の削減、コスト削減、パフォーマンス向上が実現可能です。特に、頻繁なクエリが発生する環境や、コスト効率を重視するプロジェクトにおいて、その効果は顕著です。

まずは小規模なユースケースで試し、効果を確認した後に本格導入することをお勧めします。POCクレジットやフリーコンサルも提供しておりますのでお気軽にお問い合わせくださいませ。

[お問い合わせ](https://clickhouse.com/jp/company/contact?loc=nav)
picoCTF 2021 writeup Cookies

## Cookies (Web Exploitation)

Who doesn't love cookies? Try to figure out the best one.  
http://mercury.picoctf.net:27177/

とりあえず記載のリンクを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638553/3a74fde6-febd-ca7e-b0c8-c23ed792b859.png)
試しにsnickerdoodleと入力してSearchボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638553/2c6bd151-df1f-da98-ef53-06b8caaca119.png)
DevToolのstrageを確認するとcookiesのnameが0になっていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638553/092b6212-ce25-1ea4-dbef-75e496a22e28.png)
nameは存在しないものを入力すると-1になる。
sugarを入力すると、name=7となった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638553/d6cf845f-69c8-c988-ea7d-9a5d26b91d46.png)
この[サイト](https://www.allrecipes.com/gallery/most-popular-types-of-cookies/)に記載されているクッキーの名称を全て小文字に直して入力すると、このサイトのクッキーの順番と同じ番号のnameとなっていることが分かった。
順番に入力して試していくと、18個目のクッキーのnameが17、19個目のクッキーのnameが19になった。
DevToolsのstrageタブでcookieのnameの値を18に変更してリロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638553/39815400-28d2-0ffc-b2ff-8278b4a6d2db.png)
フラグが得られた。

`picoCTF{3v3ry1_l0v3s_c00k135_064663be}`

## Reference
https://cyb3rwhitesnake.medium.com/picoctf-cookies-web-39d8fedd345f