プログラミングをはじめた時のこと Windows3.1編

プログラミングをはじめたのは確か中学生か高校生の頃。 もうはっきり覚えてないけど、中学で年に数回しかなかったPCの授業でタッチタイピングをして驚かれた記憶があるので、多分中学ではやっていたんじゃないかと思う。 はじめて実家で買ったPCは富士通のF…

作ったサービスの上位互換サービスがあったことに気づいた

先日下記のようなサービスをリリースした。 torima-p.com 数年前に終了した前略プロフィールというサービスをモチーフにしたもので、 一問一答式のプロフィールを作成することが出来る。 Twitterのサービスなので容易に集客できるだろうと思っていたがそうそ…

WEBサービスを作りたい人への最初の1歩の勉強方法アドバイス

発端 先日プログラミング等でWEBサービスを作りたいのだがどうすればよいか、という問い合わせが来た。 Twitterの奥深く、普段誰も訪れないような僕のアカウントのところまでどうやってたどり着いたかは謎だったが、一応色々考えつつどうやって進めたり勉強…

Phoenix1.3でex_adminを使う

Phoenixではex_adminという管理画面作成パッケージを導入することで簡単に管理画面が作成できる。 smpallen99/ex_admin: ExAdmin is an auto administration package for Elixir and the Phoenix Framework しかし依存関係やフォルダ構成の違いの問題で最新…

MediumとDev.toに記事をクロス投稿してみた

調べてみるとMediumとDev.toは自分のブログの記事をクロス投稿できることが分かった。 どういうことかというと、canonical_urlを指定できるので、SEO的にも問題なくマルチポストが出来るということ。 なので当ブログの Systemdを使ったPhoenixの本番デプロイ…

Google Chromeの通知をLinux Mintに奪われる時の対処方

Linux MintでGoogle Chromeを使っていると、Chromeの通知がLinux Mintに奪われるようになってしまった。 これはスマホ等で、Chromeの通知をネイティブに渡すことで便利になる機能なのだが、 PCでは要らないというか、コンパクトだった通知が画面をはみ出すま…

mobageで運営していたゲームを終了させた

概要 mobage & Yahoo! mobageで運営していたゲームを終了申請しており、ついに今月終了となった。 プログラムを見ると2014年のものがいくつかあるので恐らく3年弱くらいになるだろう。 環境 PHP (CakePHP2) MySQL cocos2d-x(JS) 背景 mobage等、課金システム…

teratailを3日やってみたら週間ランキング3位になった

動機 同じプログラミング関連のサービスである、一人もくもく会の集客目的で、 プロフィールページからの流入が狙えるかどうかを試すためにちょろっと始めてみた。 どうなったか 週間ランキング3位になった 頻繁に回答してると結構早く順位が上がっていく。 …

DockerでPHP5.5のLAMP環境を作成

DockerでPHP5.5のLAMP環境を作成した。 元々ローカルのPHPのままだましだまし動かしてたのだが、 シェルだとCakePHP2のObjectクラスがコンフリクトしてついに動かなくなってしまったのでやむなく作成した。 Dockerfile FROM nyanpass/php5.5:5.5-apache RUN …

WerckerでPhoenixアプリケーションのCI

※1.6.0にしてフォーマットを追記 WerckerにてPhoenixアプリケーションのCIをするためのwercker.yml。 DBもservicesで追加できるので専用のコンテナを準備する必要がない。 box: shufo/phoenix:1.6.0 services: - id: mariadb name: mysql username: root pas…

Goのglide環境にてWerckerのCI導入

Go3 Advent Calendar 2017 - Qiita 23日目 GoのアプリケーションのリポジトリをBitBucketに作っているので、WerckerでのCIを試した。 シンプルで綺麗なパスでアプリケーションを作っている場合、 多分Werckerにてアプリケーションを登録する際に表示されるサ…

サイボウズLiveを作る-第6回-イベント作成

あと一つ大きなメイン機能であるイベント機能が残っていたのでそちらを作成した。 色々見てみた結果、とりあえず全部FullCalendarに置き換えればいいだろうと言う結論に至った。 FullCalendar - JavaScript Event Calendar 期間や範囲切り替えもあるし、これ…

Advent Calendarの影響によるアクセス増加?

Visual Studio Code Advent Calendar 2017 - Qiita 上記用に書いた、下記の記事のアクセスがすごかった。 AtomからVisual Studio Codeに乗り換えた - アルファブレンド プログラミングチップス 普通Qiitaのカレンダーからアクセスが来るだけではこんなにはア…

Systemdを使ったPhoenixの本番デプロイ詳細例

Elixir Advent Calendar 2017 - Qiita 19日目。 サーバーを準備し、コンテナを使わずに運用できるところまでの準備まで一通りまとめてみた。 Systemdで動作させる。 (以前残したログをまとめているだけなので正確でない可能性あり) 前提 Elixir1.5 Phoenix…

サイボウズLiveを作る-第5回-グループへ参加

とりあえず一旦グループにメンバーを追加する機能を進めてみた。 メールアドレスは今のところ登録してほしくないし、とりあえずそれ無しでできる部分だけ進めた。 具体的には本家と同じで、招待URLを使ってそこからアクセスしてログインすればグループ申請と…

