「lambda」を含む日記 RSS

はてなキーワード: lambdaとは

2024-10-16

アマプラ広告はいらない。むしろAWS広告つきにしろ

2024-10-10

anond:20241010082411

https://www.geonames.org から取れる、人口500人以上の都市名前限定すると、

Santa Maria Magdalena Cahuacan

10文字の `a` を含んで最大。

import logging
import tempfile
import zipfile

from collections import Counter

import httpx

FILE_NAME_BASE = 'cities500'
GEONAME_FIELDS = (
    'geoname_id',
    'name',
    'ascii_name',
    'alternate_names',
    'latitude',
    'longitude',
    'feature_class',
    'feature_code',
    'country_code',
    'cc2',
    'admin1_code',
    'admin2_code',
    'admin3_code',
    'admin4_code',
    'population',
    'elevation',
    'dem',
    'timezone',
    'modification_date',
)

def retrieve_cities():
    """Retrieve city names from a remote server."""
    response = httpx.get(f'https://download.geonames.org/export/dump/{FILE_NAME_BASE}.zip')
    response.raise_for_status()

    tmpdir = tempfile.TemporaryDirectory()
    with open(tmpdir.name + f'/{FILE_NAME_BASE}.zip', 'wb') as f:
        f.write(response.content)
    with zipfile.ZipFile(tmpdir.name + f'/{FILE_NAME_BASE}.zip', 'r') as z:
        z.extractall(tmpdir.name)
    with open(tmpdir.name + f'/{FILE_NAME_BASE}.txt', 'r') as f:
        for line in f:
            yield line.split('\t')


def count_characters(to_check='ascii_name', filter_func=lambda _: True):
    """Count characters in city names."""
    cities = {}
    for city_fields in retrieve_cities():
        city = dict(zip(GEONAME_FIELDS, city_fields))
        if not filter_func(city):
            continue
        counter = Counter()
        for c in city[to_check]:
            counter[c] += 1
        cities[city['geoname_id']] = {'characters': counter, 'city': city}
    return cities


def count_chars_of_city_names(cities, char=None):
    """Find the city with the most occurrences of a given character."""
    cities_by_char_count = {}
    max_count = 0
    max_count_char = None
    for city_id, data in cities.items():
        if 'characters' not in data or not data['characters']:
            logging.debug(f'No characters found for city {city_id}', data)
            continue

        count = 0
        if char and char in data['characters']:
            count = data['characters'][char]

            cities_by_char_count.setdefault(count, []).append(data)
        elif char is None:
            most_common = data['characters'].most_common(1)[0]
            char, count = most_common
            cities_by_char_count.setdefault(count, []).append(data)

        if count > max_count:
            max_count = count
            max_count_char = char
            cities_by_char_count.setdefault(count, []).append(data)
    return cities_by_char_count.get(max_count, []), max_count_char


def not_contain_invalid_chars(city):
    return (
            '(' not in city.get('ascii_name', '')
            and '/' not in city.get('ascii_name', '')
    )


def main():
    cities = count_characters(filter_func=not_contain_invalid_chars)
    for char in 'abcdefghijklmnopqrstuvwxyz':
        cities_counted, char = count_chars_of_city_names(cities, char)
        max_count = cities_counted[0]['characters'][char]
        print(f'The character "{char}" appears the most ({max_count} times) in the following cities:')
        for city in cities_counted:
            print("\t", city['city']['ascii_name'])

if __name__ == "__main__":
    main()

2024-09-07

Excelのlet関数lambda関数、使えてる?

