読者です 読者をやめる 読者になる 読者になる

Rubyのsort_byをPHPでも使いたい人へ 配列内の値でソート

php

rubyのsort_byはめっちゃ便利。マジで ary = [{id: 2,name:"hoge"},{id: 3,name:"hoge"},{id: 1,name:"hoge"}] p ary.sort_by { |_| _[:id] } => [{:id=>1, :name=>"hoge"}, {:id=>2, :name=>"hoge"}, {:id=>3, :name=>"hoge"}] ぜひこんなメソッドがPHPにあ…

【PHP】file_get_contentsでエラーの分岐

php

file_get_contentsは非常に便利なPHPのメソッドでたった一行で外部URLを取得できる が、しかし存在しないURLだったとかサーバーエラーとかの例外に弱い PHP Warning: file_get_contents(http://hogehoge.com/hoge/): failed to open stream: HTTP request f…

【CakePHP】GETパラメータを賢く取得する

POSTパラメータを取る方法は腐るほど掲載されているくせに、GETパラメータに至っては公式ドキュメントにすらロクに説明されてないGETパラメータ。 普通に取るなら $this->request->query['id'] けどこれだと未定義の場合Noticeエラーが表示される 例えば本来…

CakePHPでdebugkit入れたらエラーになった時の対処法

環境 PHP 5.6 CakePHP 2 Composerは使いたくないマン インストール方法 リポジトリからzipをDL 公式サイトはhttps://github.com/cakephp/debug_kitだが、2.xの場合はhttps://github.com/cakephp/debug_kit/tree/2.2のzipを落とす 解凍後、ディレクトリ名を「…

PHPのビルトインサーバーではDocumentRootを指定できる

php

知ってた? ビルトインサーバーとは 本来PHPで開発する際はWebサーバーを建てなきゃいけないのでApacheやnginxをインストールしなきゃいけない。 けどPHP5.4で実装されたビルトインサーバー機能を使えばPHPがWebサーバーとして起動してくれるので、Apache等…

Railsマンが初めてCakePHPでHello World

チュートリアル以前の話。 環境 Cakephp-2.7.9 mac(ビルドインサーバーで動いた) 初期設定としてSecurity.saltの設定はしておくこと 目指せHello world まずは適当にhttp://localhost:2000/hogeを開く。すると以下のエラーが表示させるはず Error: HogeCon…

MacのVPN接続でゲートウェイをVPNサーバー側にする

mac

公共無線LANとか使ってたらやっぱり接続しなきゃね、VPN。 って思ってスタバでドヤ顔してる最中におもむろに診断くん開いたらおかしなことに REMOTE_ADDRが本来ならVPNサーバー先(ここでは自宅IP)になるはずが何故か公共無線LANのIPのまま。 設定がおかし…

PHPで「1ヶ月前の今日」を求めることはできない

php

久々にPHPFXXK案件に遭遇してしまった・・・・・ やりたかったこと 一ヶ月前の今日を求める 例を挙げると 2016年4月28日 → 2016年3月28日 2016年1月28日 → 2015年12月28日 ただし2016年3月31日のように先月にその日付が存在しない(先月日数<今月日数)場合…

Nginxのレスポンスタイムアウトの意味

nginxをプロキシとして利用することは多いと思うんだけど、重たい処理をサーバーサイドでやるとなると、ややもするとタイムアウトで408が返ってきてしまう。 いろいろ設定見てたらタイムアウトの項目があった。がよく意味がわからなかったので備忘録。 proxy…

Rubyで行列の回転を行いたい

ぶっちゃけまとめ def display mat mat.each do |row| puts row.join(' ') end puts end matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] display matrix display matrix.reverse.transpose #=> 右回転 display matrix.transpose.reverse #=> 左回転 display ma…

改めてwill_paginate-bootstrapの復習

インストール gem 'will_paginate-bootstrap' 公式ドキュメントは以下 github.com 使い方 モデルで1ページあたりいくつ載せるかを設定 class Post self.per_page = 10 end で @post = Post.order('created_at DESC').page(params[:page]) 個々でいくつ載せ…

Let's Encryptを使ってOwncloud構築してみる

