「シンタックス」を含む日記 RSS

はてなキーワード: シンタックスとは

2024-10-28

vlookupか

たかだか6つのために?

シンタックス思い出すための検索してる間におわりそう

copilotにきくか

2024-05-24

anond:20240523100428

ダブスタ検証用のスクリプト簡単に書いたよ(AIで)

import requests
import json
from urllib.parse import quote

def fetch_bookmarks(url):
    try:
        # URLエスケープ
        escaped_url = quote(url, safe="")
        api_url = f"https://b.hatena.ne.jp/entry/json/?url={escaped_url}"

        response = requests.get(api_url)
        response.raise_for_status()

        try:
            return response.json()
        except json.decoder.JSONDecodeError as e:
            print(f"Error decoding JSON from {api_url}: {e}")
            print("Response content:", response.text)
            return []
    except requests.exceptions.RequestException as e:
        print(f"Error fetching bookmarks from {api_url}: {e}")
        return []

def find_common_bookmarks(bookmarks1, bookmarks2, url1, url2):
    common_users = set(bm["user"] for bm in bookmarks1 if bm["comment"]) & set(bm["user"] for bm in bookmarks2 if bm["comment"])
    common_bookmarks = []
    for user in common_users:
        comments = []
        for bm in bookmarks1:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url1, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        for bm in bookmarks2:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url2, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        if len(comments) == 2:
            common_bookmarks.append({"user": user, "comments": comments})
    return common_bookmarks

if __name__ == "__main__":
    url1 = "https://news.yahoo.co.jp/articles/f9966c4ccc374fc88babbb50175a9ea844c99638"
    url2 = "https://www.asahi.com/articles/ASN6K7F64N6KUJHB00L.html"

    data1 = fetch_bookmarks(url1)
    data2 = fetch_bookmarks(url2)

    common_bookmarks = find_common_bookmarks(data1["bookmarks"], data2["bookmarks"], url1, url2)

    print(json.dumps(common_bookmarks, indent=2, ensure_ascii=False))

url1, url2のところを対象としたいものに変えれば使えるよ

抽出対象となるのは以下のユーザーだよ

バグあったら直して使ってね

※てかはてな匿名ってシンタックスハイライト記法使えないんだね、使って表示確認したら500エラーになったわ

2024-04-07

シンタックスシュガー✕(かける)

掛算の順序と学習指導要領の話おもしろかったです。

りんごが5つ載った皿が4枚ある場合りんごがいくつになるか」という問題を立式するときは、

という話だと思いました。

4✕5は4[個/枚] * 5[枚]に変換されるので、正解にならない。

✕は乗算の演算子と思ってしがいがちだけど、被乗数と乗数の順序を考慮するときは、その順序を含めた乗算のシンタックスシュガーになっている。

なので立式するときの✕では交換法則が成り立たない。

なんか、このシンタックスシュガーいけてないなと思うのは、計算するとき交換法則適用していいよと言われているところと、乗法を習うこの単元以外では立式の際もシンタックスシュガーではなく乗算の演算子として取り扱われているところ。

でも、いけてないシンタックスシュガーは世に溢れているので、まあいいや。

被乗数と乗数の関係を考えていて思い出したのが、消費税が導入されたとき大学生協書籍代はどうなるのかという話。

これで1,000円の本はいくらになりますかという話

乗算は交換法則が成り立つから1000*0.9*1.03でも1000*1.03*0.9でも良いです。

✕も計算とき交換法則適用して良いから1000✕0.9✕1.03でも1000✕1.03✕0.9でも良いです。

でも✕で立式するときはどうなるのか。

1000[円/冊]✕1[冊]✕0.9✕1.03と1000[円/冊]✕1[冊]✕1.03✕0.9のどちらが正しいのか。

0.9と1.03は単位がないから乗数、被乗数の順序を考慮しなくて良いのかな。

僕が小学生の頃は乗数、被乗数は「かける数」「かけられる数」と言われてました。

「この式の4は『かける数』でしょうか『かけられる数』でしょうか」みたいなテスト問題があったけど、「この話は、ここでしか出てこないので、気にしなくて良いです」と先生が言って、採点対象外になってました。

