Sample of reading CSV file with python

CSVサンプル
Name,Age
Alice,25
Bob,30
Charlie,22
import csv

def read_csv_file(file_path):
    try:
        with open(file_path, 'r', newline='') as csvfile:
            csv_reader = csv.DictReader(csvfile)

            # 各行のデータを利用
            for row in csv_reader:
                name = row['Name']
                age = int(row['Age'])
                print(f"{name} is {age} years old.")

    except FileNotFoundError:
        print("File not found.")
    except Exception as e:
        print("Error:", e)

if __name__ == "__main__":
    csv_file_path = "example.csv"  # CSVファイルのパスを指定してください
    read_csv_file(csv_file_path)

python で authorization header bearer token 方式のサンプル

import requests

def main():
    # 送信先のURL
    url = "https://example.com/api/endpoint"

    # Bearerトークン
    bearer_token = "your_bearer_token_here"

    # 送信するJSONデータ
    data = {
        "key1": "value1",
        "key2": "value2"
    }

    # POSTリクエストを送信
    response = requests.post(url, json=data, headers={"Authorization": "Bearer " + bearer_token})

    # レスポンスの内容を表示
    if response.status_code == 200:
        print("Success!")
        print("Response:", response.json())
    else:
        print("Error:", response.status_code, response.text)

if __name__ == "__main__":
    main()


Go言語によるBearer認証の実装サンプル

Go言語で実現するBearerトークン認証

モダンなWeb API開発において、セキュリティを確保するための認証方式として「Bearerトークン(主にJWTなど)」は事実上の標準となっています。 Go言語の標準ライブラリ net/http を用いて、この認証ヘッダーを正しく、かつ安全に実装する方法を詳しく解説します。


1. 実装サンプルコード

以下のコードは、JSONデータをPOSTしつつ、AuthorizationヘッダーにBearerトークンを付与する完結したサンプルです。 エラーハンドリングやタイムアウト設定など、実務で必須となる要素を盛り込んでいます。


package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"time"
)

func main() {
	// 接続先URLと認証トークンの定義
	const (
		apiURL      = "https://example.com/api/v1/resource"
		bearerToken = "your_secret_access_token"
	)

	// 送信するペイロード(JSON)の構築
	payload := []byte(`{"name": "Gopher", "role": "Developer"}`)

	// 1. リクエストオブジェクトの生成
	// http.Post() 等の簡易メソッドではヘッダーの個別設定ができないため、NewRequestを使用します
	req, err := http.NewRequest(http.MethodPost, apiURL, bytes.NewBuffer(payload))
	if err != nil {
		fmt.Printf("リクエストの作成に失敗しました: %v\n", err)
		return
	}

	// 2. 必須ヘッダーの設定
	// Bearerの後には必ず半角スペースが必要です
	req.Header.Set("Authorization", "Bearer "+bearerToken)
	req.Header.Set("Content-Type", "application/json")

	// 3. HTTPクライアントの実行
	// http.DefaultClient はタイムアウトが設定されていないため、独自のClient定義を強く推奨します
	client := &http.Client{
		Timeout: 10 * time.Second,
	}

	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("通信エラーが発生しました: %v\n", err)
		return
	}
	// リソースリークを防ぐため、必ずCloseを呼び出す
	defer resp.Body.Close()

	// 4. 結果の読み取りと判定
	body, _ := io.ReadAll(resp.Body)
	if resp.StatusCode == http.StatusOK {
		fmt.Printf("成功: %s\n", string(body))
	} else {
		fmt.Printf("サーバーエラー: %d - %s\n", resp.StatusCode, string(body))
	}
}
    

2. 実装上の重要なTips

なぜ http.NewRequest を使うのか?

http.Gethttp.Post は内部でデフォルトのクライアントを使用しており、独自のヘッダーを追加する機能がありません。 認証が必要なAPIを叩く場合は、http.NewRequest を使用してリクエストインスタンスを生成し、Header.Set で個別に制御するのが正しいアプローチです。

