アウトプット記録

いろんなことをアウトプットします

エクスポートしたはてなブックマークのフィードをCSVファイルに変換する

はじめに

はてなブックマークにおいて、特定の1年にブックマークした自分のブックマークを確認したかったのですが、マイページからはわかりにくかったため、Pythonの練習がてらブックマーク一覧をCSV形式に変換しました。

はてなブックマークの [マイページ > 設定 > データ管理] からブックマークのデータがエクスポートできます。出力可能な形式は

の3パターンです。中身を見てみたところ、Atomフィード形式が扱いやすそうだったので、そちらを利用することにしました。

入力データ

はてなブックマークからエクスポートできるAtomフィード形式のファイルは以下の形式です。どうやらxml形式として扱えそうです。(値は適宜置き換えています)

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
  <title>(はてなID)のブックマーク</title>
  <link type="text/html" rel="alternate" href="https://b.hatena.ne.jp/(はてなID)/bookmark"/>
  <link type="application/x.atom+xml" rel="service.post" title="(はてなID)のブックマーク" href="https://b.hatena.ne.jp/atom/post"/>
  <entry>
    <id>tag:hatena.ne.jp,2005:bookmark-(はてなID)-(数字列)</id>
    <title>(ページタイトル)</title>
    <link type="text/html" rel="related" href="(ページURL)"/>
    <link type="text/html" rel="alternate" href="(ブックマークURL)"/>
    <link type="application/x.atom+xml" rel="service.edit" title="(ページタイトル)" href="https://b.hatena.ne.jp/atom/edit/(数字列)"/>
    <summary>(コメント)</summary>
    <issued>(日時)</issued>
    <author>
      <name>(はてなID)</name>
    </author>
    <dc:subject>(タグ1)</dc:subject>
    <dc:subject>(タグ2)</dc:subject>
  </entry>
  <entry>
    ...
  </entry>
  ...
</feed>

方針

日付でブックマークをフィルタして確認することが目標です。出力結果には以下のものが含まれることにしました。

  • 通し番号
  • ブックマークしたページタイトル
  • ページのURL
  • 自分のコメント
  • ブックマークした日時
  • タグ

作成したコード

import bs4
import csv
from datetime import datetime


soup = bs4.BeautifulSoup(open('(bookmarks.atom)'), 'xml')
entry_list = []

header = ['index', 'title', 'URL', 'comment', 'time', 'tags']
entry_list.append(header)

entries = soup.find_all('entry')

for idx, entry in enumerate(entries):
    data = []
    index = str(idx)
    title = entry.find('title').text
    link = entry.find('link').get('href')
    summary = entry.find('summary').text
    issued = entry.find('issued').text

    time = datetime.strptime(issued, '%Y-%m-%dT%H:%M:%S%z')
    time = "{0:%Y-%m-%d %H:%M:%S}".format(time)

    tags = entry.find_all('dc:subject')
    tag_list = []
    for tag in tags:
        tag_list.append(tag.text)
    tag_data = ','.join(tag_list)

    data.append(index)
    data.append(title)
    data.append(link)
    data.append(summary)
    data.append(time)
    data.append(tag_data)

    entry_list.append(data)

with open('data.csv', 'w', encoding="utf_8_sig") as file:
    writer = csv.writer(file, lineterminator='\n')
    writer.writerows(entry_list)

出力結果

以下の出力結果が得られます。

index,title,URL,comment,time,tags
0,(ページタイトル),(ページURL),(コメント),(日時),"(タグ1),(タグ2)"
1,...
...

自分が欲しい情報のみを出力しているので、コードを変更すれば他の値も出力可能です。

感想

これまでコードを書いてこなかったので、意図する動きをするプログラムが書けて良かったです。 本当はもう少し解説?してqiitaに投稿しようと思っていましたが、力尽きたのでひとまずここで供養することにします。

『外資系コンサルが教える 読書を仕事につなげる技術』 感想

読みました

外資系コンサルが教える 読書を仕事につなげる技術

外資系コンサルが教える 読書を仕事につなげる技術

