2017-01-01から1年間の記事一覧

【Rails】update where in について

最初こうやってたけど、updateが複数回実行される形だったので非効率だった。 ids = [1, 2, 3] values = Array.new(ids.size, {status: false}) User.update(ids, values) # => update users set status = 0 where id = 1 # => update users set status = 0 …

2017年まとめ

仕事 今年は自分なりに大変な1年だったなぁと思いました。 仕事としては以下がメインだった。 ・ECサイトの改修案件 Web(php) ・辞書アプリの開発 iOS(Swift) ・情報系アプリの開発 ハイブリッド iOS、Android(ionic) ・マッチングアプリの開発 ハイブ…

【cordova】アプリがインストールされているかどうかを調べるプラグイン

https://github.com/nrikiji/cordova-app-installed-plugin とりあえずiOS版だけ作ってみた。こちらにswiftのやり方がのっていたのでプラグインに書き直しただけ。androidも簡単にできそうなので近々やろうと思う。が、誰か作ってくれたら嬉しいです。以上で…

【cordova】iOSのサイレントプッシュ通知について

cordovaでiosのサイレント通知を試したときの挙動についてメモしておく。試した環境 ・ios11 ・awsのsnsでサイレント通知送信結果 通知設定アプリ状態受信 onバックグラウンド可 フォアグラウンド可 停止中不可 offバックグラウンド可 フォアグラウンド可 停…

【go】echoでapiサーバーを実装するときに最低限必要そうなことをまとめておく

以前にgoでのapiサーバーの実装を調べたけどすでに色々忘れかけてるので手順などまとめておく。使おうと思った理由としては以下の要件が厳しめで、phpとかでは厳しいと思ったため。 ・レスポンスの高速化 ・APIサーバー数の最小化あと、時間が空くと環境作っ…

【javascript】Blob型の要素にfilenameをセットする

こんなのでいいのか。。今日けっこうハマってしまった。。 // Blob型のデータを準備 var blob = new Blob([ ・・・ ], { type: 'image/jpeg' }); // 送信 var formData = new FormData(); formData.append('image', blob, 'image.jpg'); // ★第3引数で指定!!…

javascriptでinput type="file"を作って送信

やりたかったこととしては、ユーザーが指定した画像をjavascriptで加工(トリミングやリサイズ)したファイルをinput type="file"に指定してアップロードしたかった。 結論から言うとFormDataにBlob型のオブジェクトをセットして送信すればいいみたい。 var fi…

iPhoneで撮った写真が逆さになる問題をブラウザ側で解決する

スマホからフォームで画像をアップロードしてphpで保存したら逆さで保存された - とりあえずphpとかかなり昔に同じ問題に遭遇した時はサーバーサイドで解決した。が、jsが進化したからか自分がjs触る機会が増えたからかわからないけど、今回ブラウザで解決し…

javascriptでのクラスひな形