大学生協で割引と消費税の順序に悩まなくて良い人生で良かったです。

2024-03-01

数学必然性は実は人間言語分析能力によるものなので、言語能力が異なる宇宙人とは、数学的語彙が共有できない可能性があるんですよね~


なぜ数学言語能力関係するんだ?と思う人は、以下のノーム・チョムスキーの有名な、無意味な二種の文を見ればわかってもらえるかもしれませんね~

・“Colorless green ideas sleep furiously.”(「無色の緑の考えが猛烈に眠る。」)

・“Furiously sleep ideas green colorless”(「猛烈に」「眠る」「アイデア」「緑色」「無色」)

前者は文法的には正しいが意味が無い文で、後者文法的に正しくないか意味がない文、ということはわかっていただけるかと思います

しかし、上記二種の文は、両方とも経験的には何も想起させないがゆえに、経験的には同様に意味の無い文です。

ということは、経験こそが認識の基礎、基底である考える人にとっては、二種の文の違いを説明することができないのですよね~。

なぜならそのどちらも経験することができず、経験による理解が基底であると主張するのだから経験的基底において違いのない(意味のなさ、指示対象存在しないという点において同質という意味)上記二種の文の本質的差異(基底的差異)を指摘することができないのですね~


現代言語哲学、そして現代論理学の基礎を作ってきた哲学者たちは、数学必然性がどこから来るのかという問題について、

文の経験理解よりもに、文の文法的分析が先に行われる(そして数学必然性は、文法分析に基づく理解のものから正当化可能である)ことを示すことによって、

経験的(アプリオリ)論理数学必然性正当化可能であることを証明してきたんですね~

例えば上記二種の前者の文でいえば、経験できないにもかかわらず文法的に正しいことが理解できるのは、まず文法分析が先に行われ、その後意味解釈に失敗するから無意味なのであって、その逆ではないのですね~

そして数学で扱われる文、例えば2+2=4は、なんらかの経験を前提せずとも、形式的理解(つまり文法的理解)から正当化可能であるがゆえに必然的(=非偶然的、または前経験的)なのですね~

そして例えば上記二種の文とは別の有意味である文「無職緑色ジャージを着た男性が猛烈に眠る」であったとしても、まず文法的理解が先に行われたあと、その意味解釈を行うことができるがゆえに有意味なのですね~

プログラミング言語だって、まずどれが変数で、その変数に何が割り当てられているかといったセマンティクスよりも先に、シンタックス分析が行われますよね~


から数学必然性は実は人間の前経験的な言語分析能力によるものなので、言語能力が異なる地球外生命体と遭遇した時、数学的語彙が共有できない可能ももしかしたらあるのかもしれませんね~

なぜなら我々の理解する必然性とは、我々の言語分析能力に基づくものであって、よそから来た宇宙人にそれが期待される理由がないからですね~

2023-04-28

