なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Neo4jでJOINクエリ

Neo4jでJOINクエリ 課題・やりたいこと 課題 やってること なぜ、SQLでJOINしまくる羽目になるのか? やりたいこと 実践 概要と手順 データ設計の見直し 使ったクエリ プラットフォームの選択 Neo4jのコンフィグまわり WSLの環境へヘッダありCSVを読み込む例…

Neo4jでグラフアルゴリズム

前から調べようと思っていたNeo4jの勉強会に行ってきた。 jp-neo4j-usersgroup.connpass.com グラフアルゴリズム AOJ - 深さ優先探索 データセットの用意 ビジュアライズ アルゴリズム実装 グラフアルゴリズム とりあえず深さ優先探索、幅優先探索、ダイクス…

SoundHound Inc. Programming Contest 2018 - (Ordinary Beauty) 再考

問題 考えたこと 方針 期待値の線形性を利用して数列の美しさの算出を分解する 例 問題 d = 0の場合と d != 0の場合で場合分けする 解答コード 問題は単純なのだが、解法が全然思いつかず。 問題 C - Ordinary Beauty N, M, D が与えられるとき 1 ~ N まで…

AWS GlueでSparkのDataframeを使う

AWS GlueでSparkのDataframeを使う Glue上のクラス構造 DynamicFrameからDataFrameへの変換 DataFrameからDynamicFrameへの変換 DataFrameを使った処理など 連番作成 カラムの追加、リネーム AWS GlueでSparkのDataframeを使う Glue上のクラス構造 docs.aws.…

AtCoder - AtCoder Beginner Contest 066 (11) を解いてみた

組み合わせ 組み合わせを階乗の式で表す 組み合わせの式 ABC 066 (11) 、解説の解説 問題の考察ヒント 考察 簡単な例 重複を取り除くパターン ABC 040 D問題に使われるアルゴリズム要素は組み合わせ、繰り返し2乗法、階乗のmod逆元、(+累積和的な処理?)…

AWS Glue上でboto3を使ってみる

現象 AWS Glue上でboto3を呼ぼうとしたのですが、あるはずのメソッドを呼ぶとエラーで落ちた。 対策 ここを読みましたLambda pythonから S3 にアクセスできない? 試しに、Lambda Functionパッケージ内から boto3とbotocoreを 削除する。削除した状態で Lmab…

Clojure小ネタ

Clojure小ネタ Clojureのテストはrepl.itというサイトでWEB上で試せる repl.it - Online REPL, Compiler & IDE ハッシュマップの型 {:key "value"} のような形のハッシュマップは、内部ではPersistentHashMapやPersistentArrayMap, PersistentTreeMapのよう…

ClojureでJavaの無名クラス実装

