プログラミング

A collection of 50 posts
Oracle CloudのAlways FreeのArmは空いていないからAMDにしよう。

Oracle CloudのAlways FreeのArmは空いていないからAMDにしよう。

目次 * 1 Oracle Cloudってやばいよね * 2 でも、空いて無いよね * 3 AMDなら空いているよ * 4 終わり Oracle Cloudってやばいよね Oracle Cloudnの無料枠がやばい!って鯖缶(サーバー管理者)界隈で話題になっています。 端的に言いますと(22年2月時点) * AMDのCPUならE2.1.Microってやつをメモリ1GBで2つまで無料でVMインスタンス作っていいよ * ArmのCPUなら合計4OCPU、合計メモリ24GBまで無料で作っていいよ(1OCPUからVM作れるので最大でVM4つ作成可能) マイクロ・インスタンス(AMDプロセッサ):すべてのテナンシは、AMDプロセッサがあるVM.Standard.E2.1.Micro シェイプを使用して最大2つのAlways Free VMインスタンス or Ampere A1 Computeインスタンス(Armプロセッサ): すべてのテナンシは、Armプロセッサを含むVM.Standard.A1.Flexシェイプを使用するVMイン
4 min read
Misskeyインスタンスの主になってみました。

Misskeyインスタンスの主になってみました。

目次 * 1 はじめに * 2 Raspberry Pi 4B で運用しています * 3 個人的に詰まったところ * 3.1 ymlファイルのホスト名は後で変更しても一部変わらない * 3.2 ufwで設定したポートは同一ネットワークでも適応される←知らなかった… * 3.3 自宅サーバーとしての苦労 * 3.4 cloudflareとの戦い * 4 終わり はじめに この記事は実装方法ではありません!感想です! 世はメタバース(Metaverse)が流行ってるみたいですが、MisskeyはFediverseです。 いわゆる分散型SNSというもので、有名なところですとMastdonなどが挙げられます。 Misskeyはなんとsyuiloさんという日本の方が開発された分散型SNSです! しゅいろママに感謝ですね🙇🙇 この度、自宅サーバーにMisskeyインスタンスを実装しました。 これまではmisskey.ioを使っていたのですが、折角自分のサーバーあるし、インスタンス作っちゃおうという理由です。 私
3 min read
なんちゃって自宅サーバー竣工式

なんちゃって自宅サーバー竣工式

自宅サーバーと言ってもRaspberry Pi4で動かす自宅サーバーです。ご了承を。 目次 * 1 竣工式の様子 * 2 構築の様子 * 2.1 運用1週間を終えて * 3 想い 竣工式の様子 会場 購入から1年余、やっと我が家のRaspberry Piが日の目を見れますね。 本来であれば華やかなRaspberry Pi OSのデスクトップをご覧に入れるべきところですが、予算不足でキーボードとマウスはメインPCと共用です。差し替えが面倒なため、SSHで行います。 さようなら、GUI。 では、開式の辞。 定番のslコマンドを…… おっと、失礼しました。lsですね。 では、式典ですので、お菓子に紅白饅頭を…… 手が滑って「ひとくちさくら切餅」になっちゃいました。 このくらいは許容範囲です。 後は、メモリの確認。htopを使います。 RAMの余裕は心の余裕とよく言いますが、まさにそのとおりです。スワップ0ですよ!
5 min read
基本情報技術者試験に合格しました!

基本情報技術者試験に合格しました!

目次 * 1 試験の内容を話すことができない…… * 2 国家資格に合格するということ * 2.1 立派な賞状を貰えます * 2.2 官報にも載ります 試験の内容を話すことができない…… 基本情報技術者試験はCBT方式になってから試験問題が非公開となってしまいました。 それに合わせて受験者が問題内容について発言することも禁止されています。 なので、何も言えません!!!! 国家資格に合格するということ 立派な賞状を貰えます 官報にも載ります ただし番号のみですがね。 とはいえ、日本国の機関紙に載れたことは光栄極まりないです。
1 min read
サーバーで、chrome以外で、webページのスクショを撮る

