- kaakaa/ppt-museum: ppt/pptx file uploader
- 動作環境は作れませんでした…
- AWS ECS使えばAWS上でdocker-compose動かせそうだけど、間に合わなかった
- ECS CLIを使ってDocker Composeのファイルを使ってECSにデプロイする - Qiita
- PPTGalleryの再発明
- パワポ資料のアップローダー
- Web上でスライド資料を見ることができる
-
添付資料をダウンロードしてファイルを開くのが手間
- 資料が閲覧されない機会損失
- 参照されない資料作成へのモチベーション低下
-
PPTGalleryの問題点
- LibbrrOffice, ImageMagick, GhostScriptなどの重目のミドル依存により環境構築が辛い
- 稚拙なRuby, jsコードが辛い
- 環境作りやすく
- Docker-composeを使用
- PDFビューワーは azu/pdf.js-controller: Provide presentation interface using pdf.js
- 慣れた言語で
- Java / spark / jade4j
- なしこぎさんが楽しそうだったので
- コンテナ作って壊してが高速なので、マジ便利
- 普通に開発のDBサーバとかで使っても良いと思う
- docker-compose.ymlも直感的で書きやすい
ENTRYPOINT
/COMMAND
辺りはちょっと難しかった
-
ppt/pptx -> pdf 変換用
-
sofficeはOpenOfficeとかLibreOfficeをインストールすると入るlinuxでのofficeツール管理プロセス?
-
--accept="socket,port=8100;urp;"
オプションを付けて起動すると、UNO(Universal Network Objects) Remote Protocolで通信できるようになる- OpenOfficeのSDKを使うと、URP通信使ったプログラムが組めるようになるらしいけど、情報少なめで結構辛そう
- OpenOffice UNO | hiro345
-
JODConverterはurp経由でドキュメントの変換をしてくれるJavaツール
- python版のPyODConverterもある
-
JODConverter2系ならスタンドアロンのWebアプリもあるので、今回はそれを使っている
-
sofficeとjodconverterのコンテナを分けたかったけど、sofficeで開放したportがホストから接続できなかったので、soffice起動時になんか設定が必要なのかも
- JODConverterのDockerイメージが無かったのでおいておきました
- Sinatra/haml文化が染み付いてるのでSpark/jade4j (分散処理の方では無い)
- ハマった記憶もないけど、jadeでどうしても納得できないことが…
each w,i in whiskeys
if i % 3 == 0
.row
.col-md-4 #{w}
- SwaggerでAPIドキュメント生成してみたいので、Jerseyで書きなおすのもアリ
- DB周り何使おうかだいぶ悩んだ
- 最初はDockerHubでダウンロード数がそこそこ高かったRethinkDB使おうとしたけど、ORM(ODM)なくて面倒だったので、Monogにシフト
- 今後のcontributeを考えて国産のDoma(MySQL or Postgresも考えたけど、SQL書けねぇwww
- Morphia使うとMongoにpackage名含めたclass名まで含まれるので、リファクタリングすると大惨事の危険ががが
- 回避するオプションとかありそうな気もするけど…
- あらかたDB構造決まったらMySQLとかに移行したほうが良いのかなぁ…
- DB設計してくれる人募集
- 必要無かったけど、負荷分散とかこうやんのかなー?と思いつつ、サムネイル配信用として実験
- => DB複数使うとトランザクションがメンドイので排除しました
- PDFファイルから1ページ目をサムネ化するために使用
- 1.x系だと日本語が文字化け…。2系にしたら直りました。
-
azu/pdf.js-controller: Provide presentation interface using pdf.js
-
pptgalleryを作り直そうと思ったキッカケ
- mozilla/pdf.js: PDF Reader in JavaScript を使って、PDFファイルをWeb上でスライド表示するライブラリ
-
gradleとgruntを連携してみたりした
- akihyro/yaml-resource-bundle: Java ResourceBundle for YAML format.
- ResourceBundleをyamlでかける
- 階層構造も表現できるようなので、ちょっと便利かも
- ResourceBundle.Controlというのを初めて知った
- multipartでファイルを受け取ってbyte[]化するとき、commons-ioのIOUtilが必要そうだったけど、SparkがIOUtil持ってた
- Sparkさん、なかなか便利だなぁ
- テスト書き始めて、EqualsBuilder的なのが欲しいがためだけにlombokを入れてみたりしている
- Travis最強説
- DockerHubへのPushが成功しているように見えて、Pushできてないのは何故なんだぜ?
travis_time:end:1644641c:start=1457195427271991090,finish=1457195427292576144,duration=20585054
�[0Ktravis_fold:end:after_deploy.6
�[0Ktravis_fold:start:after_deploy.7
�[0Ktravis_time:start:00d480dc
�[0K$ docker push $REPO
The push refers to a repository [docker.io/kaakaa/ppt-museum-web] (len: 3)
- PPTGalleryはDBとか使わず、ディレクトリとファイルで管理してます
- アップロードしたファイルは
public/uploads/yyyyMMDDhhmmss_${title}
のディレクトリに格納される .meta
ファイルに資料の情報を書き出している{"filename":"mongodb_tsurugi_20160223","ext":"pptx","created_at":"20160223140735"}
- アップロードしたファイルは
public/uploads
ディレクトリ内からコマンド叩くと、一括でppt-museum
にアップロードしてくれるバッチを作成(予定)
- 雑多。
- jquery.ajaxを使ってPOST/GET
- コメント付けれるようにすると、ログインシステム作りたくなるけど、まだそこは我慢
- イイネボタンも付けたいなぁ
- DB設計が雑多なので辛い
- スライド削除する時にSlide / Document / Comments / Thumbnail のすべてを削除しなきゃいけない
- サムネイルをnginxに配信するようにすると、DBとファイルでトランザクション組まなきゃいけない
- DB設計してくれる人募集
- 今はMongoDB & Morphiaでやってるけど、特にこだわりは無い
- Dockerなのでイメージ名書き直すだけで、DB環境構築気にしなくていい。すごい。
- コメントとかスライドが追加された時にWebSocketでNotificationしたりできると良いなぁ
- スライド画面で全画面プレビューとかうさ亀とか
- 全画面ビューはslideshareにも無いけど、あった方が嬉しいんだよなぁ
- コメント画面の改良とかLikeボタンとか
- ログインシステムも作るべきな気がしている
- webappをTravisCIからGithubのリリースページにコミットするのはできた
- さらにDockerイメージ作ってDockerHubにコミットできるようにする
- 以下が課題
- docker-composeのプロジェクトに機能テスト追加する(Capybara/turnipを施行中)
- docker-composeのプロジェクトにコミットするとPaaSにデプロイして、sandbox(お試し)環境立ち上げてくれるもの(無料でお願いします)
時間をください