ドメイン認証のSSL証明書が無料で発行できるとのことで乞食してみた 環境 Ubuntu Server 14.04 Apache/2.4.18 PHP 7.0.4 ownCloud 9.0.0 MariaDB インストール add-apt-repository ppa:ondrej/apache2 add-apt-repository ppa:ondrej/php apt-get install -y…

Railsのログを極めたかった話

putsを卒業しよう Rails.logger.debug "デバッグ情報" 実は5種類ある Rails.logger.fatal "致命的なエラー情報" Rails.logger.error "エラー情報" Rails.logger.warn "警告情報" Rails.logger.info "お知らせ情報" Rails.logger.debug "デバッグ情報" ログ…

MySQL5.7のvalidate_passwordとかいうクソ機能殺す

発端 macでMySQLインストールするぞい brew install mysql 初期設定するぞい mysql_secure_installation 片っ端から「y」でいくぞい! $ mysql_secure_installation Securing the MySQL server deployment. Connecting to MySQL using a blank password. VAL…

twitter-bootstrap-railsでBootstrapアイコンを使う

弱点のあるtwitter-bootstrap-rails twitter-bootstrap-railsは一発でRails&Bootstrapが構築できる便利なものだがアイコンがデフォルトだと使えない フォントの入手 面倒だが公式サイトからzipで落として fonts 以下を vendor/assets/fontsとしてコピー あ…

永禄三年(1560)の就職ランキング 改訂版

SS 朝廷 ------------------------------神 S 足利 今川 本願寺(内勤) 高野山 ------------------------------公家 AA 武田 三好(畿内) 上杉 毛利 比叡山 ------------------------------名門 A 大友 北条 朝倉 六角 三好(四国) ---------------------------…

RailsでSlackのOAuth認証でログインしてみる

先人様のありがたいGemを使う github.com インストール gem 'omniauth-slack' アクセスキーとシークレットキーの入手 Twitterよりもちょっと面倒 まずここに行って適当にアプリケーションを登録する AppName, Team, Description, Redirect URIが必須 Redirec…

ActiveRecordでバルクインサートを行う

やりたいこと Rails&ActiveRecordで一括挿入 インストール gem 'activerecord-import' 試しにrails g model task title content rails g task bulk insertやって以下のようなベンチマークを作成 http://thr3a.hatenablog.com/entry/20151203/1449136 ...

Rubyで絵文字を削除するのは簡単ではなさそう

scrubで解決できると思っていた時期がありました "いっけなーい限界限界私、圧倒的成長ビジネスマン休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなってもう大変いやいやビジネスマンのくせに24時間働けないとか死刑も…

Amazon Product Advertising API使ってISBNから書籍検索

やりたいこと Rubyにて、ISBN投げるだけで書籍名とか出版社が一発でポーンと帰ってくる魔法 用意するもの Amazon Product Advertising APIが使えるアカウント AWSのアクセスキーとシークレットアクセスキー アフィリエイト用のトラッキングコード Ruby キーの…

Nodejsでコマンドライン引数をもらう