加速するビジネス増田止まるもの盛るマトだスマで拗ね地美区楚か(回文

おはようございます

もー超ウケるんだけど。

聞いてくれる?

GPT-4ちゃんの超絶賢い素早い翻訳でお客さんとのやり取りが滑らかに捗りまくりまくりすてぃーで、

私のビジネスが加速するのはいいんだけどPayPalが止まるという笑っちゃうでしょ?

ウケるわ。

と言うのもあんまり年に何回か以下のPayPalでの入金がないか

ここのところ立て続けに問い合わせなど多くってその分のお支払いの入金も立て続けにあるわけね。

いまそう言うお金管理サービスってちょっと変な動きがあると警告が来るじゃない。

最近急激に受取金額が通常と比べて著しく増加しているのでって理由で警告が出たの。

まあ実際に真っ当なやり取りでの受け取りだからそれは内容問題ないんだけどさ。

実際PayPalアカウントが止まっちゃうとかじゃなくて、

21日間そこから日本円に移せない保留期間になっちゃったってだけの話しなんだけどね。

もう笑うわー

ビジネスが加速したらPayPalが止まるって。

それなんて言う「風が吹けば桶屋が儲かるバタフライエフェクト方式か!つって

加速したら止まるってジワるわー。

自分で言ってて自分でウケていたら世話ないけど

なのでもう1回言うね!

GPT-4ちゃんビジネスが加速したらPayPalが止まる!

あーウケるわ。

抱腹絶倒とはこのことね。

まあ実際そこまではないけど気持ちはそんな感じかしら。

コーヒー吹いた実際吹いてない理論と一緒よ。

でもさ、

まあここでも256回ぐらい同じことを何回も言ってるけど

ほんとGPT-4ちゃんが賢すぎて、

よく言うニュースでやってるなんか難しいプログラムがどうのこうの難しい分析がどうのこうのって

そんな凝ったテクニカルなことをやっているわけではなく

ただただGPT-4ちゃんお話ししながら翻訳してもらってるつーだけの話しなのよ。

大まかな内容を私が箇条書きで書いて、

その旨を英文さらさらGPT-4ちゃんが書いてくれて、

しろ私が書き忘れたことや言い忘れたことの細かいことを付け加えてやり直してもらうことが多いので、

ほぼ一発で思った海外文章になるの。

もはや英語に限らずなのがまったくもって私もそれが本当に正しいのか分からないけど、

これあってんの?って直接GPT-4ちゃんにたずねるとそれもちゃんと答えてくれるから

対話型もなにも自分が思ったことを書いて渡せばいいだけの使い方なのよ。

「さっきのにこの内容の旨付け加えてもう一回お願い!」とかで言う指示の仕方でフレンドリーだし、

いきなりシンタックスエラーとかって喰らったりしないもんね。

多少こっちがタイプミスだったり誤変換だったりゴホンと言えば龍角散だったりしても

そこも推測して踏まえて何事もなかったかのように、

本意を理解してくれてるみたいなのよね。

でさ、

私が素でタイプミスしたところをワザとゴメン意味これ分かった?ってGPT-4ちゃんに訊くと、

文章前後文脈でおおよその理解は出来るから大丈夫でーす!だって

人でもいるじゃない、

もー一字一句間違えたら鬼の首取ったどーってそれなんて黄金伝説?って言うぐらいな尾根ギアしますな人いるじゃない。

揚げ足とか一切取らないのよねGPT-4ちゃん

同じ事繰り返しお願いしても嫌な顔しないし。

同じ事繰り返しお願いしても喜んでくれるのはGPT-4ちゃん居酒屋生ビール頼む時よね!「喜んで~!」みたいなの。

なーんで持ってんの?

なーんで持ってんの?

飲み足りないから持ってるの!

飲~んで飲~んで飲~んで!

飲~んで飲~んで飲~んで!

ってもう大学のうちのサークル歓迎会とかでコールとかないから!って言いそうなぐらいよ。

まあそんなこんなで

GPT-4ちゃんビジネスが加速したらPayPalが止まったってお話でした。

今日も締めは機関車トーマスお話の終わりのような感じで締めくくるわ。

うふふ。


今日朝ご飯

チョコパンしました。

だんだん早くなってきて目覚めるんだけど、

今日はなんか肌寒くて目が覚めた感じの起床30分前で、

うーん寒い寒いってモーフにくるまっていたわ!

でもさなんでモーフって毛布って変換出来ないのかしら?変なの!

デトックスウォーター

ホッツ緑茶ウォーラーしました。

一瞬また忘れて思い出してやろうとしていたルイボスティーウォーラー

これからの時期また復活させたいところだわ。

まだ朝寒いのか暑いのかよく分からないときがあって

困るわよね。


すいすいすいようび~

今日も頑張りましょう!

2023-03-02

SQLってどうやって勉強すればいいの

プログラミングJSで動くの作れたけどSQL分からん

追記

chatgptで

sqlite3でtwitterみたいなサイトテーブル設計をして。

上記Twitterのようなサイト特定ユーザータイムラインを表示するクエリの例を教えて」

って聞くと、こういうの表示されるけど、こんなの絶対パッと思いつかんやろ!!

特にJOIN2回使うのが全然分からん。なんならJOIN1回の部分も分からん

っていうか、hatena君、sqlシンタックスハイライトするとインターナルサーバーエラー返してくるんだが...

>|エスキューエル|

パイプパイプ<

class Foo
  def bar'baz' # return baz
  end
end

sqlだけっぽい......

CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE,
  password TEXT NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE tweets (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL,
  body TEXT NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users (id)
);

CREATE TABLE follows (
  follower_id INTEGER NOT NULL,
  followed_id INTEGER NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (follower_id, followed_id),
  FOREIGN KEY (follower_id) REFERENCES users (id),
  FOREIGN KEY (followed_id) REFERENCES users (id)
);


SELECT tweets.id, tweets.body, tweets.created_at, users.username
FROM tweets
JOIN follows ON tweets.user_id = follows.followed_id
JOIN users ON tweets.user_id = users.id
WHERE follows.follower_id = [特定ユーザーID]
ORDER BY tweets.created_at DESC;

2021-10-01

おじさん構文というもの存在するのならlintを作れよ

シンタックスエラー出せよ

2021-09-23

経理をやってたような人がプログラミングをすることになると数字カンマを入れたくなるんだろうか?

つい teisuu = 10,000 って書いてしまってシンタックスエラー出す感じで

2021-09-18

Goが一部に嫌われる気持ちはわかるが

でもRubyは難しすぎると思う。

しかも難しさの方向性がさ、CとかRustとかと違うよね。

100徳ナイフか多機能時計みたいになってるじゃん。

複雑怪奇シンタックスシュガーを全部覚えないと幸せになれない感じ。

しかもググラビティが低いものばかり。

例えばパターンマッチ

なんだよあれ意味不明すぎる。

あいうのが最近言語では普通なの?

おじさんおじさんだからあんなの見せられても読めないよ。

「何これ珍構文」みたいになっちゃうよ。

というわけでRubyがむっちゃ嫌いな人もたくさんいるんだよんという話。

2021-09-10

GOTO有害であると考えられるだって、今時全面同意はされない

人類GOTO落とし穴を避けるために様々なシンタックスを生み出してきた

そのシンタックスを生み出してきた事実が、逆説的に原始プログラミングではGOTO必要であることを示している

2021-09-05

anond:20210905153836

自分自分レスをつける

うぇーい自分、見てるー?

はてな記法は慣れないなあ

スーパーpre記法シンタックスハイライトって使えない?

>|js|
function wawawa() {
    console.log('忘れ物ー');
}
|<

って書くとInternal Server Error出たんだけど大丈夫

2021-08-06

Railsからプログラミング始めた人ってプログラミング能力低くない?

Railsしか書けないおじさんというのがいる。

RubyRailsでどう書くかを知っているか知っていないかだけでそれがプログラミング能力だと勘違いしてる人が多い。全員というわけではないが……

「このライブラリでこう書ける」とか「こういう書き方がある」とか「こっちに書くとここがこうなる」とか、そういった規約覚えゲー的なところに目を取られて、どれだけRuby on Rails関連の規約をたくさん覚えているかプログラミングスキルが高いかいかを考えてる人が多い。もちろんそうした覚えゲーもある種プログラミング能力の一部なのだが、一方でライブラリを単に入れただけでは実現不可能パフォーマンスを考えたコードを書くときアーキテクチャ設計の段階では、何年も経験しているはずなのに役立たずになる。

ググるのが面倒なシンタックスシュガーや、ライブラリを導入した人しか辿り着けないconfigなど、規約(笑)かい発見非可逆なルールによって、それを導入した人だけが知っていて既得権益を得られるような構造になっている。そのために、ある機能を新しく利用したときに、それを知らない人にRails知識マウントを取れるようになっている。この気持ち悪さは、例えるなら、刑法を全部読んでからじゃないと街を歩くだけで逮捕されて、しかも何の罪で逮捕されているのか教えてもらえないようなものだ。

それで、全員というわけではないが、そういったRailsしか書けないおじさんは別言語で書くときに平気で今までプログラミングしたこといかのようなレベルの最悪のクソコードを生み出してくる。そもそも言語が書けないおじさんも多い。

なぜなら、Rails知識こそがプログラミングスキルだと考えていて、Rails知識すごいワールドしか生きてないからだ。覚えゲーをやっていただけで、スキルとしてはポケモン名前を覚えただけにすぎない。社内スキルのようなものだ。

自分としてはRubyRails直ちに滅びるとは思っていないが、Railsをメインで使ってる会社からしても、こうしたRailsしか書けないおじさんは今後不要になってくると思う。

2021-06-28

ecmascriptアロー関数式で結果オブジェクトには括弧を付けないといけないのは何故なんだ

中括弧で囲まれた内容がシンタックスなのかオブジェクトなのかは自動で判定できるやろ。なんで括弧が必要になるんだ。

教えてプログラムに詳しい増田ニキ。

2021-05-23

anond:20210523001000

インデントされた形式にしたければ好みのフォーマッタを使えばいいだけ。

Pythonみたいにシンタックスとして縛られちゃう自由度がなくなって不便。例えば何らかの理由で「ここはインデントしたくない」みたいな場合不可能になる。

何にせよ使う人の選択肢を奪う事はよくない事だと思ってる。

2020-10-14

ベトナム語が難しすぎる

ベトナム語格変化とか名詞の性がないので日本人には覚えやす言語だとどこかで読んだ気がするけど、実際に勉強してみると自分にはものすごく難しい。


なんで難しいのか考えてみると、まず声調のせいだと思う。

中国語と違ってベトナム語綴り字のうちに声調の記号が入ってるので、まだわかりやすいといえばわかりやすいのかもしれない、けど、やっぱり全然慣れない。特に文末で高い声調のまま終わるタイプの話し方は日本語ほとんどないと思うので、本当に慣れなくて苦手。

あと、ベトナム語は似たような発音単語が多すぎて区別できない。

ベトナム語っぽい音としてニャーとか、ニュアとか、ブアとか、ズンとか、ザーとか、ダオとか、同じような音が違う発音記号付きで次々と出てきて全部意味が違うので、覚えようとしても無理だ。

それからシンタックスが謎すぎる。

ベトナム語って、実はロマンス語系の言語結構似てるようなシンタックスだなと思うことが割にあるんだけど、繋合動詞格変化もないからやはり違うわけで、謎すぎる。

他の東南アジア言語中国語ちゃんとやっている人がベトナム語勉強すると、わかりやすかったりするのだろうか。少なくとも自分にはさっぱりわからない。

さんざんベトナム語への愚痴を書いたけど、できるようになりたいと思っているので、何か上手い学習法があれば試してみたい。

追記

あと、ベトナム語女性に対して丁寧めにお礼を述べるときは、

 Cảm ơn chị

(噛むウンチ

になってしまって恥ずかしいと思っている日本人学習者は自分だけなのか。

2020-07-29

webデザイナーが欲しいのではなくてHTML/CSS理解してる人間が欲しいんだよ

シンタックスとセマンティクスのどちらも理解してるデザイナーがそうそういなくて結局フロントエンドエンジニアが駆り出される

2020-07-14

はてな記法一覧を使いこなしてみたい

 はてな記法とは?

はてな記法とははてなダイアリー使用することができる記法の事である

t*もうこんな時間

腹減ったなあ

name*name属性って何ぞや?

よく分からないので初めて使う

日記カテゴリー記法って何だよ

今後使う機会あるのかなこれ

小見出し記法なあ
ちゃんと読めてるのかこれ

文字ちんこは大きい方が良いと聞いた事はある

正直
飽きてきた
はいつまで
頑張ればいいの
二人なら終わらせる
事が出来る

|*面白い機能も|*ある物だな|

|今後使う事は|無いかもしれないけど|

はてな記法一覧を使いこなしてみたい

俺に整形しろと仰るのか?
スーパーって何か凄い響きだ

シンタックスハイライト)はよく分からないので飛ばします

改行出来てるかな

(pタグ停止記法)(tex記法)(ウクレレ記法)は面倒臭いのでパス

全然一覧じゃないけどどうなったかな?

2020-05-23

anond:20200521175300

どもども。

「なにか作ってみろ」は有効アドバイス

わたし意見と経歴

わたしは「なにか作ってみろ」系の言説にはまったく同意しません。

わたし自身会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I時代がわかる……)、基本的アルゴリズムコントロールブレークマッチング、マスタ-トランザクションソートマージetc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。