Bearerスキームの書式に注意

Authorizationヘッダーの値は Bearer <token> という形式で指定する必要があります。 この Bearer とトークンの間の半角スペースを忘れると、サーバー側で正しくパースされず、401 Unauthorizedエラーの原因となります。

プロダクション環境での注意点

  • タイムアウト: ネットワークの遅延やサーバーの無応答に備え、必ず http.Client にタイムアウトを設定してください。
  • トークンの秘匿: トークンをコード内にハードコードせず、環境変数(os.Getenv)やシークレット管理サービスから取得するようにしましょう。

Python Post Request with Json Example

import requests
import json

def main():
    # 送信先のURL
    url = "https://example.com/api/endpoint"

    # 送信するJSONデータ
    data = {
        "key1": "value1",
        "key2": "value2"
    }

    # JSONデータを文字列に変換
    json_data = json.dumps(data)

    # POSTリクエストを送信
    response = requests.post(url, data=json_data, headers={"Content-Type": "application/json"})

    # レスポンスの内容を表示
    if response.status_code == 200:
        print("Success!")
        print("Response:", response.json())
    else:
        print("Error:", response.status_code, response.text)

if __name__ == "__main__":
    main()

golang でカタカナだけを抽出するサンプル



package main

import (
	"fmt"
	"regexp"
)

func main() {
	// カタカナとひらがなを混ぜた文字列
	originalString := "コンニチハセカイ こんにちはせかい"

	// 文字列からカタカナのみを抽出
	katakanaString := extractKatakana(originalString)

	// カタカナのみの文字列を出力
	fmt.Println("Katakana String:", katakanaString)
}

// カタカナのみを抽出する関数
func extractKatakana(s string) string {
	// 正規表現パターンを定義
	// カタカナ文字のUnicode範囲: U+30A0 ~ U+30FF
	regexPattern := "[ァ-ヿ]+"

	// 正規表現にマッチする部分を抽出
	regExp := regexp.MustCompile(regexPattern)
	katakanaSlice := regExp.FindAllString(s, -1)

	// カタカナの文字列に変換
	katakanaString := ""
	for _, kana := range katakanaSlice {
		katakanaString += kana
	}

	return katakanaString
}

golang のJson をPostするサンプル

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	// The URL to which you want to send the JSON data
	url := "https://example.com/api/endpoint"

	// Data to be sent as JSON in the request body
	data := map[string]interface{}{
		"key1": "value1",
		"key2": "value2",
	}

	// Convert data to JSON format
	jsonData, err := json.Marshal(data)
	if err != nil {
		fmt.Println("Error converting data to JSON:", err)
		return
	}

	// Create a new HTTP request
	request, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// Set the request header to indicate JSON data
	request.Header.Set("Content-Type", "application/json")

	// Create an HTTP client and send the request
	client := &http.Client{}
	response, err := client.Do(request)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer response.Body.Close()

	// Check the response status code
	if response.StatusCode != http.StatusOK {
		fmt.Println("Unexpected response status code:", response.StatusCode)
		return
	}

	// Read the response body
	var responseData map[string]interface{}
	err = json.NewDecoder(response.Body).Decode(&responseData)
	if err != nil {
		fmt.Println("Error decoding response:", err)
		return
	}

	// Process the response data as needed
	fmt.Println("Response:", responseData)
}

【Bird】 ポケモンスリープについて聞いてみた。

 ポケモンスリープは、2023年7月17日にリリースされたスマートフォン向けゲームアプリです。本作は、スマートフォンもしくは「Pokémon GO Plus+」のセンサーを使ってユーザーの睡眠時間や睡眠の質を計測し、そのデータを使ったゲームを進めることで、楽しみながら睡眠リズムを整えるアプリです。