ちょっと調べてたけど、素のjavascriptて最近あまり書かないのかな。。?と思いつつサクッと作ることもあるかと思うので。 (function(global) { // Constructor function MyModule(name, age) { this.name = name; this.age = age; return this; } // Privat…

javascriptのif文について

最近疲れがちで感覚でやってしまいがちなのでメモしておく。 <script> function testIf(value) { if (value) { console.log('true'); } else { console.log('false'); } }; // 数値 testIf(0); // false testIf(1); // true testIf(-1); // true // 文字列 testIf(''…

【Rails】has_many through について

最近、active recordをダラダラいじってるけど全然慣れない。。今回は少しでも理解を深めるために「has_many through」構文?のオプションを省略せずに書いてみたのでメモとして残して置く。テーブル構造は、以下のようにrailsの規則どおりのもの。 users(id)…

【Rails】where like検索の使い方メモ

今回やりたかったことはjoin先のテーブルからLIKE検索したかった。今回使うモデルは2つで以下の形。 class Category < ApplicationRecord has_many :movies end class Movie < ApplicationRecord belongs_to :category endこんな感じでできた Movie.joins(:c…

【css】marginを取消(リセット?初期化?)する

css

css全然わかってないけど、デザインちょっと調整してとか言われるとchromeのデベロッパーツール使って、チクチク直すことが多々あります。で、上書きはよくやっていたけど、スタイルの取消?リセット?初期化はやったことなかったかも。 <style> /* 既存のスタイル */</style>…

ionic state resetとrestoreの違い

それぞれのヘルプをみてみる $ ionic --help reset ・・・ Clear out the platforms and plugins directories, and reinstall plugins and platforms restore ・・・ Restore the platforms and plugins from package.jsonreset はplatformディレクトリとplu…

ionic(cordova) config.xmlを環境(development、production)毎に分ける

以前から気になっていた内容。 ionic か corodova の標準の機能でありそうだけどドキュメント眺めたり検索してもよくわからない。みんな必要な機能な気がするがどうやるのが正しいのだろうか。解決したかったこととしては以下 ・アプリのBundle Identifierや…

【ionic】ion-list ion-itemをタップしたときのhighlightの無効化

正しいやり方わからないけど、これでできたので自分用にいったんメモしておく .item.activated.item-complex > .item-content { border-color: #FFF; background-color: #FFF; }

【ionic】ionicPopup.promptの入力フォームがキーボードで隠れないようにする

app.js angular.module('starter', ['ionic']) .run(function($ionicPlatform, $localStorage, ParentService) { $ionicPlatform.ready(function() { if(window.cordova && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccess…

緯度経度の2点間の距離、角度と座標 - GoogleMap

今回はapache cordovaのGoogleMapのプラグインの話だけど、GoogleMapのAPIならきっと同じように取得できると思われる。計算方法とか調べていたが実際にGoogleMapに表示してみるとけっこうずれたりしてうまくいかなかった。で、プラグインのドキュメント見て…

【Go】Echo JsonにTemplateから生成したHTMLを埋め込んで返す

今回やりたかったことは以下。 ・HTMLのテンプレートを変数等に定義しておく。 ・テンプレートを元に動的な部分をHTMLに埋め込む。 ・生成したHTMLをJSONにいれてレスポンスとして返す。 package main import( "net/http" "github.com/labstack/echo" ) // V…

【redis】データのセットと取得するコマンド

Redisで扱えるデータ型いくつかあるようだけど今回扱うのはString型で単純にKeyとValueをセットできるようにコマンドメモしておく。 配列とかハッシュ型もあるけど、自分の用途だったらjsonを保存してアプリ側でデータをゴニョゴニョするかも。1つセット $ s…

glideでlogrusのインストールエラー対応

Go

glideでgorm入れようとしたら突然logrusのエラーが。。。 [ERROR] Update failed for github.com/Sirupsen/logrus: The Remote does not match the VCS endpoint [ERROR] Could not update packages: The Remote does not match the VCS endpoint意味わから…

【Go】Echo アプリログ出力処理(複数ファイルへ)

実際使おうとすると調べる内容が細かい。。けどメモ。 logrusというのを使ってみる。ローテションはとりあえず考えない。log/log.go package log import ( "os" "fmt" "github.com/Sirupsen/logrus" ) var AppLog = logrus.New() var AppLog2 = logrus.New()…

【Go】Echo InternalServerErrorとNotFoundエラーを発生させる

こんなことできるのかmain.go package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/users", func(c echo.Contet) error { // エラーを返す return echo.NewHTTPError(http.StatusInternalServerError, "S…

【Go】Echo エラー処理を実装する

apiサーバーの実装でとりあえずのエラー処理中。とりあえず以下をハンドリングするような想定で。 ・ビジネスエラー ・システムエラー ・404エラー ・その他サーバーエラーディレクトリ構成はこんな感じ $ tree -L 3 . └── app ├── controller │ └── traking…

【Go】Echo Controllerを別Packageに分割する

細かい話だけどecho的には特にルールは決まっていなそう。main.go package main import ( "github.com/labstack/echo" "app/controller" ) func main() { e := echo.New() e.GET("/members", controller.GetMember()) e.POST("/members", controller.PostMem…

【Go】Echo JSONを返す

echoでjsonを返すサンプル package main import( "net/http" "github.com/labstack/echo" ) // レスポンスを表す構造体を定義 type Member struct { Id int `json:"id"` Name string `json:"name"` } func main() { e := echo.New() e.GET("/members", func(…

macにgoをインストールする手順メモ

Go

1台のPCで複数バージョンのGoを使用したいのでgvm(Go Version Manger)を使用する。https://github.com/moovweb/gvm ドキュメントどおりにやったらすんなり入った。Mac使ってるので「Mac OS X Requirements」のコマンド実行準備 $ brew update $ brew install…

labelクリックでinputにfocusする iOS対応

スマホで言えばこんなUIの入力フォーム。 この場合、画面の左半分がlabelで右半分がinput。で、気がきかないから気にしてなかったのだが、labelをタップしても入力できないということで親切でないということで修正しようとしたらちょっとはまったのでメモし…

【ionic2】ログイン機能を実装する

はじめに 今回やりたかったのは、まぁ普通のログイン機能をもつアプリ。実装したい要件としては以下 ・未ログインの場合は、ログイン画面を表示。 ・ログイン済の場合は、他の画面が見れる。実装方法としては以下のような形で行ってみた。 ・ログイン済みか…

【ionic2】apiリクエストをproviderで共通処理化する

はじめに 今回やりたかったことは以下 ・APIのURLを開発と本番で切り替えられるようにしたい ・アプリ全体で認証トークンをhttpヘッダーに含めたいこれらを満たすAPIリクエストの共通処理実装したのでメモしておく。 APIのURLを開発と本番で切り替える こち…