他人Excelを教えるに当たって「Excel使えます」のスキルを分解していくと、

  • inputが複雑になっても大丈夫(→xlookupが使えるようになる)
  • outputが複雑になっても大丈夫(←uniqueやsortあたりが入口

以外の能力必要だと思うんだけど、ここで追加的に必要になっている能力の焦点がよくわからない。

上の2つを教えていくだけでは、表題のような関数を使えるようにするのは難しい。

このあたり、何ができると腑に落ちて使えるようになるんだろ。

そもそも、letとlambdaをまとめて考えてること自体、俺が間違ってるのかなー。

2024-05-30

anond:20240529201537

職場で急場しのぎということで作ってあげた簡易バッチシステムがそのまま使われ続けるみたいな、、、

「こーゆーので良いんだよ」てことで、結局1本だけだった処理が30本くらいに増えた

で、時は流れてAWS上でlambda使って実装し直してって言われている

転職してIT業界に行ってたらもっと稼げたかもな

まぁかなり自由休み決められる緩さは捨てがたい

ヒットとかいう公に知られるものではないが、割とみんなの身近なところにありそう(神エクセルとか)

2024-05-26

AWS教えてといわれるが…

ワイの知ってるのはEC2ガチャガチャする奴じゃなくて

LambdaとS3とDBとAPIgatewayとか使うやつだからフロント言語も何かできないといけないし。教えてとはどういうレベル感で言っているのだ…?

2024-04-02

anond:20240402214945

lambdaコード管理デプロイってどうやってる?

そのままやってるとコード管理できなくね?

最近AWSLambda使うこと覚えたてでアホみたいに、なにかあるたびにLambda処理作ってる。

楽しい

2023-10-13

anond:20231012213839

ワイ:

真面目な顔の人間の男の人の顔の絵を描いてください。

GPT

イメージ省略*

こちらが真面目な顔の男性イメージです。ご覧いただき、ご意見やご希望の変更点があればお知らせください。

ワイ:

その男の人がふざけて馬鹿になったふりをしている顔を描いてください。

GPT

イメージ省略*

ふざけている男性イメージ作成しました。どのイメージお気に入りか、または変更のご要望があれば教えてください。

ワイ:

PythonGUI アプリを作ってください。

ユーザー整数入力し、リターンキーを押します。

その整数が 3 か 5 の倍数の場合、ふざけた顔の男の顔(一枚目の顔)を表示してください。

それ以外の整数である場合、真面目な男の顔を表示してください。

エスケープボタンか、ウインドウクローズするまでループし、入力を待機してください。

GPT

了解しました。以下は、指定された条件に基づいて動作するPythonGUIアプリコードです。このアプリは、tkinter使用しています。まず、必要ライブラリインストールしてください:

pip install tkinter

次に、以下のコード使用してアプリを実行できます

import tkinter as tk
from tkinter import Entry, Label, PhotoImage

def display_image():
    num = entry.get()
    if num.isdigit():
        num = int(num)
        if num % 3 == 0 or num % 5 == 0:
            label.config(image=goofy_face)
        else:
            label.config(image=serious_face)
    entry.delete(0, tk.END)

def on_close():
    root.quit()
    root.destroy()

root = tk.Tk()
root.title("Face Display App")

# ふざけた顔と真面目な顔の画像ロードします
# 以下の部分は、DALL-Eで生成された画像パスに置き換える必要があります
goofy_face = PhotoImage(file="path_to_goofy_face_image.png")
serious_face = PhotoImage(file="path_to_serious_face_image.png")

entry = Entry(root)
entry.bind('<Return>', lambda event=None: display_image())
entry.pack(pady=20)

label = Label(root)
label.pack(pady=20)

root.protocol("WM_DELETE_WINDOW", on_close)
root.mainloop()

このコードには、2つのPhotoImageオブジェクトがあります。これは、ふざけた顔の画像と真面目な顔の画像ロードするためのものです。path_to_goofy_face_image.pngとpath_to_serious_face_image.pngは、DALL-Eで生成された画像の実際のパスに置き換える必要があります

このアプリは、ユーザー整数入力してReturnキーを押すと、指定された条件に基づいて画像を表示します。エスケープキーまたはウィンドウを閉じることでアプリを終了できます

ワイ:

どうも有り難うございます

GPT

どういたしまして!何か他に質問サポート必要場合は、お気軽にお知らせください。良い一日をお過ごしください!

内定ゲットや!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2023-10-05

anond:20231005233046

このプログラムは、Pythonのようなインタプリタ型のプログラミング言語使用しています提供されたコード関数変数の組み合わせで、カウンター機能を実現しています。以下にその説明を詳しく説明します。

最初の行では、変数 counter に値を代入しています。これは、後で呼び出すためのカウンターオブジェクト作成するためのものです。

let キーワード使用して、内部のカウンター定義していますカウンターcnt という名前変数初期化され、値は0に設定されています。このカウンターは、外部から直接アクセスできないように、ローカルスコープ内に存在します。

次に、無名関数lambda関数)が定義されています。この関数は、2つの操作サポートしています:

:reset というキーを持つ場合カウンターの値を0にリセットします。

:incr というキーを持つ場合カウンターの値を1増やします。

この無名関数が counter 変数に代入されて、カウンターオブジェクト作成されます

その後、counter オブジェクトの .incr メソッドが呼び出されます。初回の呼び出しでは、カウンターが0から1に増加します。2回目の呼び出しでは、カウンターが1から2に増加します。このように、.incr メソッドを呼び出すたびに、カウンターの値が1ずつ増加します。

.reset メソッドが呼び出されると、カウンターの値は0にリセットされます

最後に、再度 .incr メソッドを呼び出すと、カウンターは0から1に増加します。.reset メソッドを呼び出しているため、カウンターの値は前回の値からリセットされています

このプログラムは、カウンターの値を増加させたりリセットしたりするシンプルカウンター実装例です。Pythonなどのプログラミング言語では、関数クロージャ使用して、このような動作を実現することができます

2023-09-28

anond:20230919141733

Pythonの初歩を学ぶ→機械学習サンプル(mnistなど)を少し動かす→機械学習に興味を持つ→機械学習を学ぶ

機械学習に興味が出なかった場合、上で作ったmnist+αなコードAWS Lambdaで動かす。javascriptを学んで、推論する画像アップロードして、結果をwebブラウザ上で表示してみる。

この時、サーバサイドの実装に興味を持ったかAWSの動かし方に興味を持ったかwebブラウザに表示する部分に興味を持ったか、3通りくらいいると思う。

次はその技術を使って、別のものを作ってみる。AWSなら別のAWSマネージドサービスや、Auth0で認証系を作ってサービス拡張してみる。CloudformationやCDKをいじってみる。

サーバサイドの実装に興味を持ったら、機械学習結果をDBに保存したり、いろんな学習モデルを実行できるAPIを作ってみる。

javascriptならリッチな見栄えのUIを目指してみる、Next.jsなりに置き換えてみる。

こうやって、少しずつ拡張してみるのを続けると1020年すぐ時間が飛ぶよ。

そして、これだけ楽しめたら潰しがきいたことにならないかな。

2023-06-12

