好きこそものの上手なるby yukichi

プログラミング学習の備忘録。万歳車輪の再発明。

ジョージア旅行メモ

以下ジョージア旅行記メモ書きが下書きに書いてあったからとりあえず公開。

いつか整理したい(という時はしない可能性大

 

- 料理教室はガイドのお姉ちゃんがめっちゃいい子だった。しかも自分一人。先生貸切状態。ヒンカリを包むのは、具を真ん中に乗っけてヒダをつけながら包んで行くから餃子状態。これもしかして餃子の具でもヒンカリもどき作れるんじゃないか?

個人的ヒットはナスの胡桃ペースト巻き。今まで食べたことない風味だったけど、ワインに合いそうな、ナッツの香ばしい味とクリーミーな舌触りがベリーグッド!

 

- ご飯はすごい量で2品目頼むと一人で食べ切るのはほぼ困難。シュクメルリ食べてみたいと思って、念のためハーフサイズがあるお店で頼んだけどそれでも途中から勢いが止まるくらいの量。普通サイズは丸々1匹鳥を調理するらしいので、多分相当な量。

あとこれでもか!ってくらい小麦粉を多用。小麦粉くらいやがれぇぇぇっていう圧を感じるくらい。小麦粉食が国民食なのかな。日本でいう米がジョージアでは小麦粉。カチャプリは日本でいうおにぎりなのかも。

- ホテルに大バケツで小麦粉保存してあった。

- いつもテイクアウトしていいか聞いていた。どこもOKでバッグ持ってきてくれる。

- 今回はClaudeとともに旅をした。履歴見るとこんなことあったなぁとか、旅の思い出を辿れるのが楽しい。

- カズベキはミニツアーバスで行った。駅出て即声掛けしてきたおじさまが、もうすぐ出るから!お前が乗れば今すぐ出るよ!という話だったのでいいではないか、ということで乗る。40リラ。自分含め6人。

- カズベキの教会は、私は心拍数上がりまくりでゼェゼェしながら登った。あんま景色とか堪能する余裕もないくらい。いいハイキングコースくらいに思ってたのにおかしいぞ。。普段のダラダラ生活の堕落パワーを遺憾なく発揮。

 

- ホテルはどこもきれい。古い建物のとこでも清潔にしている。こっちの人綺麗にするのが普通なのかな?自分は年々潔癖症で特に水回りとか心配で慄いていたけど、そんな自分でも安心できるレベル。海外旅行行くと毎回思うけと、その国はトイレットペーパー流していいのか毎回迷う。私は流していた。

- 2つ目のトリビシのホテルは熱いお湯が出なかったけど、まぁトリビシ自体が暑くて体冷やせるから万事オッケー。その代わり`Wi-Fiのスピードが普通に不満ない速度で快適。(どこでもyoutubeつけてたわ結局。参院選もあったし)

- デジタルデトックスとか、仕事うおおああって頑張ってヘトヘトになった後、何も考えない、ぼーっとする時間を持って充電したい時にまた来たい。いつの間に現金、金儲け、金持ちが強い、みたいな思想に染まりすぎて、人間の素朴な幸せとかご飯がうまくて幸せとか、お茶がうまくて幸せとか、みんなで井戸端会議して幸せとか、みじかな人間の生活の幸せみたいなのが霞んできてるんだなぁ、と実感したよ。大量生産、大量消費に埋もれていく。

(ゴミも物もどんどん増えて、下水も毎日増えて、どうなるんだこの惑星は。

ニュースも不安になるかつインパクトある見出しで煽ってくる感じだしな。

- 最近の情勢をどのリソースで取っていけばいいのか。テレビやユーチューブはインパクトあるかつ不安になる見出しで切り抜きの形だから、なんか煽られてる感じと恣意的に偏った情報を見てるんじゃないかって不安があるし、RehqQは一人一人丁寧にその人間の形を描いてくのが好きだけど、いかんせん長くて全部見るのは大変だし、新聞は偏った感じなのかもしれないし。。より一時情報に近い情報を取レルのが希望。

 

- 見習いたいと思うこと。バスで老人が乗ってきたら有無を言わさず席を譲ること。席を譲るのが当たり前、って習慣付いてる感じ。

自分がバスで空港に向かうときも、スーツケース持って立ってたら、おばさんが席を譲ってくれ、座ってスーツケースの取っ手を持ってたら、目の前で立ってたお姉さんが足で押さえてるから大丈夫よ、って面倒見てくれたり。モンゴル800の「人に優しく、されたとき、自分の小ささを知りました」って脳内で流れてきたよ、特に異国の地では本当に身にしみて涙流しそうだった。自分もちょっとでもできるようになりたい。

- SIMは8日で10Gを申し込んだけど、意外とそんな使わない。毎回心配して多めを申し込むけど、意外と半分もいかない。Googleマップ、ブラウザ検索、音楽、Claudeをストレスなく使用したが全部でxxG(忘れた)利用という結果。ジョージアのネット事情はyoutubeが問題なく見れる。それが快適に見れれば自分は満足。

 

- 街の人々は教会を見かけると、道を歩いてても十字架を切る。

- 治安はいい。長距離バス降りた後とか、マーケットのバス乗り場で降りた後とか客引きがひどいみたいのが疲れるから苦手なんだけど、そういうのがほぼなし。

- あんまり暗い道は危ないかもだけど、女性一人で大通り歩いてても怖いことに出くわさなかった。道中不快な思いをしたことがなかった。公共交通機関が安いのはほんと羨ましい。

宿も水回り含め、綺麗に掃除されていて清潔。見習いたいぐらい。

 

- BORJOMIガチうまい。空港で出国ゲートはいったときも、探し回ってゲット。サブウェイに売ってた。これ日本で手に入りにくいのが惜しい。夏とかこれ絶対飲みたくなる。売ってくれ日本で

 

- 最後に帰国する日、トビリシでフェンシング世界選手権やってて、日本人選手もエース選手が出場していた。見に行きたかった。。次旅行行くときは国際大会日程チェックだな。

 

オライリーのサブスクに加入する

findyのキャンペーンでオライリーのサブスク体験に当たりまして、

とても良かったので体験終了後もサブスク加入すること決定。

最新の本もわりかしすぐサブスクに掲載されて、アプリも使いやすくて読みやすい。

www.oreilly.com

 

ACM(Association for Computing Machinery)というアメリカの計算機協会の会員になるとサブスクが安く加入できるのでそれを実行。

ACM会員:$99/year

オライリーサブスク:$75/year

 

1. ACM Professional Membershipに加入

https://services.acm.org/public/qj/profqj/qjprof_control.cfm?promo=PWEBTOP&form_type=Professional

ここで入会手続きした=アカウントが自動発行されてると勘違い。

ユーザー名わからず、あれお金払ったのに。。。と右往左往焦る。

 

2. アカウント登録をする

1とは別にアカウント登録が必要でした。1の手続き後に来るメールにも書いてありましたわ、早とちり

https://accounts.acm.org/

 

3. オライリーサブスクログイン画面で

xxx@acm.org(1登録後発行される)をメールアドレスに入力すると、勝手にSSOでACMのログイン画面に飛ぶ→入力でログインできた。

 

これで1年読み放題!オライリー中毒になりたい。わーい

ジョージアという国に行ってみる_前説

7月に1週間程度休みが取れたので、色々迷ったがジョージアという国に行くことにした。

治安と物価が比較的良く、女一人旅でも行きやすそう(by AI)というのが理由。

なにがあってどういう国かの前知識はなくて、ジョージアの存在を今まで感じたのは在日大使さんをReHacQで見たくらい。

 

問題は歳をとるほど飛行機に乗るのが怖くなってきてるのよ。事故映像とか最近意図せず流れてきたりして、やっぱり衝撃映像で怖いながら何回も見ちゃって一人で震え上がってる。何でこんなの飛んでるのって乗ってる間実感すると、動悸が止まらなくなるレベル。

ジョージアの首都トビリシまでターキッシュでイスタンブール乗り継ぎで17時間。きびしーっていうので、航空券取ったら速攻で内科に睡眠導入剤頼みに行った。お守り。

→これは結構解決!紅の豚魔女の宅急便のおかげ!空を飛ぶロマンを見たら飛ぶのってワクワクじゃないか、と思えてきたよ。ありがとうジブリ

Lambda レイヤーを Amazon Linux 2で作成する

最近Discord上で動く時差変換botを作って、lambdaで動かすようにした。

GitHub - kumo2kumo/time_converter

 

その際lambda_function.pyで

Unable to import module 'lambda_function': No module named 'nacl._sodium

と出て読み込めない。

lambdaのランタイムはpython3.10に指定。

 


やり方は

Python Lambda 関数の「モジュールをインポートできません」エラーを解決する | AWS re:Post

を参考にした。


まずリンクの通りIAMポリシー作成→ロールにアタッチー>ロールをEC2にアタッチ

AmazonLinux2は初期でPython 3.7.16

リンクに従ってamazon-linux-extraでインストールしようとしても

amazon-linux-extras list | grep python
44  python3.8                       available    [ =stable ]

の通り3.8までしかできない。

ので3.10は自身でインストールする。

これを参考に

Amazon Linux 2にPython3.10をインストール | fragment

 

完了したらpynaclをインストールしてlayerに追加

mkdir python
python3.8 -m pip install pynacl -t python/
zip -r layer.zip python
aws lambda publish-layer-version --layer-name hoge --zip-file fileb://layer.zip --compatible-runtimes python3.10 --region  ap-north-east-1(tokyo regionの場合)

最後にlambdaでhoge layerを追加

で完了できた😄

AWS lambdaを使ってみる

元々タスクスケジューラで動かしていたDiscord botAWS lambdaに移行してみたので、メモ📝

1,ライブラリを特定のフォルダにインストールする ↓の場合my_lambda を指定 py -m pip install -r requirements.txt -t ./my_lambda 

2,lambda_function.pyに処理を記載。 function名はlambda_functionとする。

3,lambda_function.pyもmy_lambda フォルダに移動してzipで固める

4、aws lambdaにアップロードする

5,aws上で環境変数を登録する。

環境変数をコード上で呼び出すためには

import os
cousumer_key = os.environ['CONSUMER_KEY']

のように書く AWS Lambda 環境変数の使用 - AWS Lambda

コードはこんな感じ。特定のTwitterアカウントのツイートを取得してbotで表示するもの

import tweepy
import requests
from discordwebhook import Discord
import os

consumer_key = os.environ['CONSUMER_KEY']
consumer_secret = os.environ['CONSUMER_SECRET']
access_token = os.environ['ACCESS_TOKEN']
access_secret = os.environ['ACCESS_SECRET']
webhook_url = os.environ['WEBHOOK_URL']

class TwitterApi:
    def get_latest_tweet(self, account_name):
        auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
        auth.set_access_token(access_token, access_secret)
        api = tweepy.API(auth, wait_on_rate_limit=True)

        tweet = api.user_timeline(id=account_name, count=1)[0]
        screen_name = tweet.user.screen_name
        return tweet.text


def lambda_handler(event, context):   
    api = TwitterApi()
    text = api.get_latest_tweet("@xxxxxxx")
    discord = Discord(url=webhook_url)
    discord.post(content=text)

6,デプロイする&テストしてみる。 ここで 401 Unauthorized\n32 - Could not authenticate you が出る。あら認証されてない、おや(;'∀')

7,Twitterの開発者ポータル見ると

This App has violated Twitter Rules and policies. As a result, it can no longer be accessed. For assistance, submit a support ticket

のエラーが。プロジェクト作り直して諸々のキーを再取得

8,環境変数変えてテスト→成功

9,トリガーをイベントで設定 今回は毎日0時に投稿したいので、 cron(00 15 * * ? *) と記載。この時間はUTC time https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents-expressions.html

10,無事0時に表示、おめでとう㊗

めっちゃ便利やないか、、、今までタスクスケジューラでやってたから、PC起動していないときは実行されなかったんだよね。 やってみようと思ったのは応用情報のシステムアーキテクチャ解いててFaaSについて出てきて、ふむFaaSでbot実行できるのでは? FaaSには

AWS Lambda

Google Cloud Functions

Microsoft Azure Functions

などがあるのね、awsアカウント持ってるしやってみよう、ってなったから。 次はもう一個Discord上で動かしたい処理があるからそれも作ってみよー

Pythonでcsvファイル内を探索する

Pythoncsvファイル内の検索を行ったときに意図した結果が得られなった話

例えば

list = apple grape lemon kiwi banana green leaf phone

って項があって、

re.search(r'\sapple\s| ^apple\s, list):

って書いてもappleが引っかからなかった。なぜなら

|と^apple\s の間に空白を入れていたから。

丁寧に␣appleを検索してくれていたのよね、そりゃそうだーー

見やすいかなと思って何も考えずにスペース入れていたよ、ごめんありがとうPython

batファイルをタスクスケジューラで動かす時

先日twitterの投稿をdiscordに自動で投げるbotpythonで作っていたのだが、

作ったbatファイルをタスクスケジューラに設定しても実行してくれず、さて結局どうしたかっていう話。というかbatファイルって初めて書いた、今まで拡張子がbatって何だと思っていたーシェルファイルのwindows版と理解(ふわっ

 

結論から言うと

タスクスケジューラでバッチが実行されない原因は?

こちらの通りで、開始のところにbatファイルがあるフォルダの絶対パスをきちんと書きましょうー

ということ

自分は最初はプログラム/スクリプトのところにbatファイルまでの絶対パスC:\hoge\main.bat)を書いていたのですが、動かなかったのですねー

それはどうやら開始欄が空欄だとC:\Windows\system32\C:\hoge\main.bat

と思われてしまうらしく、そんなんないねんとお怒りになっていた模様

 

無事開始欄にパスを書いて、botが毎日起動してますーやった!

 

余談ですが10月から大学理工学部の科目等履修生にお邪魔することにした。

回路とか離散数学とか興味の向くままニューワールドに飛び込んでいくよ、どこに行く自分