こういう経験新卒カードがあるから有効もので、では1から始めるとしたら……、というときに、プログラミングスクール専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。

実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。

「なにか作ってみる」前に動機をはっきりさせる

話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います

「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。

動機リブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDance樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。

ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。

作ってみた」は就職に使える経験

あと、元増田さんの動機は「プログラミング生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います

ビジネスで使われるアルゴリズムにはそれなりのルールがあります安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。

「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。

また、たとえば「例をコピーして解析する」というのもある意味有効プログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途プログラムに関わっていないと持てないというジレンマがあります

野生のプログラマ就職有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。

どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校意味あるのか?)という話ですが、目的就職ならば、一番の近道のような気がします。

じゃあどうすべきか?は他人にはわからない

そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います

「なにか作ってみました」の記録

自分がまず作ったもの晒してみろよ

さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)

GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。

初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。

これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近インフレ気味かもしれませんね)。

なにをするツール

朝日新聞首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。

首相動静の例(2018年12月11日……話題になったものです)

 【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分安全保障と防衛力に関する懇談会

 【午後】0時11分、政府与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟額賀福志郎会長河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相財務省岡本薫明事務次官太田主計局長。4時7分、太田氏出る。可部生理局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村内閣情報官宮川内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分北村氏出る。10分、東京永田町ザ・キャピトルホテル東急宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領会談。7時12分、署名式、共同記者発表。32分、公邸首相主催の夕食会。8時43分、アクフォアド大統領見送り。9時、ヨルダンのアブドラ国王電話協議