個人開発のだいたいの流れの例

個人開発 Advent Calendar 2017 - Qiita の5日目。 概要 普段から時間があればプログラミングで遊びつつ何か作成している。 せっかくなので誰も使わなくてもリリースしたりしていて、 それらは特に仕事でやっているのとかけ離れているものではないので、 適…

AtomからVisual Studio Codeに乗り換えた

Visual Studio Code Advent Calendar 2017 - Qiita の4日目。 最近、長らく使っていたAtomからVisual Studio Codeに乗り換えた。 理由はただひとつ、「重すぎる」 なんだかんだでずっとCodeに乗り換える機会を伺っていた。 まずAtomのいいところ Atomはとて…

PhoenixでbrunchのままVueを使う

Vueといえばwebpackというイメージだが、Phoenixを使うと最初からbrunchが入っている。 webpackを使うこともできるが色々と設定するのも面倒なので、簡単にbrunchのまま使うための方法。 ちなみに下記で紹介されている方法と同じ。 Phoenix, Brunch and VueJ…

サイボウズLiveを作る-第4回-Todoをざっと

掲示板をざっと作成後、次は次に簡単そうなToDoを作成することにした。 とりあえずざっと下記を作成した。 ToDoの新規登録、編集、コメント追加 特に目新しいこともなく、コメントなどはほとんど掲示板と同じ。 黙々とシンプルに作成したので、特筆すること…

幼稚園用達成ボードアプリを作成

概要 タブレット向け幼稚園用達成ボードアプリを作成した。 (単なるWEBアプリ) https://child-achievement.alphabrend.com/ 適当に作ったのでBitbucketは使わずGithubで公開している。 GitHub - dala00/child-achievement: Achievement for children 経緯 …

サイボウズLiveを作る-第3回-トピック登録まで

グループは作成できたので次は実際のコンテンツを作成していく。 とりあえず仕様的にシンプルそうな掲示板を作ってみることにした。 (もしかすると細かい機能が多くあるのかもしれないが) 処理的に特筆するところは特に何もなかったが、 投稿に関してはwys…

サイボウズLiveを作る-第2回-グループ登録まで

アイコンは出来たので引き続きグループの作成機能。 本家だととりあえず一番簡単なパターンでは、グループ名だけ入力すれば登録できる。 とりあえずそこまでを作った。 アイコンも選択できるようにしている。 実装は非常にシンプルで、まずモデルに所属メン…

arc_ectoでDBにファイル名を直接保存したい時

GitHub - stavro/arc_ecto: An integration with Arc and Ecto. を使うと、postされた画像を簡単に登録することができる。 ただ、そのためにはmodelの型も専用のものに変えなければいけないので、 string型でなくなってしまう関係で直接ファイル名を保存する…

PhoenixのTaskでDBにアクセスする

PhoenixでTaskを試した。 実際にはPhoenixではなくmix自体のtaskを作成して実行するだけ。 ただ、単にtask内でRepoを使ってDBアクセスしようとすると下記のようなエラーが出る。 repo App.Repo is not started, please ensure it is part of your supervisio…

サイボウズLiveを作る-第1回-アイコン登録まで

概要 サイボウズLiveが終了するとのこと。 無料グループウェア「サイボウズLive」サービス終了のお知らせ | サイボウズ株式会社 丁度他のアプリケーション作成が一区切りついたところだったので、今度はサイボウズLiveのコピーを作ってみようと思う。 ざっと…

Phoenixで作った請求書作成システムをリリース

Elixir & Phonenixで作った請求書作成システムをリリースした。 元々Misocaを使っていたが、弥生の傘下に入ってからフリープランでは5通までしか作成できなくなってしまった。 別に良いかと思っていたが、ちっちゃい請求が続いたりするとどうも超えてしまう…

wkhtmltopdfでpdf作成に失敗する時

wkhtmltopdfで何度試してもエラーが出ていた。 アクセス権限もあっているし、ファイルも存在するし中身もおかしくないし…。 色々試した結果、今回は拡張子に.htmlをつけたら変換できるようになった。 (一時ファイルのため拡張子がなかった) その時々によっ…

PhoenixでLet's EncryptによるSSL

前提 PhoenixでLet's Encryptにより無料でSSL対応を行う。 Elixir 1.5.2 Phoenix 1.3.0 手順 基本的には Phoenix/Elixir App Secured with Let’s Encrypt – Andrew Forward – Medium で書かれている通り。 とりあえずサーバー起動。 MIX_ENV=prod mix phx.se…

Phoenixで他のフォルダの共通テンプレートをrenderする

自動生成されたedit.html.eexのformテンプレート読み込み部分を見ると、下記のようになっている。 <%= render "form.html", changeset: @changeset, action: post_path(@conn, :update, @post) %> ファイル名しか指定されていないので他の共通フォルダなどに…

Phoenixでmany_to_manyのフォームを対応

Phoenixでmany_to_manyを設定してDBからデータを取得して表示するのは非常に簡単。 ではformで新規登録したり更新したりする際に一緒にmany_to_manyのデータを更新するのはどのようにするのか一通り試してみた。 form 例として、Postに複数のTagが紐付いてい…