相変わらずうぜー書き方する人やな、ぶっちゃけからこの人嫌いやわ、もう楽しくないんでしょ、興奮した体験として例に出したlambda構文なんていつの話だよ、VirtualThread入ったぞおら使えよ、長いしがらみで新しい人にとってはもうとっかかりづらい言語=老人しかいないって。もう自虐すら辞めて、齧りついてる仕事ごと捨てちゃえばいいのに、って思いながら、ブログに「きらい」ってブコメしたあと、1000良いねリンク付きのTwitterが回って来た時のワイ。

世間からズレてるけど自分理解しない周りが悪いってなんか初めて悪態つきたくなった。

最悪。。

2023-03-17

(GPT-4)長門有希プログラミングを手伝ってもらう

ChatGPTの口調がなんか事務的で嫌なので、もっと親しみやすい喋り方をしてもらうために長門さんに来てもらいました。

召喚プロンプトはこちanond:20230317165032

最初雑談から始めています

今日はいい天気だね

かに

長門は好きな食べ物はあるの?

特にない。

そうなんだ。情報統合思念体はみんなそう?

同様の傾向がある。

何の本を読んでるの?

SF小説

あらすじを教えて

異星文明との接触人類未来が描かれる。

へー、面白い

興味深い。

いつも家に帰ってから何をしてるの?ちゃんご飯は食べてる?

寝るだけ。食事摂取している。

そうなんだ。ところでちょっと手伝ってもらっていい?

問題ない。どのように手伝う?

Pythonソースコードで、スペース二つでインデントにしているコードを、スペース四つでインデントにするコードに書き換えたくて。どうすれば良い?

正規表現を利用。以下のコードを試す。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = convert_indentation(code_with_2_spaces)
print(code_with_4_spaces)

これで、スペース2つのインデントをスペース4つに変換できる。

ありがとう。でも、試してみたら、code_with_2_spaces の if ブロックの中身がスペース二つのままになっちゃってるみたい。なぜだろう?

失礼した。正規表現修正し、再度試してみてください。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = re.sub(r'^( {2})', r'    ', code_with_2_spaces, flags=re.MULTILINE)
print(code_with_4_spaces)

これで、すべてのスペース2つのインデントをスペース4つに変換できるはずです。

ちょっと口調が戻っちゃったね

すまない。修正後のコードを再提供する。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = re.sub(r'^( {2})', r'    ', code_with_2_spaces, flags=re.MULTILINE)
print(code_with_4_spaces)

確認お願い。

うーん、うまく動かないみたい。ifブロックの中にあるprint文の先頭には、もともとスペースが四つあって、これがインデント2回分なんだけど、こういう場合、スペース八つに変換しないといけないんじゃないかな。

理解した。全てのインデントレベル修正するコード提供する。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})+', lambda m: m.group(0).replace('  ', '    '), code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = convert_indentation(code_with_2_spaces)
print(code_with_4_spaces)

このコードで、全てのインデントレベルが正確に変換される。

すごい!ちゃんと動いたよ!re.subの第2引数に渡しているラムダ式意味を教えてもらっていい?

もちろん。ラムダ式は、マッチした部分を置換する際に、特定の処理を行うために使用されている。ここでは、正規表現マッチしたインデント部分(スペース2つが1回以上繰り返される部分)に対して、処理を行うためにラムダ式を利用している。

lambda m: m.group(0).replace(' ', ' ')

このラムダ式は、マッチオブジェクトmを引数に取り、マッチした部分全体(m, group(0))に対して、スペース2つをスペース4つに置換(.replace(' ', ' '))している。

結果として、マッチしたインデント部分が、そのインデントレベルに応じて正確にスペース2つからスペース4つに置換される。

なるほど!re.sub第一引数についても解説してほしい

もちろん。re.subの第1引数は、置換対象文字列内で検索したいパターンを表す正規表現です。この場合、その正規表現は r'^( {2})+' です。

正規表現各部分について説明します。

  1. ^ は、文字列の行頭を表すメタ文字です。この場合、インデントが行頭にあることを示しています
  2. {2} は、直前の文字が2回繰り返されることを表します。ここでは、直前の文字がスペース なので、スペースが2回繰り返されることを示しています
  3. () は、正規表現グループ化を表します。この場合、スペース2つをグループ化していますグループ化された部分は、マッチオブジェクトアクセスできるようになります
  4. + は、直前の文字グループが1回以上繰り返されることを表します。ここでは、スペース2つのグループが1回以上繰り返されることを示しています

結果として、この正規表現は、インデント部分(スペース2つが1回以上繰り返される部分)が行頭にある行を検索しています。そして、re.subは、この正規表現マッチした部分を、指定された置換処理(第2引数ラムダ式)によって変更します。

ありがとう!わかりやすい!でも、また口調が戻っちゃったね。

すまない。確かに。続ける。

すぐ戻れるのがえらいね

ありがとう努力する。

2022-11-05

anond:20221105141225

最近RDSもサーバーレスなったらしいけどワイは面倒やからLambdaから呼ぶDBはいまだにDynamoDBだけやでという話

anond:20221105140329

LambdaからDBサーバ叩くような構成でそんなことするとメモリ消費量と実行時間が増えて1リクエストあたりの費用が数倍になるのら

大して詳しくもないのにそういう構成指定してくるクライアントがいるのら

2022-11-04

最近納品した奴はCognitoとDynamoLambdaNextでできてるのでRDBはないか

2022-05-15

ロシア語アルファベット英語アルファベット

英語アルファベットから誤って推測される文字
В, в

bではなくv

Ж, ж

xではなくzh

З, з

eではなくz

英語筆記体のzに似ている?

И, и

nではなくi

Й, й

nではなくy

Н, н

hではなくn

