2023/09/19

【Bard】Golangは将来性はあるか?

 Golangは、Googleが開発したオープンソースのプログラミング言語です。2009年にリリースされて以来、急速に人気が高まり、現在では世界中で多くの企業で採用されています。


Golangの将来性が期待される理由は、以下の3つが挙げられます。


パフォーマンスが優れている

Golangは、並列処理やメモリ管理に優れているため、高速かつ安定したアプリケーションを開発することができます。


学習コストが低い

Golangは、シンプルな文法と構文を採用しているため、他のプログラミング言語を習得している人であれば、比較的簡単に学習することができます。


幅広い用途に対応している

Golangは、Webアプリケーションやサーバーサイドアプリケーション、デスクトップアプリケーション、モバイルアプリケーションなど、さまざまな用途に使用することができます。


特に、今後ますます需要が高まると予想される、クラウドコンピューティングやIoTなどの分野で、Golangの需要は高まっていくと考えられます。


もちろん、Golangにも欠点はあります。例えば、オブジェクト指向の概念が弱い、例外処理がないなどの点が挙げられます。しかし、これらの欠点は、Golangのメリットを大きく上回るとは考えにくいでしょう。


以上のことから、Golangは今後も多くの企業で採用され、エンジニアの需要が高まっていくと予想されます。


具体的には、以下の分野でGolangの需要が高まっていくと考えられます。


クラウドコンピューティング

クラウドコンピューティングは、今後ますます普及していくと予想される分野です。Golangは、クラウドコンピューティングの基盤となるサーバーの開発に適した言語です。


IoT

IoTは、さまざまなデバイスをネットワークで接続する技術です。Golangは、IoTデバイスの開発に適した言語です。


機械学習

機械学習は、人工知能の分野で重要な技術です。Golangは、機械学習のフレームワークと組み合わせて使用することで、効率的に機械学習モデルを開発することができます。


このように、Golangはさまざまな分野で活躍できる言語であり、将来性も十分にあると言えます。

2023/09/15

【Bird】エラーコード「2153-0321」が表示された場合の対処方法

エラーコード「2153-0321」は、

Nintendo Switch本体の故障が疑われるエラーコードです。

具体的には、オーディオチップの不具合が原因と考えられています。 

このエラーコードが表示された場合は、以下の対処方法を試してみてください。 

電源を切って、ACアダプターやケーブルを再接続する。

本体を再起動する。 データを初期化する。 

それでも改善しない場合は、Nintendoサポートに問い合わせて、

本体の修理を依頼してください。 

なお、データの初期化を行うと、本体に保存されているデータがすべて消去されますので、

事前にバックアップを取っておくことをおすすめします。 

以下に、エラーコード「2153-0321」が表示された場合の対処方法をまとめます。 

  • 電源を切って、ACアダプターやケーブルを再接続する。 
  • 本体を再起動する。
  • データを初期化する。 
  • Nintendoサポートに問い合わせて、本体の修理を依頼する。

なお、データの初期化を行う場合は、
事前にバックアップを取っておくことをおすすめします。

※AIによって生成した文章となります。

2023/09/14

Apple iPhone 15発表会

 Apple iPhone 15発表会

今回は4種類

  • iPhone 15 Pro Max
  • iPhone 15 Pro
  • iPhone 15 Plus
  • iPhone 15
最近思うのだけど、おお! すごい!

みたいなのがなくなってる気がします。

確かに性能は上がっていますが、既定路線過ぎて驚く要素があまりない。

最初の頃は、夜中リアルタイムで発表会を観ていたけど、

ここ何年かは、普通に朝まとめサイトみてるだけになっている。

自分の情熱が減っただけなのかな。

皆さんはどうでしょうか?

2023/09/05

【SwiftUI】@Stateとか@Bindingとかなんなのさ。

