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

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

クロスアカウントS3の設定

AWS

クロスアカウントとは AWSのアカウントが別個に存在するということ。セキュリティ的に分けている方針もあれば、そもそも使用している会社組織が異なるために別のアカウントになっていることもあるでしょう。今回はこれでだいぶハマりました。 クロスアカウン…

AWS LambdaでLayer機能を使う

Layers AWSのドキュメント AWS Lambda レイヤー - AWS Lambda AWSのLayersを使うと、Pythonの依存ライブラリなどを設定し共通ライブラリとして使える。(AWS Lambdaのソースコード容量制限は厳しいので、これを使うのが正しいだろう) AWS Lambdaのデプロイ…

PySparkの実行でImportError: No module namedが出たとき

ImportError: No module named エラー EMRの実環境でPySparkでクエリやUDFを実行させていたら以下のようなエラーが発生した。 ImportError: No module named 'foo' どうやら各ノードにPythonのモジュールが分散されていない(?)ようだ。 対処 StackOverflo…

PySparkのハマり(メモ)

pipで取得したpysparkを起動させると、以下のようなエラーが出ることがある。 Sparkのバージョンは2.3.1。 (venv) C:\Users\hiroyuki.nagata\PycharmProjects\vjsk-etl-flow>pyspark Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.15…

Go言語で継承みたいなこと

Go

最近Go言語でつくるインタプリタを読んでいる。ほとんど趣味だが、lexer/parser(字句解析/構文解析)->ast化(抽象構文木)->eval(評価)までの流れを辿れるためとてもおもしろい。Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出版社/メーカー…

PySparkでいろいろ調査したのでメモ書き

PySparkにはいろいろなファイルロード/セーブ方法がある。 メモ ローカル環境でShift-JISファイルを読み込んでUTF-8で出力 順当にリストをparallelizeしてRDDからDataframe化 #!/usr/bin/env python # -*- coding: utf-8 -*- from pyspark.sql import SparkS…

Neo4jRBでグラフDBをRailsから使う

Neo4j単体でも面白いのだけど、結果を現実世界に出すにはWEB画面を作るのが楽。というわけでNeo4jRBに触れてみる。とりあえず環境構築のみ。 環境構築 とりあえずDebianで環境構築をやってみる neo4jの準備 各環境にあったパッケージリポジトリを使用しまし…

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 アル…