サーバーで、chrome以外で、webページのスクショを撮る

Chrome重すぎ!!! 目次 * 1 事の発端 * 2 Google Chrome --headless メモリ不足 * 3 諦め、そして希望の光「pageres」 * 4 後日訂正 * 5 おまけ 事の発端 VPSを契約して運用してるのですが、安いプランのためメモリ1GBしかないんですよね。だからメモリを節約してほそぼそと暮らす必要があります。 そんな中、マイコンでwebページのスクリーンショットを表示したいということになりまして、調べたところGoogle chromeのheadlessモード(コマンドで実行できるchrome的なもの)を使うとwebページのスクリーンショットが撮れると書いてあり、やってみました。 Google Chrome --headless メモリ不足 cronで毎時特定の時刻にchromeのheadlessモードでwebサイトのスクショを撮っていたわけなのですが、その時刻になると運用してるwebサイトすべてが重くなるという超絶厄介者でした。これは困ったものです。 あれ、サイトが重いな
2 min read
自然言語処理のDLの手法が色々ありすぎるのでちょっとだけまとめる【備忘録】

自然言語処理のDLの手法が色々ありすぎるのでちょっとだけまとめる【備忘録】

日付順です。自分は素人なので、とりあえず聞いたことあるよってやつだけ。 正確さは無視してます!!あくまで自分の備忘録なので、鵜呑みにしないでください!!! 「AIcia Solid Project」さんのチャンネルをめちゃくちゃ参考にしました。 https://www.youtube.com/channel/UC2lJYodMaAfFeFQrGUwhlaQ 目次 * 1 word2vec * 2 Transformer * 3 ELMo (Embeddings from Language Models) * 4 GPT(Generative Pre-trained Transformer) * 5 BERT(Bidirectional Encoder Representations from Transformer) * 6 GPT-2 * 7 GPT-3 * 8 終わり word2vec 論文:Efficient Estimation of
5 min read
ATOM Matrixのドライバーが壊れてる!!

ATOM Matrixのドライバーが壊れてる!!

M5Stack社のATOM Matrixを購入したのですが、動かないんです。 目次 * 1 結論 * 1.1 FTDI driverのインストールが必要! * 1.2 ATOM Matrixのドキュメントにも書いてあった。 * 1.3 一番の盲点は同じM5シリーズでも一部はドライバー違うということ 結論 下記の通り書かれていますが、ドライバーのインストール、しかもM5Stackシリーズとは違うドライバが必要みたいでした。 Note: M5StickC /M5StickC PLUS / M5StickT / ATOM Matrix / ATOM Lite support can be used without driver, users can skip this driver installation step. UnitV/M5StickV/M5StickC/ATOM may not work
1 min read
さくらVPSのKusanagiでLaravelアプリを公開する手順【備忘録】

さくらVPSのKusanagiでLaravelアプリを公開する手順【備忘録】

目次 * 1 前提条件 * 2 プロビジョニングする * 3 コードをサーバーに送り込んで設定する * 3.1 git cloneとDocumentRoot削除 * 3.2 .env作成 * 3.3 権限周り * 3.4 composer installする * 3.5 keyの生成 * 3.6 マイグレーションする * 4 Nginxの設定を書き換える * 5 Let's encrypt のrootも変える * 6 再起動 * 7 コードを更新した時(GitHub) 前提条件 実行日:2021年6月 環境:kusanagi(最新),Nginx,さくらVPS Laravel:8.
2 min read
マルコフ連鎖モンテカルロ法周りを理解したい【備忘録】

マルコフ連鎖モンテカルロ法周りを理解したい【備忘録】