nantonaku-shiawase.hatenablog.com以前JavaのApache POIでCellWalkContextの実装を作ったのだが、これをClojureでやる場合はproxyを使うのがよい。 Java実装 CellWalk cw = new CellWalk(sheet, range); cw.traverse(new CellHandler() { @Override public …

Hanami + Vue.jsでTODOアプリを作った

REST APIで動くSPAを作ってみたかったので、TODOアプリ*1を作った。まずはバックエンドとフロントエンドの分離を目指したかった。構成はこんな感じ: バックエンド:Hanami フロントエンド:Vue.js with webpack vue-hanami-todo.herokuapp.com 資料 やった…

Apache POIで指定した範囲を空白にする

設定されているExcel式を全消ししたかったので… Apache POIで指定した範囲を空白にする 動作環境 コード片 それよりGoogle Spreadsheetがよさそうですよ 課題 解決策? Apache POIで指定した範囲を空白にする 動作環境 Apache POI 3.17 commons-lang3 3.6 Ma…

Jettyが週1、2で停止する場合はtmpwatchを疑うべきかも

現象 解析 参考 概要 解決策 現象 週1or2でJettyが内部エラー起こしてリクエストに404エラーを返す エラー発生は決まって週末の同じ時間 解析 参考 warファイルからお手軽起動したGitBucketの画像やCSSがなくなる | 眠るシーラカンスと水底のプログラマー …

新卒採用のシューカツが無くなればいいなという話

最近Offerboxというサービスを知った。 OfferBox(オファーボックス) | オファーが届く逆求人型就活サイト このサービスにプロフィールを登録しておけば、企業側からお声がかかるらしい。IT系の転職サイトだとその機能は珍しくないのだが、これが面白いのは新…

Debianで起動時にちゃんとディスプレイマネージャを出す

ここ3,4ヶ月ぐらい、自宅PCの起動にlightdm(ディスプレイマネージャ)直打ちを使っていた。よくそんなので運用できたな。 起こっていたこと Debian起動時に自動でGUIのログイン画面が出ない(=ディスプレイマネージャ) 仕方ないのでXがない状態でroot…

EC2上でJettyにJMXを設定してjconsoleでメモリ使用量を確認する

JMX 仕事でアプリサーバの監視をする必要が出てきたので、Jettyにjmxを設定してみた。JMXとは Java Management Extensions - Wikipedia の略らしい。以下のサイトを参考にしました。 d.hatena.ne.jp ameblo.jp ハマりどころ RMI Serverが利用するポートの開…

RSpecでファイル読み書きテストをやる

Rubyには Tempfile というクラスがあるので、それを使えばOK Ruby 2.4で試してます File.read するときはエンコード指定したほうがよいかも class Tempfile (Ruby 2.5.0) RSpec.describe ModuleXXX do before(:all) do @module = ModuleXXX.new end context …

Ansibleでgit cloneしてアーカイブをサーバにデプロイ

Ansible + Git 久しぶりにAnsibleを使ったqiita.com本当は上の記事のように、「ssh-add」してからのSSHフォワーディングをやりたかったのだが、謎のエラーで進めなくなったのでもっと原始的な方法で用を済ませた。 Ansibleのスクリプトサンプル 要は、local_…

ゼロから始める動的計画法 - コイン問題

問題設定 Project Euler Problem 31 考察 動的計画法による解答 問題を簡単にする なぜ動的計画法か? まずは2次元配列で Rubyのコードに落とし込む プロジェクトオイラー用に微調整 問題設定 Project Euler Problem 31 ターゲットとする問題は以下 Project…

競プロ始めた - アドカレ用

競プロ始めた この記事は Competitive Programming Advent Calendar 2017 - Adventar のために書かれました。 競プロ始めた 競プロやろうと思った動機 AtCoderの感触 最初3ヶ月ぐらいの体感 最初3ヶ月ぐらいの気づき 後半3ヶ月ぐらいの体感 後半3ヶ月ぐ…

アルゴリズムまとまってるサイト

メモ用、他にあれば追記する ポータルサイト 英語読めれば大抵の典型問題に関する示唆が得られる 数学問題に対抗するために 大学の授業シラバス系 個人サイト ポータルサイト 英語読めれば大抵の典型問題に関する示唆が得られる www.geeksforgeeks.orgwww.cs…

AtCoder - AtCoder Beginner Contest 040 (道路の老朽化対策について) を解いてみた

アルゴリズム 経路圧縮 rankによる木のマージ処理 ABC 040 D問題に使われるアルゴリズム要素はUnion-Findです。Union-Find自体は前回ブログ記事にしていたのですが…これだけでは足りませんでした。ACするためには経路圧縮とrankによる木のマージ処理が必要で…

Instaparseでパーサジェネレータ

Instaparseの位置づけ InstaparseはClojure言語による パーサジェネレータ - Wikipedia であるgithub.comこれのルール記述はBNFの拡張であるEBNFが使われている。 EBNFで構造化言語のルールを記述する さっそくだが、「<p>sample</p>」を読み取るBNFのル…

パーサジェネレータについて調べた

パーサジェネレータの位置づけ パーサ(=構文解析器) パーサジェネレータの利点 パーサジェネレータの実装の種類 パーサジェネレータの位置づけ 少しだけパーサジェネレータについて書く。パーサジェネレータとはパーサを生成できるソフトウェアのことであ…

AtCoder - AtCoder Beginner Contest 012 (バスと避けられない運命) を解いてみた

前回の競プロ! 解法 Rubyによる解答 TLE D言語による解答 AC! 前回の競プロ! ダイクストラ法を学んでようやくスタート地点に立てました。ダイクストラ法については以下のエントリを参照。nantonaku-shiawase.hatenablog.com 解法 Rubyによる解答 TLE アル…

AOJ - ALDS1_12_B (ダイクストラ法) を解いてみた

問題設定 最短経路問題の分類とアルゴリズムの使いどころ グラフをGraphvizでビジュアル化する アルゴリズム 疑似コード 自分の解答 AOJ - ALDS1_12は、重み付きのグラフアルゴリズムです。最短経路 ダイクストラ法 | アルゴリズムとデータ構造 | Aizu Onlin…

AOJ - ALDS1_12_A (プリム法) を解いてみた

問題設定 グラフをGraphvizでビジュアル化する アルゴリズム 疑似コード 自分の解答 コードの工夫など AOJ - ALDS1_12は、重み付きのグラフアルゴリズムです。最小全域木| アルゴリズムとデータ構造 | Aizu Online Judge 問題設定 最小全域木というのは、 重…

AOJ - ALDS1_11_A,B,C (グラフアルゴリズム) を解いてみた

ALDS1_11_A (隣接行列) 自分の解答 ALDS1_11_B (深さ優先探索) アルゴリズム 自分の解答 ALDS1_11_C (幅優先探索) アルゴリズム 自分の解答 AOJ - ALDS1_11は、グラフアルゴリズムです。グラフの表現 | アルゴリズムとデータ構造 | Aizu Online Judge 深さ優…

mavenで本番用/開発用のwarファイル切り替え

成果物の設定情報切り替え ユースケース 実際に使われる環境変数 他のフレームワークでの方法 mavenで本番用/開発用のwarファイル切り替え profile maven resources plugin 環境ごとの切り替えの実装 プロパティファイルの値の置き換え プロパティの置き換え…

Bitnami版Jenkinsとコンソール出力の自動更新

Bitnami JenkinsAWS上で使用するJenkinsにBitnamiが提供しているUbuntuのイメージを使っているのですがbitnami.comどうもこれが原因でビルド結果の自動更新がうまく動いてなかったらしい。 対象チケット [JENKINS-25026] Console output stops populating af…

AOJ - DPL_1 D (最長増加部分列) を解いてみた

最長増加部分列の基本 問題設定 アルゴリズム 線形探索版のプログラム - O(N^2) 二分探索版のプログラム - O(N log N) サンプルプログラム 線形探索版のプログラム - O(N^2) 二分探索版のプログラム - O(N log N) AOJ - DPL_1 Dは、最長増加部分列(Longest I…

JRubyに挑戦2

REST APIを作ってみる 作りたいもの Hanami - ドキュメント 新規アプリの追加 新規Action/Viewの追加 新規Entity/Repositoryの追加 モデルは単数形になることに注意 employeeのDBのテーブルを作成 JSONを返す部分を追記 hanami-modelについての見解 もとの記…