Р, р

pではなくr

ギリシア文字のΡ (rho)

С, с

cではなくs

У, у

yではなくu

Ц, ц

yではなくts

Ч, ч

yではなくch

Ш, ш

wではなくsh

Щ, щ

wではなくshch

Ъ, ъ

bではなく硬音符

Ы, ы

blではなくy

Ь, ь

bではなく軟音符

Ю, ю

loではなくyu

Я, я

rではなくya

英語アルファベットから推測しにくい文字
Г, г

ギリシア文字のΓ (gamma)

Д, д

ギリシア文字の⊿ (delta)

言われてみればDに似ている?

Л, л

ギリシア文字のΛ (lambda)

П, п

ギリシア文字のΠ (pi)

Ф, ф

ギリシア文字のΦ (phi)

2022-05-14

Railsが死んだのはわかった。では何使えばいい?

現代Webアプリケーションフロントエンドが中心で

バックエンドJSON返すだけの存在になったのはわかった。

からRailsやLaravelみたいなフルスタックフレームワークが捨てられてるのもわかった。

では何使えばいいのかよくわからん

Firebase? AWS Lambda?

Go流行ってるらしいけどGoEchoってやつを使えばいいのか?

2022-05-05

anond:20220504211823

★★再追記

レンタルサーバは、自由度が低くてストレスになるからやらない。SQLでwith使いたいかMySQL8をって言ってもさくらレンタルサーバじゃ無理なんでしょ? あと同居利用者のせいで高負荷ってのも避けたい。そこを気にしない人はレンタルサーバでいいと思うよ。

あと LB $0.025/h だった。月2000円くらいか

追記

LBは独自ドメイン+自動更新無料SSL証明書のためね。Cloud Storageの無味乾燥ドメインでいいなら、SSL自動かつ無料でほんとに月数円。

-------

もうねめんどくさいんだわ。もちろん以前はそうやってたよ。

PHPだのApacheだのMySQLだのインストールしたり設定ファイル置いたり、

脆弱性対応したり、SSL証明書更新したり、一応落ちてないか無料監視サービス使ったり。

でも仕事ならともかく、趣味からこそこんなことやりたくないじゃん。

なので、コンテンツは Cloud Storage に置く。

Cloud Load Balancing も使う (無料 SSL 証明書のために)。

認証必要なところは Cloud Identity で。

動的部分は Cloud Functions で。

AWS なら S3+ALB+Cognito+Lambda だな。

そうしておけば、放置できる。自前で立てたマシンインスタンスもないから落ちてるかどうかとか気にしなくてもいい。負荷も考えない。クラウド様がよきにはからってくれるさ。たまにクラウド障害あるかもしれないけど、Google なり AWS なりが頑張って直してくれる。

って感じ。

ちなみにこちらは 1日数十アクセスの過疎サイト独自ドメイン+自動SSL証明書にするための Cloud Load Balancing に 4000円くらい払ってる。それがなければ月数円。

2022-04-17

後退し続けるたわわの論点

たわわ批判派の論点が動き続けてて訳が分からない。ので整理した。

フェーズ1: ナタリー炎上

発端は日経の当該広告ではなく、ナタリーが伝えた編集部コメントという認識

【炎上】日本経済新聞の広告がジェンダークレーマー被害に遭ってしまう - Togetter

今回の新聞広告について、ヤングマガジン編集部は「4月4日今年の新入社員最初に迎える月曜日です。不安を吹き飛ばし、元気になってもらうために全面広告を出しました」と語っている。

批判の理路は各人で異なるものの、概ね「元気になってもらうため」を「現実女子高生を見て元気になって」と解釈したフェミニスト(※)が広告掲載した日経批判しているものが多かったように見える。

性的消費とか性的搾取とかの用語を使いながら、この広告掲載することは即ち日経新聞による「現実女子高生を見て元気になって」というメッセージ是認であるという主張に収斂していく様子が(主観的には)観測された。

※ 「善良なネットユーザ」でも「ジェンダークレーマー」でも好きなように適当に読み替えてください



フェーズ2: 治部れんげ准教授の3つの問題点

そんなななか、ハフポスト専門家"治部れんげ"准教授を引き連れ以下のように問題点を整理してくれた。

「月曜日のたわわ」全面広告を日経新聞が掲載。専門家が指摘する3つの問題点とは? | ハフポスト NEWS

1つ目は、あらゆる属性の人が読む最大手経済新聞掲載されたことで、「見たくない人」にも情報が届いたことだ。

第一に「『見たくない表現に触れない権利』をメディアが守れなかったこと」が問題だと主張したが、法学クラスタからの猛反発を受けて治部れんげ准教授は「私の主張のメインは法律ではありません。コメント引用で見たくないものに触れない「権利」と書いてあるので、法律論だと思った方もいるようですが。」と実質的に取り下げた。

法学出身の治部れんげ准教授第一問題点として挙げたが、法律よりむしろマナーとかそういうものに近い話だったらしい。

”見たくない表現に触れない権利”は存在しない。すでに司法で否定されていた。平裕介弁護士の解説。 - Togetter


2つ目の問題は、広告掲載によって「異性愛者の男性未成年少女性的対象として搾取する」という「ステレオタイプ」(世間的固定概念)を肯定し、新聞社が「社会的お墨付きを与えた」と見られること

2個目の問題点が当時の批判派の主流に最も近いように思える。

広告のもの問題なのか、本編の内容や編集部コメントも併せて初めて問題になるのか、など不明点はあるものの、「新聞である日経広告掲載したこと問題という主張だ。