ゲームの開始時には、ユーザーは自分の睡眠データを入力します。このデータは、スマートフォンの画面をオフにして枕元に置いた「Pokémon GO Plus+」によって収集されます。収集されたデータは、ユーザーの睡眠時間、睡眠の深さ、睡眠の質、睡眠時の動きなどを分析します。

ゲームでは、ユーザーは「Pokémon GO Plus+」を枕元に置いて寝ると、カビゴンが登場します。カビゴンは、ユーザーの睡眠データに基づいて、眠り方や寝相を変化させます。ユーザーは、カビゴンの眠り方や寝相を観察して、自分の睡眠の質を改善することができます。

ゲームでは、ユーザーはカビゴンを育てることができます。カビゴンを育てるためには、ユーザーは睡眠をとる必要があります。睡眠をとると、カビゴンは成長し、新しい技を覚えます。カビゴンを強く育てるためには、ユーザーは質の高い睡眠をとることが大切です。

ポケモンスリープは、睡眠リズムを整えるゲームです。本作は、スマートフォンもしくは「Pokémon GO Plus+」のセンサーを使ってユーザーの睡眠データを収集し、そのデータをゲームに反映します。ユーザーは、ゲームをプレイすることで、自分の睡眠の質を改善することができます。

ポケモンスリープは、睡眠の質を改善したい人、カビゴンを育てたい人、ポケモンをもっと楽しみたい人におすすめのゲーム

【Bird】君たちはどう生きるか ジブリの最新作をネタバレなしで観た感想を1000文字程度にまとめてくださいと聞いてみた。

birdにネタバレなしで感想を聞いてみました。

実際に観た方がこんな感じにおもっているのかなぁ?

----

2023年7月14日に公開されたスタジオジブリの最新作「君たちはどう生きるか」を観てきました。この映画は、生きることの意味について深く考えさせられる作品で、とても印象に残りました。

物語は、ある日、謎の人物から一冊の本をもらった少年・眞人(まこと)の視点から描かれます。その本は、生きることについて様々なことを教えてくれる本で、眞人は、その本を読んで、生きることについて考え始めます。

この映画では、生きることの意味について、様々な角度から考えさせられます。例えば、生きることの意味は何か?生きることの目的は何か?生きることの喜びとは何か?生きることの苦しみとは何か?生きることの美しさとは何か?生きることの悲しみとは何か?

この映画は、これらの問いに対して、一つの答えを出すことはありません。しかし、この映画は、生きることについて考えさせてくれるきっかけを与えてくれる作品です。

この映画を観た後、私は、生きることについて、改めて考えさせられました。生きることの意味は、人それぞれ違うと思います。しかし、生きることの意味は、何か一つに絞る必要はないと思います。生きることの意味は、様々なものから成り立っていると思います。

生きることの意味は、家族や友人との絆かもしれません。生きることの意味は、仕事や趣味かもしれません。生きることの意味は、自然や芸術かもしれません。生きることの意味は、夢や希望かもしれません。

生きることの意味は、人それぞれ違うと思います。しかし、生きることの意味は、何か一つに絞る必要はないと思います。生きることの意味は、様々なものから成り立っていると思います。

この映画は、生きることについて考えさせてくれるきっかけを与えてくれる作品です。この映画を観て、生きることについて、改めて考えてみてはいかがでしょうか。

 【Bard】ドコモのプランeximoとirumoの違いを表にまとめて

 はい、ドコモのプランeximoとirumoの違いを以下にまとめました。

項目eximoirumo
月額料金2,970円(税込)2,728円(税込)
データ容量5GB3GB
通話料22円/30秒(国内)22円/30秒(国内)
かけ放題オプション1,100円/月(税込)550円/月(税込)
5Gオプション550円/月(税込)無料
国際ローミング有料有料
ドコモ光セット割最大1,100円/月(税込)最大1,050円/月(税込)
ドコモオンラインショップ割引最大1,000円/月(税込)最大1,000円/月(税込)
家族割引最大2,200円/月(税込)最大2,200円/月(税込)

Flashコンテンツの再構築