SwiftUIは、iOSおよびmacOSアプリケーションを構築するためのモダンなユーザーインターフェースフレームワークです。
SwiftUIでは、アプリケーションの状態管理やデータバインディングなどの機能を提供するために、いくつかのプロパティラッパーが用意されています。
`@State`と`@Binding`はそのうちの2つの重要なプロパティラッパーです。
1. `@State`:
`@State`は、プロパティを変更可能な状態(State)として宣言するために使用します。
SwiftUIビュー内のプロパティを`@State`で宣言すると、そのプロパティの変更がビューに影響を与え、ビューが自動的に再描画されるようになります。
@State`は、ビュー内で単一の値の状態を管理するために使用されます。

   struct ContentView: View {
       @State private var count = 0

       var body: some View {
           Text("Count: \(count)")
           Button("Increment") {
               count += 1 // @Stateプロパティの変更
           }
       }
   }

2. `@Binding`:
`@Binding`は、プロパティを他のビューから参照し、変更できるようにするために使用されます。
`@Binding`を使用すると、値を保持するビューとその値を表示または変更する別のビュー間でデータを共有できます。
   struct DetailView: View {
       @Binding var count: Int

       var body: some View {
           Text("Count in Detail: \(count)")
       }
   }
メインビューから`DetailView`に`@Binding`で渡された`count`プロパティは、`DetailView`内で表示および変更できます。変更はメインビューにも反映されます。
これらのプロパティラッパーは、SwiftUIアプリケーション内でデータの管理と共有を効果的に行うために使用されます。
`@State`はローカルな状態の管理に適しており、`@Binding`は異なるビュー間でデータを双方向に共有するのに適しています。

2023/08/31

Sample of reading XML file with python

Sample of reading XML file with python
import xml.etree.ElementTree as ET

# Load the XML file
tree = ET.parse('data.xml')
root = tree.getroot()

# Iterate through 'person' elements and extract data
for person in root.findall('person'):
    name = person.find('name').text
    age = person.find('age').text
    print(f"Name: {name}, Age: {age}")


2023/07/25

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)
}

2023/07/21

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

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

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

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

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

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

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

2023/07/20

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

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

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

----

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

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

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

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

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

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

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

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

2023/07/11

 【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円/月(税込)

2023/06/21

AWSメモです。

EC2編

  • インスタンスはあとから、VPCの設定ができない。
  • VPCが無い時代に作成されたインスタンスは、あとからVPCに移動できない。
  • t1.microからt2.microにポチッと簡単に移行できない。
  • t1.microからt2.microへ移行は、インスタンス作り直して、移行したほうが楽
  • t1.microの起動ボタンは何度もトライすべし。(AWSが起動できる総数がだいぶ少なく設定してる)
  • VPC内にELBを設定するしかできない。(昔はできた)
  • cloudfrontに設定するSSL証明書はバージニア州じゃないとセットできない。
  • 東京リージョンでSSL証明書作成しても、cloudfrontにはセットできない。
  • ElasticIPはセットしていないと、金が取られる


Route53編

  • 自動更新ONだとちょうど一ヶ月に自動更新される
  • 意外と、更新費用が高い。
  • .jpドメインだと、90ドル (他のところで買ったほうがやすい)


(ワード)

EC2-Classic

PV

HVM

2023/05/31

【Bard】2023/05/31に発生した東横線の日吉駅で発生した線路火災で2回も運転見合わせたニュース原稿を書いてもらえますか?

なんか、ちょっとずつ違うな。

---2回目

はい、喜んで。

東急線日吉駅で線路火災、運転見合わせが2回

2023年5月31日、神奈川県横浜市の東急線日吉駅で線路火災が発生し、東横線、目黒線、新横浜線の一部区間で運転見合わせとなりました。

火災は午前8時26分頃、日吉駅の線路内で発生しました。発煙に気づいた駅員が消防に通報し、消防車が出動して消火活動を行いました。火災は午前9時30分頃に鎮火しましたが、線路が損傷したため、東横線は武蔵小杉駅と菊名駅間、目黒線は武蔵小杉駅と日吉駅間、新横浜線は日吉駅と新横浜駅間で運転を見合わせとなりました。

東急電鉄は午前11時5分頃、東横線、目黒線、新横浜線の全線で運転を再開しましたが、午後12時30分頃、再び日吉駅の線路内で発煙が確認されました。このため、東横線、目黒線、新横浜線の全線で運転を見合わせとなりました。

東急電鉄は、運転再開の見通しを明らかにしていません。

この線路火災の影響で、多くの人が通勤や通学に遅れました。

--- 1回目

はい、喜んで。

東横線日吉駅で線路火災、2回運転見合わせ

2023年5月31日、午前8時26分頃、東横線日吉駅で線路火災が発生しました。火災は、線路の切り替えポイントで発生し、すぐに線路全体に広がりました。消防車が駆け付け、約2時間後に鎮火しましたが、線路は焼け焦げ、東横線は運休となりました。

この火災により、約1万人の乗客が影響を受けました。東横線は、午後2時頃に運転を再開しましたが、午後6時頃に再び線路火災が発生し、運転見合わせとなりました。

この火災により、約2万人の乗客が影響を受けました。東横線は、午後10時頃に運転を再開しましたが、復旧には数日かかると見られています。

この火災の原因は、現在のところ、調査中です。消防は、線路の不良や放火の可能性も含めて調べています。

東急電鉄は、再発防止策として、すべての線路の点検を実施するとしています。

---

【Bard】google Pixel7とgoogle Pixel6を比較し利用した感想を1000文字にまとめてください、と書いてもらった。

 Google Pixel 7とGoogle Pixel 6は、どちらもGoogleが販売しているスマートフォンです。Pixel 7はPixel 6の次世代モデルであり、いくつかの点で改良されています。

Pixel 7とPixel 6の最も大きな違いは、プロセッサーです。Pixel 7には、Googleが独自開発した第2世代のTensor G2プロセッサーが搭載されています。Tensor G2は、Tensorプロセッサーよりも処理速度が向上しており、ゲームや動画編集などの負荷のかかる作業でも快適に使用することができます。

Pixel 7とPixel 6のもう1つの違いは、カメラです。Pixel 7には、Pixel 6と同じ50MPの広角カメラと12MPの超広角カメラが搭載されています。しかし、Pixel 7は、Pixel 6よりもボケ補正機能が強化されています。これにより、Pixel 7では、被写体と背景をより美しくぼかした写真を撮影することができます。

Pixel 7とPixel 6のバッテリー容量は、どちらも同じ4600mAhです。しかし、Pixel 7は、Tensor G2プロセッサーの省電力性能が向上しているため、Pixel 6よりもバッテリーの持ちが長くなっています。

Pixel 7は、Pixel 6のすべての機能を継承し、さらに改良されたスマートフォンです。特に、Tensor G2プロセッサーの処理能力の向上とボケ補正機能の強化は、大きな魅力と言えるでしょう。Pixel 7は、ゲームや動画編集を頻繁に行う人や、美しい写真を撮りたい人に最適なスマートフォンです。

私もPixel 7をしばらく使用していますが、その性能には大変満足しています。Tensor G2プロセッサーのおかげで、ゲームや動画編集をしても動作が非常に快適です。また、ボケ補正機能も非常に優秀で、被写体と背景を美しくぼかした写真を簡単に撮影することができます。Pixel 7は、間違いなく今最もおすすめのスマートフォンです。

【Bard】google Pixel7の感想レビューを1000文字にまとめて、と書いてもらった。

 Google Pixel 7は、2023年1月にGoogleから発売されたスマートフォンです。Google Tensor G2を搭載し、高速な処理性能と優れたバッテリー持ちを実現しています。また、カメラ機能も優れており、夜間でも鮮明な写真を撮影することができます。

Pixel 7のデザインは、前モデルのPixel 6から大きく変更されています。カメラバーは横長のデザインとなり、本体背面の中央に配置されています。また、本体フレームはアルミニウム製となり、高級感が増しています。

ディスプレイは6.3インチのOLEDディスプレイを搭載しています。解像度は1080 x 2400で、リフレッシュレートは90Hzです。ディスプレイの画質は非常に鮮明で、動画やゲームを楽しむのに最適です。

カメラは、50MPのメインカメラと12MPの超広角カメラを搭載しています。メインカメラは、夜間でも鮮明な写真を撮影することができます。また、超広角カメラは、広い範囲を撮影することができます。

プロセッサーはGoogle Tensor G2を搭載しています。Tensor G2は、Googleが独自に開発したプロセッサーで、高速な処理性能と優れたバッテリー持ちを実現しています。

バッテリーは4600mAhを搭載しています。1回の充電で、1日中使用することができます。また、急速充電にも対応しています。

Pixel 7は、高速な処理性能、優れたバッテリー持ち、優れたカメラ機能など、多くの魅力を備えたスマートフォンです。Androidスマートフォンを探している方に最適なスマートフォンです。

以下に、Pixel 7のメリットとデメリットをまとめます。

メリット

  • 高速な処理性能
  • 優れたバッテリー持ち
  • 優れたカメラ機能
  • 美しいデザイン
  • 最新のAndroid OSを搭載

デメリット

  • 価格が高い
  • 指紋認証が遅い
  • ストレージ容量が少ない
  • ワイヤレス充電が非対応

総合的に見て、Pixel 7はメリットの方がデメリットより多いスマートフォンです。Androidスマートフォンを探している方に最適なスマートフォンです。