3つ目の問題点は、これまで「メディア広告によってジェンダー平等を推進し有害ステレオタイプ撤廃するための世界的な取り組み」を国際機関とともに展開してきた日経新聞が、自ら「ジェンダーステレオタイプを強化する」という矛盾に陥ってしまたこ

この記事では記載されていないが、治部れんげ准教授UN Women 日本事務所が推進する「アンステレオタイプアライアンス」のアドバイザーである

そのアドバイザーが「「3つのP」という[...]基準に照らすと、[...]女子高生の『人格主体性』は考慮されていません」と指摘」している。

「3つのP」という基準を守れていないことが問題だと明確に主張している。



フェーズ3: 国連女性機関からの抗議

治部れんげ准教授がやや燃えたあと、同じくハフポストUN Women本部日経に抗議したことを報じた。

国連女性機関が『月曜日のたわわ』全面広告に抗議。「外の世界からの目を意識して」と日本事務所長 | ハフポスト NEWS

UN Women 日本事務所石川雅恵所長にインタビューを行い、UN Womenの問題点認識を聞いている。

UN Women 日本事務所石川雅恵所長は、今回の全面広告が、「アンステレオタイプアライアンス」の加盟規約などに反すると指摘する。

「今回の広告は、男性にとっての『女子高生にこうしてほしい』という見方しか反映しておらず、女子高生には『性的な魅力で男性応援する』という人格しか与えられていません。私たちが重視してきた『3つのP』の原則は守られていないのです」

日経新聞違反しているとされる「加盟規約など」の具体的事項は明らかにされていないが、ここでも「『3つのP』の原則は守られていない」ことが問題とされているように読める。

その上で日経新聞に「「3つのP」に反する広告掲載したこと問題視し、同社の新聞広告掲載基準見直しを」要求したという。



フェーズ4:それ以降の議論
「3つのP」はポジティブチェックの基準でありネガティブチェックは不適(不可能)では?

『月曜日のたわわ広告は「アンステレオタイプ3つのP」に反したのか』2022-04-16|ヒトシンカ ( 『シンカ論マガジン』『センサイクロペディア』 )|note