首相動静フォーマット

ただ、これはフォーマットがはっきりしており、

  • 午前と午後はそれぞれ1行になっていて、行頭には【午前】/【午後】という文字列が付いている。
  • 午前と午後の間には空行がある。
  • ひとつひとつイベント時刻表示で始まり句点「。」で終わっている。
  • 時刻は「h時m分」型で、前ゼロはつかない。後にかならず読点「、」が付く。「h時」の部分が前の項目と同じ場合には省略する。
  • 午前いっぱい、午後いっぱいの予定の場合には時刻をつけない(他の首相動静から)。

と、例を見るかぎりキッチリとしたルールに則っているようです。

動機

なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。

整形ツール
ツール仕様
整形後の例(上記動静を整形)

【午前】

09時31分、自民党本部

09時33分、同党役員会。

10時02分、官邸

10時05分、閣議

10時21分、宇宙開発戦略本部

10時34分、柴山昌彦文部科学相

10時38分、岩屋毅防衛相

10時41分、山下貴司法相

11時03分安全保障と防衛力に関する懇談会

【午後】

00時11分、政府与党連絡会議

00時44分、山口那津男公明党代表

01時27分、日韓議員連盟額賀福志郎会長河村建夫幹事長

02時20分、行政改革推進会議

02時52分、兼原信官房副長官補、秋葉剛男外務事務次官