モジュール無しでもできる コマンドライン上で渡した引数はprocessオブジェクトのargvプロパティに格納される。が、使い勝手は良くない test.js console.log(process.argv); で例えばnode test.js arg1 arg2とするとprocess.argvには以下 [ 'node', '/var/ww…

PHP7でOwncloudを動かしてみる

前回の thr3a.hatenablog.com を絶賛一柱中のPHP7で動かしてみる 環境 前回のポストの同じ。ただしPHP類は一切インスコしない PHP-7.0.0RC7 事前準備 ソースコードのダウンロード ここから最新版をダウンロード wget https://downloads.php.net/~ab/php-7.0.…

NginxとPHP-fpmで爆速Owncloudを構築

環境 Ubuntu Server 14.04 Owncloud 8.2 nginx 1.8.0 PHP 5.5.9 Nginxのインストール sudo apt-add-repository ppa:nginx/stable sudo apt-get update sudo apt-get install nginx PHPのインストール sudo apt-get install php5-cli php5-fpm php5-cgi php5-…

HHVMで爆速Owncloud構築しようとした話

HHVMのインストール 公式ドキュメント参照 sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" sudo apt-get update sudo apt-…

RailsとCarrierWaveで画像アップローダをつくってみる

そういやsinatraでもつくったことあったな thr3a.hatenablog.com 懐かしい( 環境 Rails 4.2 rmagick(macはbrew install imagemagick pkg-config) 要件 せっかくだし前回同様にしてみる 画像を投稿できて一覧表示できるようにする 画像投稿には必ず「画像の…

Railsとomniauth-twitterを使ってログインする

環境 Rails 4.2 omniauth-twitter使う device使わない まずは本当に「連携」だけしてみる つまりモデルを作らない(データを保存しない) 環境変数の設定 export TWITTER_KEY=AAAAAAA export TWITTER_SECRET=AAAAAAA config/initializers/omniauth.rbを新規…

Rubyを使ってCabochaで文節区切りを行う

環境 Ubuntu Server 14.04 or Mac Mecabインストール済 CRF++のインストール CRF++: Yet Another CRF toolkitからソースをダウンロードしてコンパイル&インストール tar xzvf CRF++-0.58.tar.gz cd CRF++-0.58/ ./configure make sudo make install sudo ldc…

deviseとBootstrapで簡単登録フォームの実装

いつもの rails new passport -TB --skip-turbolinks bundlegemを追加しておく gem "twitter-bootstrap-rails" gem "slim-rails" gem 'devise' rails generate bootstrap:install static忘れずに deviseのセットアップ rails g devise:install すると以下が…

Railsのdate_fieldにてデフォルト値を設定する

やる気のないdate_field f.inputとかf.collection_selectだと自動的にセッテイングしてくれるくせになんでdate_fieldは空欄なんだよ 指定した日付を入力 = f.date_field :birthday, value: Time.now.strftime("%Y-%m-%d") GETパラメータを汲み取って日付入力…

Raspberry PiをBluetoothスピーカーにして音楽を鳴らしたい人生ができた(完成版

やりたいこと スマホとRaspberry PiをBluetoothでペアリングし、スマホから流した音楽をRaspiを通してスピーカーで聴く 用意するもの Raspberry Pi2(2015-05-05-raspbian-wheezy、jessie不可!) raspi-configにてイヤホンジャックから音が出るように&グラフ…

RailsでMySQL動かないときの対処法

動かない例 invoke active_record /Users/thr3a/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:177:in `rescue in spec': Specified 'mysql2' for database adapter, but the gem is no…

もう貴方はAtomのファイル関連付けに迷わなくていいの

お薬は大丈夫。お薬があるわ。お薬がたくさんあるから。だから大丈夫。もう大丈夫。……? そもそも実行ファイルは以下 "C:\Users\USERNAME\AppData\Local\atom\app-1.0.19\atom.exe" けどこのパスをそのまま登録するのは問題がある。というのも ユーザーネー…

要素の属性が変更された場合にイベントを発火させたい人生だった

あると思うじゃん?(一発でできるのが)ないんだなそれが DOMAttrModified わかりやすいがfirefox限定 てか非推奨 window.addEventListener("load", function(){ document.body.addEventListener("DOMAttrModified", function(e){ console.log("changed"); …

n1 = 114 n2 = n1 n1 = 514 n2 =>114 o1 = {num:114} o2 = o1 o1.num = 514 o2 =>Object {num: 514} s1 = new String("abc") s2 = new String("abc") s1 == s2 =>false

Rails/Redcarpetでリンク先を新しいタブで開けるようにする

環境 Rails Redcarpet オプションあった みんなゴリゴリ書いてるけど一発でいけたわ render_options = { link_attributes: { rel: 'nofollow', target: '_blank' } } renderer = Redcarpet::Render::HTML.new(render_options) これでrel="nofollow" target="…

Railsで表示する日付のフォーマットを変える

普通だと p = post.published_on.strftime("%Y年%m月%d日 %H時%M分") だがあのRailsたんはやっぱり一味違かった Railsのレールに乗ったやり方 config/initializers/time_formats.rbを新規作成し以下を追加 Time::DATE_FORMATS[:default] = '%Y/%m/%d %H:%M' …

Nodejsでも同期したい人生だった

一般的なコード(非同期) var fs = require('fs'); console.log(1); fs.readFile('first_promise.js', 'utf8', function (err, text) { console.log(2); console.log(text); console.log(3); }); console.log(4); 実行結果 1 4 2 var fs = require('fs'); c…

PHPで大文字を小文字に変換とか小文字を大文字に変換しようとする

mb_convert_caseメソッドだけ知っていれば最強、そう思っていた時期がぼくにもありました。 大文字を小文字に変換

Rubyでランダムな日付を生成する

まずはググろう ググって最初に出てきたサイトによると s1 = Date.parse("2010/01/23") s2 = Date.parse("2015/04/12") s = Random.rand(s1 .. s2) さすが万能randメソッド def time_rand from = Time.local(0), to = Time.now Time.at(rand(from.to_f..to.t…

Railsで1対多を実現

サイトによってバラバラだしまとめないと死ぬ 準備 customerモデルとorderモデルを作って紐付けたい Customerモデルの作成 rails g model Customer name:string Orderモデルの作成 rails g model Order order_date:date マイグレーション rake db:migrate 当…

mp3の高音域を「Upconv」を使って復元

mp3のファイルサイズとトレードオフによって失われた高音域を無理やり復元させてみる(高音質になるとは言ってない) 用意するもの Upconv 今回は upconv074.lzhを利用 復元したいmp3(あらかじめwaveに変換しておく) そこそこ高性能なPC(めっちゃCPU使う…

scaffoldを利用したオレオレRailsの設定

新規プロジェクト作成 rails new hoge -TB --skip-turbolinks -Tは--skip-test-unit -Bは--skip-bundle Gemfileに以下追記 gem "twitter-bootstrap-rails" gem "slim-rails" ライブラリインストール bundle Bootstrapを使えるようにする rails g bootstrap:i…

hoge

種類 Browser actions アドレスバーの右側にアイコン表示するタイプ Page actions 特定のページに対してアクションするタイプ Override Pages ブックマークマネージャー、履歴、新しいタブをカスタマイズできるタイプ カスタマイズ箇所は1つの拡張機能につ…

MacにMySQLをインストールする

Homebrew経由でインストールを行うのであらかじめbrewコマンドが叩けるようにしておく インストール brew update brew install mysql 起動 mysql.server start 初期設定 mysql_secure_installation Set root password? [Y/n] Y New password: Re-enter new p…

Macにrubyをインストールする

RVMのインストール curl -L get.rvm.io | bash -s stable .bashrcに以下を追記 # RVM [ -s ${HOME}/.rvm/scripts/rvm ] && source ${HOME}/.rvm/scripts/rvm source ~/.bash_profileを実行してリロードしておく Rubyのインストール rvm install 2.2 bundleの…

Raspberry PiをBluetoothスピーカーにして音楽を鳴らしたい人生だった

やりたいこと スマホとRaspberry PiをBluetoothでペアリングし、スマホから流した音楽をRaspiを通してスピーカーで聴く 用意するもの Raspi 2 rasbianでローカルの音声が鳴るようにしておく(raspi-config) スピーカー Bluetooth対応スマホ 今回はXperia Z3…

Caffeを使って唐揚げそばチェッカーをつくるまで

単なる備忘録ともいう 用意するもの Ubuntu Server 14.04 Caffe (この記事のcreate_mnist.shまで行っておくこと) インストール場所はホームディレクトリとする 唐揚げそば画像(正例画像) 唐揚げそばに見えなくもないけど違うっぽい画像(負例画像) 教師デ…

Nginx Error - 413 Request Entity Too Large

client_max_body_size 100M;とか追記 なんとデフォルト1M

UbuntuでWEBカメラの情報を表示・設定

接続確認 lsusb Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 003: ID 06a5:d001 Di…

Proxmoxのカーネルをkernel3.10にアップデートする

最新バージョンの確認 apt-get update apt-cache search pve-kernel | sort インストール apt-get install pve-kernel-3.10.0-7-pve 必ずreboot 確認 pveversion