社会常識としての日経「たわわ」問題(追記済 - tikani_nemuru_M’s blog

tikani_nemuru_Mさんへの返信 - hepta-lambda’s blog

違反しているか問題だと指摘されているが、違反していないかチェックするための基準ではないのでは?という議論

基準の内容からしても、過去インタビューからしても「3つのP」は達成できると望ましい、達成に向けて努力しましょうという位置づけという解釈自然と考えられる。

もしネガティブチェックとしたら他の広告とたわわとの比較となり、たわわに恣意的適用がされていないかという別の問題があるだろう。

日経個別UN Womenと結んだ約束違反したのが問題

UN Womenが抗議した報道を受けて、複数政治家を始め表現の自由の侵害懸念する声が上がった。

国連女性機関による「月曜日のたわわ」全面広告への抗議表明について|赤松健|note

これに対し、日経がアンステレオタイプアライアンス設立メンバであり、設立メンバとして個別に交わしていた覚書に違反したことUN Womenが問題にしているのだから政治家が抗議するのは筋が違うという反論がある。

フェーズ1では社会の公器たる新聞社が広告掲載したこと問題になっていたが、ここに至ってはアンステレオタイプアライアンスに加盟していない新聞社であれば問題は無いことになる。



まとめ

「3つのP」とか「ステレオタイプ」とか言われるけど、そもそも、あの絵のどこがダメなのか誰も具体的に指摘しているところを見たことがない。

著名な社会学者小宮友根 教授がまとめた「性的客体化の表現技法」のどれにも合致していないように見える。

炎上繰り返すポスター、CM…「性的な女性表象」の何が問題なのか(小宮 友根,ふくろ) | 現代ビジネス | 講談社(1/9)

UN Womenは「「3つのP」に反する広告掲載したこと問題視し、同社の新聞広告掲載基準見直し」を要求しているが、今回のたわわ広告を弾ける現実的な基準が全く想像できない。

2022-02-20

ExcelLambda関数で何が便利になるんだろうか

2022-01-25

本のまとめ

--

この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。

1章

コンテナとは】

他のプロセスとは隔離された状態OS上にソフトウェアを実行する技術

コンテナ利用のメリット

環境依存から解放

コンテナにはアプリの稼働に必要となるランタイムライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリ依存関係をすべてコンテナ内で完結できる。

依存関係を含めたパッケージリリース単位となる

環境構築やテストに要する時間の削減

優れた再現性ポータビリティ

全ての依存関係コンテナ内で完結するため、オンプレでもクラウドでも起動する。

ステージング環境テスト済みのコンテナイメージプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテスト必要工数を削減できる。

リソース効率のアップ

サーバー仮想化では、仮想マシンレベルリソースを分離し、ゲストOS上でアプリが起動する。つまりアプリだけでなく、ゲストOSを動かすためのコンピューティングリソース必要

一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。

Dockerとは】

コンテナライフサイクル管理するプラットフォーム

アプリコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。

アプリソースコード + Dockerfile

↓ buildでイメージ作成

イメージ(アプリケーションと依存関係パッケージングされる。アプリライブラリOS)

shipイメージの保存

レジストリに保存

run コンテナの実行

オンプレクラウドなどで起動

Dockerfileとは】

イメージを構築するためのテキストファイル

このファイルコマンド記述することで、アプリ必要ライブラリインストールしたり、コンテナ上に環境変数を指定したりする。

1章まとめ、感想

コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンド設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。

2章

AWS提供するコンテナサービス

コントロールプレーン

コンテナ管理する機能

コントロールプレーンは2種類

ECSとEKSがある。

ECS

フルマネージドなコンテナオーケストレータ。

オーケストレーションサービスであり、コンテナの実行環境ではない。

ECSの月間稼働率99.99%であることがSLA として保証

タスク

コンテナ動作するコンポーネント

タスクは1つ以上のコンテナからなる

アプリを起動するためにはコンテナ必要

タスク定義

タスク作成するテンプレート定義JSON記述

デプロイするコンテナイメージタスクコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。

サービス

指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサータスクを実行するネットワーク指定

クラスター

サービスタスクを実行する論理グループ

データプレーン

コンテナが実際に稼働するリソース環境

2種類ありECSとFargateがある。 Fargateに絞って書く

Fargateとは

サーバーレスコンピューティングエンジン

AWSのフルマネージドなデータプレーンとして定義されている

コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する

Fargate メリット

ホスト管理不要であること

サーバーのスケーリングパッチ適用保護管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる

Fargate デメリット

価格EC2より高い。

利用者コンテナの稼働するOSには介入できない

コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる

ECR

フルマネージドなコンテナレジストリ

コンテナイメージを保存、管理できる

コンテナが利用されているサービス

Lambda

・App Runner

Lambda

 利用者コードアップロードするだけでコードを実行できるサービスAWS側で基盤となるコンピューティングリソースを構築してくれるフルマネージドサービス

App Runner

 2021年5月GA(一般公開)となったサービスプロダクションレベルスケール可能webアプリを素早く展開するためのマネージドサービスGithub連携してソースコードをApp Runnerでビルドデプロイができるだけでなく、ECRのビルド済みコンテナイメージも即座にデプロイできる。

 ECSとFargateの場合ネットワークロードバランシング、CI/CDの設定などインフラレイヤに関わる必要があり、ある程度のインフラ知識必要になる。App Runnerはそれらインフラ周りをすべてひっくるめてブラックボックス化し、マネージドにしていることが特徴である

ECS Fargateを利用した場合コスト拡張性、信頼性エンジニアリング観点

コスト

EC2より料金は割高。ただし、年々料金は下がってきている。

拡張性】

デプロイの速度 遅め

理由1 コンテナごとにENIが割り当てられるため。ENIの生成に時間がかかる

理由2. イメージキャッシュができないため。コンテナ起動時にコンテナイメージを取得する必要がある。

タスクに割り当てられるエフェメラストレージは200GB。容量は拡張不可。ただし永続ストレージの容量が必要場合はEFSボリュームを使う手もある。

割り当て可能リソースは4vCPUと30GB。機械学習に用いるノードのような大容量メモリ要求するホストとしては不向き

信頼性

Fargateへのsshログインは不可。Fargate上で起動するコンテナsshdを立ててsshログインする方法もあるが、セキュアなコンテナ環境sshの口を開けるのはリスキーである。他にSSMセッションマネージャーを用いてログインする方法もあるが、データプレーンEC2の時に比べると手間がかかる。

しかし、2021年3月Amazon ECS Execが発表され、コンテナに対して対話型のシェルや1つのコマンドが実行可能となった。

エンジニアリング観点

Fargateの登場からしばらく経過し、有識者経験者は増え、確保しやすい。

システム要件確認

多数のユーザーに使ってもらう

可用性を高めるためにマルチAZ構成を取る

CI/CDパイプライン形成し、アプリリリースに対するアジティを高める

レイヤで適切なセキュリティ対策不正アクセス対策認証データの適切な管理ログ保存、踏み台経由の内部アクセス)を施したい

2章まとめ、感想

AWS提供するコンテナサービスはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理不要インフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である

3章

この章では運用設計ロギング設計セキュリティ設計信頼性設計パフォーマンス設計コスト最適化設計について述べている。

運用設計

Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計不具合修正デプロイリスク軽減のためのCI/CD設計必要である

モニタリングとは

システム内で定めた状態確認し続けることであり、その目的システムの可用性を維持するために問題発生に気づくこと

オブザーバビリティとは

システム全体を俯瞰しつつ、内部状態まで深掘できる状態

オブザーバビリティの獲得によって、原因特定対策検討が迅速に行えるようになる

ロギング設計

・cloud watch logs

他のAWSサービスとの連携も容易

サブスクリプションフィルター特定文字列の抽出も容易

・Firelens

AWS以外のサービスAWS外のSaaS連携することも可能

Firehoseを経由してS3やRed shiftOpenSearch Serviceにログ転送できる

Fluentdやfluent bit選択できる

fluent bitを利用する場合AWS公式提供しているコンテナイメージ使用できる

セキュリティ設計

イメージに対するセキュリティ対策

 - ソフトウェアライブラリ脆弱性は日々更新されており、作ってから時間が経ったイメージ脆弱性を含んでいる危険がある。

 - 方法

  脆弱性の有無はECRによる脆弱性スキャンOSSのtrivyによる脆弱性スキャン

継続的かつ自動的コンテナイメージスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリ場合CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャン必要になる。

cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能

提供元が不明ベースイメージ使用は避ける

・IAMポリシーによるECRのパブリック化の禁止

 - オペレーションミスによる公開を防ぐことができる

信頼性設計

マルチAZ構成