03時36分、麻生太郎財務相財務省岡本薫明事務次官太田主計局長。

04時07分、太田氏出る。可部生理局長加わる。

04時15分、全員出る。

04時25分、黒川弘務法務事務次官

04時34分、谷内正太郎国家安全保障局長、北村内閣情報官宮川内閣衛星情報センター所長。

04時41分、谷内、宮川両氏出る。

05時03分北村氏出る。

05時10分、東京永田町ザ・キャピトルホテル東急宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。

05時20分、官邸

06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影

06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。

06時27分、アクフォアド大統領会談

07時12分、署名式、共同記者発表。

07時32分、公邸首相主催の夕食会。

08時43分、アクフォアド大統領見送り

09時00分、ヨルダンのアブドラ国王電話協議

う~ん、見やすい!ことないですか?

あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静話題になったとき)とします。全角数字計算ってどうやるんだろう?

ソース

たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。

プログラマ玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。

はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。

# encoding: utf-8
# 漢字コンバータライブラリを取りこむ(String漢字変換メソッドを付けてくれる。神)
require 'kconv'

# 正規表現パターン
# 時刻をh時m分形式からhh時mm分形式にする
# 否定後読みを使用する
# 時は行頭にある
OneDigitHour = /^((?<![0-1])[0-9]時)/
# 分は時のあとにある。このパターンマッチすると、\1が時、\2が分になる。
OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/
# 分のない、時だけの行のパターン否定先読み使用
HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/