読むきっかけ

  • Kindle Unlimitedに入ってしまい(?)、良さそうだと思ったため
  • 本を読んでいるが、活用できていないのためそれの打開になればと

読む前の思い

  • 本を活用するやり方を知りたい

印象に残った内容5点

  1. ビジネス書の名著をしっかり読む、いわばビジネスパーソンとしての基礎体力をつけるための読書と、リベラルアーツ=教養に関する本を読む、いわばビジネスパーソンとしての個性を形成するための読書の2種類

  2. リベラルアーツを収めるための読むべきカテゴリー

    1. 哲学(近・現代思想
    2. 歴史(世界史・日本史)
    3. 心理学(認知・社会・教育)
    4. 医学・生理学・脳科学
    5. 工学(含コンピュータサイエンス
    6. 生物学
    7. 文化人類学
  3. リベラルアーツの読書を仕事の成果につなげるために、やらなければならないこと。それは「抽象化」(中略)抽象化とは、細かい要素を捨ててしまってミソを抜き出すこと、「要するに○○だ」とまとめてしまうこと。 モノゴトがどのように動いているか、その仕組み=基本的なメカニズムを抜き出すことです。経済学の世界ではこれを「モデル化する」と言います。

  4. 優先順位づけによる選抜です。アンダーラインの箇所がどんなに多かったとしても、イケスに放り込むのは基本的に5カ所、どんなに多くても9つまで。

  5. リベラルアーツに関連する読書において重要なのは、単に転記するだけではなく、必ずビジネスや実生活における「示唆」を書き出すということです。(中略)

    1. 面白かった箇所
    2. ビジネスや実生活に対する示唆
    3. 具体的なアクションの仮説

感想

本の読み方として2種類に分類し、何度も読むべき基礎体力をつける本と読書記録をつけて記録しておく教養の本、の考え方は新しくて参考になった。特に教養本の読み方は参考になった。

ちなみに基礎本はおすすめ曼荼羅があったので、そちら参考にしてみるのもいいかなと。ただ、経営やリーダーシップなど、いわゆるビジネスパーソン向け、と感じたので、エンジニア観点では全てが参考になるかというとウーン、という感じ。

全体をざっと読んで重要な部分を抜き出す、ことは抽象化の観点から見ても非常に重要だと思った。読書は投資活動であり、アイドルタイムをへらす工夫、つまらない本を読まないようにする工夫、選ばないようにする工夫も頷けるものだった。

またビジネスの進め方としても全体を掴んで、抽象化するやり方、は必要だと感じた。

積ん読が増えてしまって、アウトプットや読み方に迷っていたが、教養本のやり方は実践していきたい。ガツガツ線引いて選んでいく行為はなかなかあってそうだと感じた。(ただ、選ぶのはけっこう大変)

PyQやってみた

随分書いてなかったですが、今年はアウトプット頑張ろうと思うので、何でも書いていこうと思います。さて、昨年度末からつい最近までPythonの学習サービスPyQやってたので、その感想です。

PyQの詳細は省略させていただきます。以下の記事が参考になるかなと。

【もう挫折しない】Python学習サイトPyQが入門者におすすめな理由 | misclog(ミスクログ)

では、どうぞ。

総評

  • 手を動かして学習したいPython初心者にはかなりおすすめのサービス
  • やりたいときにやりたい場所でできるため、学習へのハードルが下がる
  • 値段から考えてもコンテンツは豊富であるが、月課金なので、短期集中をおすすめ

自分のスペック

やった時間、内容

やってみての感想

よかったところ

  • 学習に対するハードルの低さ
    • 進行状況はサービスで管理されているため、自宅のデスクトップ、出先のノートPCと端末を変えても実行できるため、学習までのハードルを下げることができます
    • PCさえあればできるので、ちょっと空き時間にやっとくか、ぐらいの気持ちで学習することができたのも継続につながったかなと
    • サイトが重いとかいうこともなく(機械学習の回答チェックだけ他のコースと比べて少し時間かかりますが)サクサクできることもよかったです
  • 環境構築が不要
    • Pythonの環境構築はもちろん、フレームワーク、Jupyterの構築は不要
    • PyQ上に構築してあるため、色々試してみることもできます
    • ここ変えたらどうなるんだろう?ということも試しやすい環境になっていたかなと
  • 演習に集中できる
    • 1点目と被る点もありますが、コンテンツがコースとしてまとまっているため、どう進めればいいんだろう、と迷うことなく、今日はこれ!とできました
    • 書いたコードのチェック→クリア→次ページ、と進む仕組みだが、コードのチェック、次ページに進行、にキーボードショートカットがあるのは非常に便利でした
      • 始めた当初はページ送りにキーボードショートカットなかったと記憶しているのですが、いつの間にか追加されていたのも好印象でした

気になったところ

  • 復習しにくい構成
    • あくまで自分で手を動かすことがメインになっているため、あの処理どうするんだっけ?あの仕組みってどうだっけ?といったことを振り返ることがやりづらいです
    • あくまでこのサービスはよくできた問題集の扱いで考えるといいのではないかと思いました
  • 継続すればするほどコスパ
    • PyQのサービス料(ライトプラン)は 3,040円/月 です
    • PyQのコンテンツとしてはPythonの基礎からWebアプリ、データ分析、機械学習、主要ライブラリ、などなど、と幅広く用意されています
    • 学習範囲を考えるとこの値段は破格です
    • ただし、月単位でかかってしまうので、3000円でこれだけはすごい、が12,000円で、となるとまた費用対効果はかわってくるのかなと
    • ですので、短期集中で一気にやってしまうのがオススメです

欲しい技術書まとめ

知人が技術書読んでて焦ったので読みたいやつをまとめた。 以前のセールでhonto使ったが、kindle Unlimitedも使っているので分散されるのを少々懸念している。むしろ分散化がよい、という見方もあるけど。。。どこで買うかなー。さすがに電子で買おうと思うが。

マインドセット

イシューからはじめよ――知的生産の「シンプルな本質」

イシューからはじめよ――知的生産の「シンプルな本質」

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

コンピュータのしくみ

コンピュータの構成と設計 第5版 上・下電子合本版

コンピュータの構成と設計 第5版 上・下電子合本版

Web系基礎

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

パケットキャプチャの教科書 (Informatics&IDEA)

パケットキャプチャの教科書 (Informatics&IDEA)

Python

スラスラわかるPython

スラスラわかるPython

スラスラ読める Pythonふりがなプログラミング (ふりがなプログラミングシリーズ)

スラスラ読める Pythonふりがなプログラミング (ふりがなプログラミングシリーズ)

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

コーディング

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

セキュリティ関連

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

サイバーセキュリティテスト完全ガイド ~Kali Linuxによるペネトレーションテスト~

サイバーセキュリティテスト完全ガイド ~Kali Linuxによるペネトレーションテスト~

暗号技術入門 第3版

暗号技術入門 第3版

暗号技術のすべて

暗号技術のすべて

現代暗号の誕生と発展

現代暗号の誕生と発展

ハッカーの学校

ハッカーの学校

暗号技術のすべて

暗号技術のすべて

資料作成

社内プレゼンの資料作成術

社内プレゼンの資料作成術

参考にした/なりそうなサイト

shinyorke.hatenablog.com www.shoeisha.co.jp

まず欲しいのはこのあたりかなぁ、、、

  • イシューからはじめよ――知的生産の「シンプルな本質」
  • エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする
  • スラスラわかるPython

ゼロ知識証明の記事について考えてみた

はてブ見てたらこんな記事があったので少し自分の考えを書いてみたいと思います。

 

note.mu

元記事はこちらです。

blog.goodaudience.com

 
コメントにあった例1,2だけ考えてみますね。

例1
アリスがボブにウォーリーを見せることで「アリスがパズルからウォーリーを見つけたこと」を証明しています。
ここでのポイントは
①アリスがボブに見せたウォーリーが本当にパズルのウォーリーなのか
②「見つけたこと」以外の情報は伝わっていないか
ということです。
それ踏まえると、以下のようだと理解しました。

証明1
アリスからはウォーリー以外の情報がないので、ボブとしてはこれが本当のウォーリーかどうか判断できません。
したがって、透かしを入れる例がありますが、これは例えばボブが渡す段階でウォーリーに名札でもつけておく、というのでもいいと思います。
アリスから届いたウォーリーが名札付きウォーリーなら他にも居ない、だから渡したパズルからとったのだろう、と検証できます。
そしてアリスからボブにはウォーリーしか伝わっていないので、パズルにおけるウォーリーの位置、は少なくともアリスからボブには伝わっていません。

証明2
(これがちょっとわからないのであくまで自分の理解、ということで了承ください)
パズルのサイズとは異なるカードボードを重ねて、ボブにウォーリーを見せたあとでカードボードを外せば元のパズルの上にカードボードがあった、ということを伝えられます。
そしてサイズが異なるカードボードを使うことで「パズルのウォーリーの位置」≠「カードボードのウォーリーの位置」となるため、「パズルのウォーリーの位置」は伝えずに済みます。
ただこれは外した段階でどこにいるかが伝わるんじゃないか、と思うので今ひとつピンときてないです。

 

 

例2
ボブがアリスに対してアリスがボールを入れ替えたかどうかを伝えることで「ボブは色が見えていること」を証明しています。
ここでボブはアリスに対して伝えていることは
 ・アリスがボールを入れ替えた
 ・アリスがボールを入れ替えていない
だけです。アリスが何色のボールを持っているかも、どの手にボールを持っているか、も伝えていません。誰かにこの情報の伝達をお願いしたとしても、何ら困ることはないのです。

 


暗号理論では「その暗号が安全である」ことを証明する事が必要で、ゼロ知識証明はその証明のための一つのテクニック(技術や手法、といってもいいかもしれません)、といえます。
(厳密に言えば、どんな仮定で、どんな根拠で、どれだけ安全か、ということもセットにしないといけません。)

仮想通貨はその話題性から色々話題になっていますが、その根本には暗号的な技術があるわけで、そういう意味では今後も目が離せない分野だと思っています。

勉強記録(2/14~2/18)

時間

先週はこれだけ、です。

f:id:ma110ry:20190218225045j:plain
勉強時間(190214-190217)

感想

  • セキュリティ以外のところはちんぷんかんぷんである
  • セキュリティはひとまず(午前の範囲は)大丈夫
  • 本文を読めば大丈夫なものは解説を読めば良いと思うが、さっぱりなものは確認が必要
  • 勉強するのは楽しい
  • 腰を据えてやれる体制を整えないと

課題

  1. 勉強時間があまり取れなかった
  2. どこまでやるか、の指針が立っていなかったので、焦りがなかった
  3. セキュリティ以外の分野の知識不足

要因と対策

  1. 要因:引っ越しに伴う荷造りで確保できなかった
    対策:引っ越しは完了したため、そのぶんは確保できる 行き帰りの電車が長くなったので、有効活用したい

  2. 要因:2月にやるべき作業量が見えていない
    対策:5~6年分の過去問を3週+わからない分野の調査(後述)

  3. 要因:単純に知識不足
    対策:わからない点は確認が必要 わからない部分をまとめて休日にググる?参考書を買って一周してみる?
    参考書を買うのはありだが、一周読むのは無駄が多い気もするが、、いずれにせよ確認にも使えて、いちいちググるよりは早いかも
    【購入候補】 

情報処理安全確保支援士試験受けます

タイトルのとおりです。 会社で自主学習をしなければいけない、的なものがあり、資格に受かればその勉強時間を充填できるというのもあって、いっちょやってみるか、と一念発起した次第です。 勉強法としてはこのページを参考にして lksdsw.hatenablog.com

  • 【2月】過去問道場
  • 【3月】(情報処理教科書)、重点対策、ポケスタ
  • 【4月】過去問

の流れを考えています。セキュリティ以外の実務経験がないので、午前Iの範囲でちと難しい範囲もありますが、わからないことがわかるようになるのはやはり楽しいもので、楽しんでやれればなという気持ちです。 頑張ります。