Fargateの場合サービス内部のスケジューラが自動マルチAZ構成を取るため、こちらで何かする必要はない。

障害時切り離しと復旧

ECSはcloud watchと組み合わせることでタスク障害アプリエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる

ALBと結びつけることで、障害が発生したタスク自動で切り離す

リタイアという状態

AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合ECSは新しいタスクに置き換えようとするその状態のこと。

Fargateの場合アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ整合などが生じて危険

システムメンテナンス時におけるサービス停止

ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能

サービスクォータという制限

意図しない課金増加から保護するために設けられた制限

自動でクォータは引き上がらない

cloud watch メトリクスなどで監視する必要がある。

パフォーマンス設計

パフォーマンス設計で求められることは、ビジネスで求められるシステム需要を満たしつつも、技術領域進歩環境の変化に対応可能アーキテクチャを目指すこと

ビジネス上の性能要件を把握することが前提

利用者数やワークロードの特性を見極めつつ、性能目標から必要リソース量を仮決めする

FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める

既存のワークロードを模倣したベンチマークや負荷テスト実施してパフォーマンス要件を満たすかどうかを確認する

スケールアウト

サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存タスクを停止する必要原則ない。

スケールアウト時の注意

・Fargate上のECSタスク数の上限はデフォルトリージョンあたり1000までであること。

VPCIPアドレスの割当量に気をつける

ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能IPアドレスが消費されていく

スケールアウトによるIPアドレスの枯渇に注意

Application Autoscaling

Fargateで使用可能

Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う

ステップスケーリングポリシー

ステップを設けて制御する

CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意ステップに従ってタスク数を増減させる

ターゲット追跡スケーリングポリシーとは

指定したメトリクスのターゲット値を維持するようなにスケールアウトやスケールインを制御する方針

ターゲット追跡スケーリングPermalink | 記事への反応(0) | 21:45

本のまとめ

--

この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。

1章

コンテナとは】

他のプロセスとは隔離された状態OS上にソフトウェアを実行する技術

コンテナ利用のメリット

環境依存から解放

コンテナにはアプリの稼働に必要となるランタイムライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリ依存関係をすべてコンテナ内で完結できる。

依存関係を含めたパッケージリリース単位となる

環境構築やテストに要する時間の削減

優れた再現性ポータビリティ

全ての依存関係コンテナ内で完結するため、オンプレでもクラウドでも起動する。

ステージング環境テスト済みのコンテナイメージプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテスト必要工数を削減できる。

リソース効率のアップ

サーバー仮想化では、仮想マシンレベルリソースを分離し、ゲストOS上でアプリが起動する。つまりアプリだけでなく、ゲストOSを動かすためのコンピューティングリソース必要

一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。

Dockerとは】

コンテナライフサイクル管理するプラットフォーム

アプリコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。

アプリソースコード + Dockerfile

↓ buildでイメージ作成

イメージ(アプリケーションと依存関係パッケージングされる。アプリライブラリOS)

shipイメージの保存

レジストリに保存

run コンテナの実行

オンプレクラウドなどで起動

Dockerfileとは】

イメージを構築するためのテキストファイル

このファイルコマンド記述することで、アプリ必要ライブラリインストールしたり、コンテナ上に環境変数を指定したりする。

1章まとめ、感想

コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンド設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。

2章

AWS提供するコンテナサービス

コントロールプレーン

コンテナ管理する機能

コントロールプレーンは2種類

ECSとEKSがある。

ECS

フルマネージドなコンテナオーケストレータ。

オーケストレーションサービスであり、コンテナの実行環境ではない。

ECSの月間稼働率99.99%であることがSLA として保証

タスク

コンテナ動作するコンポーネント

タスクは1つ以上のコンテナからなる

アプリを起動するためにはコンテナ必要

タスク定義

タスク作成するテンプレート定義JSON記述

デプロイするコンテナイメージタスクコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。

サービス

指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサータスクを実行するネットワーク指定

クラスター

サービスタスクを実行する論理グループ

データプレーン

コンテナが実際に稼働するリソース環境

2種類ありECSとFargateがある。 Fargateに絞って書く

Fargateとは

サーバーレスコンピューティングエンジン

AWSのフルマネージドなデータプレーンとして定義されている

コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する

Fargate メリット

ホスト管理不要であること

サーバーのスケーリングパッチ適用保護管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる

Fargate デメリット

価格EC2より高い。

利用者コンテナの稼働するOSには介入できない

コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる

ECR

フルマネージドなコンテナレジストリ

コンテナイメージを保存、管理できる

コンテナが利用されているサービス

Lambda

・App Runner

Lambda

 利用者コードアップロードするだけでコードを実行できるサービスAWS側で基盤となるコンピューティングリソースを構築してくれるフルマネージドサービス

App Runner

 2021年5月GA(一般公開)となったサービスプロダクションレベルスケール可能webアプリを素早く展開するためのマネージドサービスGithub連携してソースコードをApp Runnerでビルドデプロイができるだけでなく、ECRのビルド済みコンテナイメージも即座にデプロイできる。

 ECSとFargateの場合ネットワークロードバランシング、CI/CDの設定などインフラレイヤに関わる必要があり、ある程度のインフラ知識必要になる。App Runnerはそれらインフラ周りをすべてひっくるめてブラックボックス化し、マネージドにしていることが特徴である

ECS Fargateを利用した場合コスト拡張性、信頼性エンジニアリング観点

コスト

EC2より料金は割高。ただし、年々料金は下がってきている。