# 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?)
def convTopHourMinute2TwoDigits(oneLine)
    # 時を変換
    oneLine.sub!(OneDigitHour, "0\\1")
    # 分を変換
    oneLine.sub!(OneDigitMinute, "\\10\\2")
    # 分がない場合"00分"を追加
    oneLine.sub!(HourWithoutMinute, "\\100分")
    # 戻り値
    oneLine
end

# 入力ファイル名前
InputFilename = "首相動静2018年12月11日.txt"
# 出力ファイル名前
OutputFilename = "首相動静2018年12月11日_編集済.txt"

# 入力ファイルオープン
inFile = File.open(InputFilename, "r")
# 出力ファイルオープン
outFile = File.open(OutputFilename, "w")

# 時刻パターンシンプルに、h時、m分、h時m分、という3パターンを結合する
# 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかった
jikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/
# 午前/午後
ampm = /(【午前】|【午後】)/

# 午前/午後、あるいは時刻の前で改行するためのパターン
kaigyouSign = Regexp.union(ampm, jikokuPattern)

# ファイル一括読み込み
# 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったので
contents = inFile.read.toutf8

# 入力終了。閉じておきます
inFile.close

# スコープ関係から、ここでローカル変数に代入
# ※ Rubyスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら
#  明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。
hour = ""

# デバッグ行はコメント化しています
# 時刻パターンチェックのため、コンテンツを出力してみる
# p jikokuPattern.match(contents)

# エントリを改行サインで行に分ける
contents.gsub!(kaigyouSign, "\n\\&") # "\\&"はマッチした文字列のもの。2重のエスケープ"\\"が必要

# 改行チェックのため出力
# p contents

# 入力を行で分割して各行ごとに処理
contents.split("\n") do |oneLine|
    # 午前/午後を示す開きカッコ"【"があるか
    if (oneLine =~ /^【/) then
        # そのまま出力
        outFile.write(oneLine + "\n")
        # p "午前午後:" + oneLine
        next
    # 空白行は無視スキップする)
    elsif (oneLine =~ /^[\s ]*$/) then
        # 出力しない
        # p " 空白行:<skip>"
        next
    # 行頭に「時」があるか
    elsif (oneLine =~ /^[0-9]{1,2}時/) then
        # あったら時間表示を抜きだしておく
        hour = oneLine.match(/^([0-9]{1,2}時)/)[0]
        # p "   時:" + oneLine
        outFile.write(convTopHourMinute2TwoDigits(oneLine) + "\n")
        next
    else
        # 「時」がなければつけて出力
        oneLine = hour + oneLine
        # p "普通の行:" + oneLine
        outFile.write(convTopHourMinute2TwoDigits(oneLine) + "\n")
    end
end
感想

手でやったほうが早いね

以上

2020-03-22

anond:20200322091421

シンタックスエラーコンパイル時にはじけるのに、実行時にならないとわからないスクリプト言語はたいへんですな プギャー@C言語使い

グループSNError

昔の記憶をまとめて書くことで捨てるスレ


グループSNEプログラムのSyntax Error元ネタであることはWikipediaにもあるくらいに知られていて、

大昔のラジオのなんだったか、たぶん麗しの我が家亭かなんかだと思うのだが、グループSNEの人が出てて、由来を聞かれたとき

コンピュータ文法間違いのシンタックスエラーが元、どうしてSNになったのかはたぶん英語ができなかったかなんかだと思うんですが(笑)

みたいなことを言ってた記憶がある

…SNになったのは、Syntax ErrorをSN Errorと略すBASICがいくつかあるので、その略し方が元だと思うんだ

しろ聞いてた当時はSN Errorはえすえぬえらーで、Syntax Errorの略だと知らなかったくらいなのでよく覚えてる

覚えていても仕方ないので忘れることにしよう

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