マルコフ連鎖モンテカルロ法,通称MCMCが授業で出てきました。なんかすごそうなんだけど、イマイチ分からない… 目次 * 1 そもそもベイズ推定 * 1.1 度数分布から理論分布へ * 1.2 理論分布 * 1.2.1 正規分布 * 1.2.2 一様分布 * 1.3 データだけでなく、母数も分布するという考え * 1.4 ベイズの定理 * 2 マルコフ連鎖モンテカルロ法(MCMC法) * 2.1 マルコフ連鎖 * 2.2 モンテカルロ法 * 3 事後分布の要約 * 3.1 点推定 * 3.1.1 平均値「EAP推定量」 * 3.2 区間推定
5 min read
Reactの用語が毎度こんがらがる【備忘録】

Reactの用語が毎度こんがらがる【備忘録】

Reactって難しくないですか…… 目次 * 1 DOM * 1.1 エレメント * 1.2 ノード * 2 関数コンポーネント * 2.1 属性・Props * 3 クラスコンポーネント * 3.1 renderメソッド * 3.2 constructorメソッド * 3.3 属性・Props * 3.4 子エレメント * 4 クラスで使う値の保管 * 4.1 プロパティ * 4.2 属性・Props * 4.3 ステート * 5 ステート * 5.1 値の設定と呼び出し * 5.2
3 min read
セキュリティ週間7日目【備忘録】5/23

セキュリティ週間7日目【備忘録】5/23