拡張性】

デプロイの速度 遅め

理由1 コンテナごとにENIが割り当てられるため。ENIの生成に時間がかかる

理由2. イメージキャッシュができないため。コンテナ起動時にコンテナイメージを取得する必要がある。

タスクに割り当てられるエフェメラストレージは200GB。容量は拡張不可。ただし永続ストレージの容量が必要場合はEFSボリュームを使う手もある。

割り当て可能リソースは4vCPUと30GB。機械学習に用いるノードのような大容量メモリ要求するホストとしては不向き

信頼性

Fargateへのsshログインは不可。Fargate上で起動するコンテナsshdを立ててsshログインする方法もあるが、セキュアなコンテナ環境sshの口を開けるのはリスキーである。他にSSMセッションマネージャーを用いてログインする方法もあるが、データプレーンEC2の時に比べると手間がかかる。

しかし、2021年3月Amazon ECS Execが発表され、コンテナに対して対話型のシェルや1つのコマンドが実行可能となった。

エンジニアリング観点

Fargateの登場からしばらく経過し、有識者経験者は増え、確保しやすい。

システム要件確認

多数のユーザーに使ってもらう

可用性を高めるためにマルチAZ構成を取る

CI/CDパイプライン形成し、アプリリリースに対するアジティを高める

レイヤで適切なセキュリティ対策不正アクセス対策認証データの適切な管理ログ保存、踏み台経由の内部アクセス)を施したい

2章まとめ、感想

AWS提供するコンテナサービスはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理不要インフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である

3章

この章では運用設計ロギング設計セキュリティ設計信頼性設計パフォーマンス設計コスト最適化設計について述べている。

運用設計

Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計不具合修正デプロイリスク軽減のためのCI/CD設計必要である

モニタリングとは

システム内で定めた状態確認し続けることであり、その目的システムの可用性を維持するために問題発生に気づくこと

オブザーバビリティとは

システム全体を俯瞰しつつ、内部状態まで深掘できる状態

オブザーバビリティの獲得によって、原因特定対策検討が迅速に行えるようになる

ロギング設計

・cloud watch logs

他のAWSサービスとの連携も容易

サブスクリプションフィルター特定文字列の抽出も容易

・Firelens

AWS以外のサービスAWS外のSaaS連携することも可能

Firehoseを経由してS3やRed shiftOpenSearch Serviceにログ転送できる

Fluentdやfluent bit選択できる

fluent bitを利用する場合AWS公式提供しているコンテナイメージ使用できる

セキュリティ設計

イメージに対するセキュリティ対策

 - ソフトウェアライブラリ脆弱性は日々更新されており、作ってから時間が経ったイメージ脆弱性を含んでいる危険がある。

 - 方法

  脆弱性の有無はECRによる脆弱性スキャンOSSのtrivyによる脆弱性スキャン

継続的かつ自動的コンテナイメージスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリ場合CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャン必要になる。

cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能

提供元が不明ベースイメージ使用は避ける

・IAMポリシーによるECRのパブリック化の禁止

 - オペレーションミスによる公開を防ぐことができる

信頼性設計

マルチAZ構成

Fargateの場合サービス内部のスケジューラが自動マルチAZ構成を取るため、こちらで何かする必要はない。

障害時切り離しと復旧

ECSはcloud watchと組み合わせることでタスク障害アプリエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる

ALBと結びつけることで、障害が発生したタスク自動で切り離す

リタイアという状態

AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合ECSは新しいタスクに置き換えようとするその状態のこと。

Fargateの場合アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ整合などが生じて危険

システムメンテナンス時におけるサービス停止

ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能

サービスクォータという制限

意図しない課金増加から保護するために設けられた制限

自動でクォータは引き上がらない

cloud watch メトリクスなどで監視する必要がある。

パフォーマンス設計

パフォーマンス設計で求められることは、ビジネスで求められるシステム需要を満たしつつも、技術領域進歩環境の変化に対応可能アーキテクチャを目指すこと

ビジネス上の性能要件を把握することが前提

利用者数やワークロードの特性を見極めつつ、性能目標から必要リソース量を仮決めする

FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める

既存のワークロードを模倣したベンチマークや負荷テスト実施してパフォーマンス要件を満たすかどうかを確認する

スケールアウト

サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存タスクを停止する必要原則ない。

スケールアウト時の注意

・Fargate上のECSタスク数の上限はデフォルトリージョンあたり1000までであること。

VPCIPアドレスの割当量に気をつける

ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能IPアドレスが消費されていく

スケールアウトによるIPアドレスの枯渇に注意

Application Autoscaling

Fargateで使用可能

Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う

ステップスケーリングポリシー

ステップを設けて制御する

CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意ステップに従ってタスク数を増減させる

ターゲット追跡スケーリングポリシーとは

指定したメトリクスのターゲット値を維持するようなにスケールアウトやスケールインを制御する方針

ターゲット追跡スケーリングPermalink | 記事への反応(0) | 21:45

2021-12-07

プログラミングスクールに1ヶ月通った45歳無職童貞でもマイナビ就活できますか?

maru9 = ["大東文化大学", "東海大学", "亜細亜大学", "帝京大学", "国士舘大学"]

def mynavi_filter(students):
    return filter(lambda x: x not in maru9, students)

print(list(mynavi_filter(["東京大学", "東海大学"])))

2021-08-19

la la la lambda variant

息が止まるくらいの

ログイン ユーザー登録
ようこそ ゲスト さん