目次 * 1 ひとこと感想 * 2 今日学んだこと * 2.1 ディレクトリ・トラバーサル * 2.2 ディレクトリ・リスティング * 2.3 OSコマンド・インジェクション ひとこと感想 1週間経ちました。 今日学んだこと ディレクトリ・トラバーサル 意図しないファイルを操作される脆弱性。ファイル名を変数で指定とかするタイプで起こる。 他にもエンコードの違いでtxtを読み込ませるとしつつphpを読み込ませるなんていうんルバイトの方法もある 例えば…/etcの中を操作されたり。←「../」を使われる。 →ファイル名を指定できないようにする!!!!ex番号、固定、など →ディレクトリは除外!(「../」とか。 ディレクトリ・リスティング PHPとかでファイルの一覧でてくるやつ。単純だが、かつての情報漏洩はこのパターンが多かったらしい。 →秘密なデータは公開ディレクトリに置かない! OSコマンド・インジェクション プログラミング言語の多く→OSコマンドを呼び
1 min read
Drupal9で繰り返しフィールド(The Repeater Field)を使う!

Drupal9で繰り返しフィールド(The Repeater Field)を使う!

WordPressのACFで作るタクソノミーのようなものがDrupalには標準でついています。 しかし! WordPresのACFで使われる繰り返しフィールド(The Repeater Field)が見当たらないんです!! ずっと見つからず苦戦していたのですが、遂に方法を見つけましたのでご紹介します!!!! 目次 * 1 解決策 * 1.1 Paragraphsモジュール+デフォルトの機能を使う * 1.1.1 インストール * 1.1.2 Paragraph typeの作成 * 1.1.3 繰り返しフィールドの作成 * 1.1.4 コンテンツの作成ページに行く * 2 参考までに * 2.1 単一の種類(画像だけとか)の繰り返しフィールドはデフォルトでできる * 2.1.1 例:画像の繰り返しフィールド的なもの * 2.2 繰り返しフィールドができるモジュール→見つからない * 2.
3 min read
セキュリティ週間6日目【備忘録】5/22

セキュリティ週間6日目【備忘録】5/22

目次 * 1 ひとこと感想 * 2 今日学んだこと * 2.1 クッキーの使い所 * 2.2 クッキーのセキュア属性 * 2.3 メールヘッダ・インジェクション ひとこと感想 今日学んだこと クッキーの使い所 クッキーは書き換えられる! IDとか入れちゃダメ。 通常はセッション変数を。 クッキーはサーバーをまたがったり、セッションを超えて使う必要があるときのみ使う!ex:ログインしたままにするとか クッキーのセキュア属性 Secure属性つけることで盗聴を防ぐ。←HTTPとS混在だと事故る できるだけSecure属性つける!! そのためにサイト全体をHTTPSにする! HTTP含んでしまうサイトはトークンで対策! メールヘッダ・インジェクション HTTPヘッダのときと同じで、改行によって起こるやつ。 正規のメールアドレスから、ウイルス添付のメールや、文章宛先が改変されたものが迷惑メールに引っかからず送れてしまう。 →これもメール機構を自作するんじゃなくて、ライブラ
1 min read
セキュリティ週間5日目【備忘録】5/21

セキュリティ週間5日目【備忘録】5/21

目次 * 1 ひとこと感想 * 2 今日学んだこと * 2.1 オープンリダイレクト(リダイレクト処理での脆弱性) * 2.2 HTTPヘッダ・インジェクション ひとこと感想 今日学んだこと オープンリダイレクト(リダイレクト処理での脆弱性) 任意のドメインにリダイレクトできる脆弱性のこと。 ログインの遷移で別サイトを経由してログインとかされると気づかない。 URLに含ませるのが問題あり→番号にしたり、パラーメータで渡さず固定したり、リダイレクト先のドメインチェックしたりで防止できる! 「外部のページ開きます」的なクッションページが存在するのはそのためなんですね。 HTTPヘッダ・インジェクション レスポンスヘッダで改行を許容していると起こる。HTTPヘッダを自分で作らないほうがいい! 改行コードの解釈でHTTPヘッダの情報を上書き(厳密には複数あったら下の方を読む性質を利用)できる クッキー作ったり、JS作ったり、リダイレクトしたりできる 外部からのパラメータをHTTPレスポンスヘッダで出
1 min read
セキュリティ週間4日目【備忘録】5/20

セキュリティ週間4日目【備忘録】5/20

目次 * 1 ひとこと感想 * 2 今日学んだこと * 2.1 クリックジャッキング * 2.2 セッションハイジャック・固定化 ひとこと感想 メールのリンク開くだけなら大丈夫でしょ。とか甘い認識でいました。アクセスするだけで色々情報抜かれる可能性もあることを知りました。 今日学んだこと クリックジャッキング CSRFに似てる。irfameとかcss使ったり、偽のボタンを利用者に押させるやつ。 これで掲示板に問題ある書き込みを他者にさせることができるというもの。Twitterなどは対策されている。 よく考えられているなと…もはや感服する世界です…… そしてこれはバグとかではないので、全てのサイトに当てはまります。 →対策は「X-Frame-Options」! セッションハイジャック・固定化 セッション成りすましされてもパスワードはわからない→重要なページはパスワード要求する方式はそのため!(←GitHubとかでもあるやつ!) 推測されにくいセッション作るために言語に頼る!自分で作らない!
1 min read
セキュリティ週間3日目【備忘録】5/19

セキュリティ週間3日目【備忘録】5/19

目次 * 1 一言感想 * 2 今日学んだこと * 2.1 1.CSRF(クロスサイトリクエストフォージェリ) 一言感想 フレームワークでやったこととセキュリティの知識が結びつきました。 今日学んだこと 1.CSRF(クロスサイトリクエストフォージェリ) Laravelのbladeだと@csrfするやつですね。 手法としてはXSSとすごく似てる気がします。 怪しいサイトにはアクセスしないが鉄則ですね…どこにiframeが仕込まれているか、気が抜けません… フォームのhiddenやセッションだけじゃなくて、画像アップロードの箇所からでも仕組まれる可能性あり。 なにより、利用者側が踏み台にされて、その人のIPとしてログが残るのが厄介ですね…実際にIPアドレスで誤認逮捕があったみたいです。 対策必要なのは一部のページでいい。他のサイトから実行されちゃダメなところのみ。(最後の購入とか…) →本物のサイトでトークンとか要求する←LaravelBladeの@csrfはこれだったのか……!
1 min read
GUIでGit+GitHub触るための環境構築

GUIでGit+GitHub触るための環境構築

目次 * 1 事前環境 * 2 GitHubアカウントの作成 * 3 GitHubDesktopのダウンロード * 4 Gitが使える環境を整備 * 5 VSCodeにGithubの拡張機能をインストール * 5.1 Git History * 5.2 GitLens * 5.3 Git Graph 事前環境 下記の環境を前提に進めていきます。 とりあえずHTML&CSS&JSを触るための環境構築 GitHubアカウントの作成 https://github.co.jp/ こちらからアクセスしまして、サインアップを押します。 ここからは基本的に全て英語です。 ページの指示に従ってアカウントを作成してください。 GitHubDesktopのダウンロード GitHubをGUIに操作するためのソフトウェアです。本来ならgit pullとかコマンド操作しなきゃいけないんですが、それをせずにgitを扱うことができます。 https:/
3 min read

セキュリティ週間2日目【備忘録】5/18

目次 * 1 ひとこと感想 * 2 ワクチン予約サイトの一件 * 3 今日学んだこと * 3.1 1.XSS応用 * 3.2 2.SQLインジェクション ひとこと感想 本業(大学とバイト)であまり時間を取れませんでした。とにかく続けることを目標にします。 ワクチン予約サイトの一件 Torでアクセスできるとか、SQLインジェクションできるとか、世間を騒がせています。セキュリティの知識って大事だなと改めて気付かされました。 予約サイトのフロント、この時代にBootstrap3で他style=で直書きもなかなかインパクトありましたが、あまり話題にはなっていません。 今日学んだこと 1.XSS応用 JSのエスケープルールは難しい!→脆弱性温床 JSの動的生成を避ける!→別のところで値生成して、JSで参照するとか、インラインJSONPで渡すとか 2.SQLインジェクション 狙ったかのようにホットなタイミング。 激ヤバな脆弱性。すべての情報抜かれる。 SQLの
1 min read
セキュリティ週間1日目【備忘録】5/17

セキュリティ週間1日目【備忘録】5/17

セキュリティ週間1日目! 目次 * 1 ひとこと感想 * 2 今日学んだこと * 2.1 1.バリデーションの重要性 * 2.2 2.XSS(クロスサイトスクリプティング) * 3 セキュリティ週間前に学んだこと * 3.1 1.フォームの書き換え * 3.2 2.クッキーの問題 * 3.3 3.JSのセキュリティ * 3.4 4.CORS ひとこと感想 思った以上に身近に脆弱性が潜んでいることを知りました。 今日学んだこと 1.バリデーションの重要性 SQLインジェクションみたいなやつとか、内部で意図せぬスクリプトを実行される →特殊な記号を許可しなかったりすることが大事!つまりはバリデーション大事! 2.XSS(クロスサイトスクリプティング) 動的にHTMLとか生成するときにコードミスってて起きるやつ。 irame+JSだけじゃなくてform改変もできて、それが公式のサイトURLで実行される脅威。 エスケープ処理で対応。
1 min read
今週をセキュリティ週間にします!

今週をセキュリティ週間にします!

5/17~5/23を勝手にセキュリティ週間にして、趣味で勉強する内容をセキュリティ特化にすることに決めました。 目次 * 1 経緯・目的 * 1.1 技術面 * 1.2 生活面 * 2 参考図書? * 2.1 【メイン】体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践 * 2.2 【おまけ】王様達のヴァイキング 経緯・目的 技術面 最近自身のサーバーでセキュリティホールを突かれてマルウェアを入れられてしまいました。原因はLaravelの脆弱性で、適切に管理しておけば防げる問題でした。今は趣味なので誰にも迷惑かけない事故だったのですが、これからを考えるとこれは間違いなく重大事件だし、見過ごしてはいけないと感じます。ハインリッヒの法則ってやつです。 フレームワークにセキュリティを任せておけば大概うまくいってしまう世界に甘えてしまった自分を戒めるためにも、そして教養としても必要だと感じてセキュリティに重点を置くことに決めました。 生活面
2 min read
とりあえずHTML&CSS&JSを触るための環境構築

とりあえずHTML&CSS&JSを触るための環境構築

とりあえずHTML,CSS,JSをはじめて触るための環境構築です。 この環境構築だけではPHPやNodeは動きません!! ブラウザ、デザインツール、コードエディタ(ちょっとだけ拡張機能)で行きます。 目次 * 1 【ブラウザ】GoogleChromeのダウンロード・インストール * 2 【デザインツール】Figmaのアカウント作成 * 3 【コードエディタ】VSCodeのダウンロード * 4 VSCodeのインストール * 5 VScode拡張機能の導入 * 5.1 日本語にする「Japanese Language Pack for Visual Studio Code」 * 5.2 全角スペースを可視化する「EvilInspector」 * 5.3 終わりのタグを付けてくれる「Auto Close Tag」 * 5.4 保存と同時に反映してくれる「Live Server」 * 6
4 min read

Pythonで自分の日記を分析した話!

大学の講義で「実践データサイエンス」という講義がありまして、Pythonでのデータ解析を学びました。 その最終課題が「学習したことを用いて自由に行っていい」とのことだったので、自分の日記を分析することにしました。 べらぼうに長いので、詳しいことは良いから結果だけ見たい方は目次の「分析結果」まで飛ばしちゃってください! 目次 * 1 背景と動機 * 2 実施方法 * 2.1 テキストデータ(日記)の下処理 * 2.2 文字数解析 * 2.3 テキストマイニング * 2.3.1 形態素解析 * 2.3.2 文章の自動生成 * 2.3.3 WordCloud * 2.3.4 感情の変化と分析 * 2.4 データ * 2.4.1
28 min read
M5Paperで作った卓上カレンダー的なもの。

M5Paperで作った卓上カレンダー的なもの。

M5Paperという電子ペーパー付きマイコンを購入しました。 目次 * 1 そこで… * 2 ちょっとした紹介 そこで… 作りました!!! ↓全体像はこんな感じです。↓ ちょっとした紹介 C系の言語で画面描画する力を持ち合わせていなかったので、サーバー上でwebページを画像化したものを取得して表示するロジックになってます。なのでほぼHTML&CSS&JS&PHPで描画してます! 1時間に1度の描画更新時以外はディープスリープさせることで数ヶ月に1度の充電で良いんです。電子ペーパーは画面書き換えにしか電池消費しないので、とても省エネなディスプレイです。 Alexaをトリガーとして記録している起床・就寝時間のグラフ表示機能、我ながら上出来ではないでしょうか……
1 min read
Python+seleniumで大学生活をより良くしました。

Python+seleniumで大学生活をより良くしました。

オンライン授業下の大学生は言うまでもなくネットが重要となるわけです。 とりわけ重要なのは大学からの情報をちゃんと入手することです。でもこれはかなり手間のかかることです。 弊大学の場合 ログイン不要系 * 大学公式サイト * 学部公式サイト * 生協公式サイト ログイン必要系 * 教務ポータル * 学部が使う授業情報サイト * オンライン授業で使うサイト * 大学提供のメールサイト を毎日巡回しなければなりません。こうなっては朝ごはんどころではありません。 教務ポータルに関しては3回ログインしないといけません。いくら自動パスワード入力がブラウザについていてもこれは面倒です。 目次 * 1 ログイン不要系の場合 * 2 ログイン必要系の場合 * 3 終わり ログイン不要系の場合 これはRSSフィードで解決です。 RSSフィードが存在しないものはFeed43というツールでRSSフィードを生成できるようになります。 それをSlackやFeedlyで取得することで
1 min read