2016-02-01から1ヶ月間の記事一覧

ubuntu 14.04.3LTSで php 7.0.3をインストールする

折角なのでPHP7をインストールする。 野良パッケージサイトから取ってくるというのもアリだけど、 昔ながらの製法で、srcからビルドまずは、php7のソースを公式サイトに取りに行く php 7でぐぐっても、php公式サイトが出てこない...。 最近、googleの検索結…

go言語で作るアドサーバー4 DSP的な何か

インプレッション広告、クリック広告、アフィリエイト広告のecpmは基本的に先に計算したものをテーブルに入れておけるが、DSP業者に広告枠を取りに行く場合、リアルタイムでのecpmの取得となる。簡単に実装するのであれば、http clientでパラメーターを送っ…

go言語で作るアドサーバー3 ターゲティング

go言語で作るアドサーバー2までが、SSPがやっている仕事といえる。 次にターゲティング広告を実装してみる。具体的にはcookieでユニークIDを発行してトラッキングを行い そのユニークIDに合った広告を配信する。まずはユニークなIDを作りクッキーを発行する…

go言語で作るアドサーバー2 広告を重みづけをして配信する

go

まず、広告がソースコードべた書きだと管理が大変なのでMySQLに広告テーブルを作ってそこからデータを読みに行くようにする。 http://hayo0914.hatenablog.com/entry/2014/10/19/014127 GoでMySQLに接続する - Qiita golangでSQLを叩くライブラリまとめ[基本…

go言語で作るアドサーバー1 広告を配信する

go言語の勉強も兼ねてgo言語でAD(アド)サーバー(広告配信サーバー)を作っていくことにする。広告配信サーバーの肝は、大量の広告へのアクセス(インプレッション)をさばくことであるから、そういう意味では、非同期IOのHTTPサーバーを簡単に作れるgo言語は、…

go 入門まとめ

go言語とは c言語と同じコンパイル言語、c言語をスクリプト言語ライクに書けるようにした言語と考えると分かりやすいかも。なので、c言語と、php,perl,rubyなどのスクリプト言語の両方を知っていると理解しやすい。 他の言語にないところ 非同期処理 goはgor…

vim でgo環境を整える

vimはデフォルトではgo言語はシンタックスハイライトもしてくれない。ちょっとめんどくさい。 VimでGoの開発環境を設定する方法のまとめ - Qiita

ATOM Editorで前回選択したタブを選択したい

ctrl+tabで次のタブ ctrl+shifttabで前のタブに移動できるが、 このショートカットは前回選択したタブではない。で、ショートカットを押すごとにトグルでいったり来たりしたい ctrl-last-tab これがまさしく求めていたものに近いのだが、現在のATOMのバージ…

atom editorでファイルアイコンを入れる

標準で入れてほしいくらい file-icons

dockerではじめるgo開発環境

結論だけ書くと まず、docker-composeをインストール プロジェクトのディレクトリを作る mkdir /root/go-example/ cd /root/go-example/ docker-compose.yml(プロジェクトディレクトリ)を書く main.go(プロジェクトディレクトリ)を書く docker-compose up (…

docker-composeをインストール

dockerで標準インストールされててもいいツールdocker-composeをインストールdocker-composeは複数コンテナをまとめて管理するツール 例えば、webサーバー,dbサーバー,redisサーバーの3つのコンテナからなるWEBサービスを一緒に管理したいときに便利なツール…

javascript Objectかどうか判定まとめ

javascriptの場合、ほとんどのクラスがObjectから派生しているため、判定が超めんどくさい。 例えばArrayもオブジェクトになる。 Object.prototype.toString.call(obj)=="[object Object]" obj instanceof Object && !(obj instanceof Array) obj instanceof…

javascriptの後方参照

JavaScript正規表現メモ。 - こせきの技術日記

babelが動かなくなってる

windows環境に新たにgulp環境を作っていたら gulpが動かなくなってる....。 Failed to load external module babel-registerどうもgulpのWindows環境構築時に入れたbabelが最新の6系になったのが原因らしい nmp install -g babel babel-cli babel-preset-es2…

windows 7 にgulpをインストールする

chocoletoryでインストール まずはnodeをインストール 管理者権限でコマンドプロンプトを開いて choco install nodejs -y インストールが終わったら一旦コマンドプロンプトを閉じて 再度、管理者権限でコマンドプロンプトを開く npmが入っていることを確認す…

javascript 空文字判定

vには通常0〜10といった数字が入って来るが、異常値として空文字''が入ることがある場合 var v = 7; if(v=='') console.log('空文字') var v = ''; if(v=='') console.log('空文字') で、0以外の数値は空文字判定されないが、''空文字と0が空文字判定される…

dockerでredmineは結構危険かも

異常終了でわりとあっさりデータが飛んだ。というか、そもそも、Dockerでデータを永続化っていうのは向いてないみたい。 がっつり、データの永続化をしたければ、スクリプト書いてバックアップする必要がありそう。 DockerとData Volume Containerのお話 - Q…

ATOM で日本語がずれまくる問題を解決

ATOMで日本語等幅フォントを指定しておかないと 日本語のコメントなどがずれまくる。ので、設定が必須とりあえず、Migu 1M フォントを設定しておく http://qiita.com/SuperiorMoon/items/b939679230719959858c 今なら、コーディングに最適な日本語対応の等幅…

ATOM Editorの良く使うショートカットキー

ctl+] インデントをひとつ追加 ctl+[ インデントをひとつ削除 [Mac] Atomの基本的なショートカットキー - Qiita あと矩形選択も良くやるのでこれ(multi-cursor)を入れて http://qiita.com/cw-shibuya/items/ea043acab16925497cb4 ctl+ alt + ↑ カーソル位置…

jqueryでフォームの内容をまとめて取得設定

fromデータを一括設定する var cfg={ 'textname' : 'test data', 'selectOpt' : '7', 'checkType' : [1,3], 'radioEnable' : 1 }; for(var name in cfg){ var input = $(('form[name="form"] [name="'+name+'"]'); var type = input.prop('type'); console.l…

ATOM EditorをES6 Javascript向けに設定して使ってみた。

Visual Studio Codeがイマイチだったので、同じElectronで作られているATOM Editor Atom を試してみた。標準でES6もバッチリ、タブも普通、gitも対応、しばらくこれてやってみようと思う。まず、一応日本語化 Mac - テキストエディタ「Atom」の日本語化 - 開…

Visual Studio Codeを試してみた

今までは、WindowsのエディタとしてはEM Editorを愛用してきたが、Javascriptのコーディング環境としてはES6対応していなくてつらいので、ほかのエディタを検討してみた。AROMと同じくJavascriptのElectronで作られていることもあり、ES6標準対応 git連携/gu…

javascipr sortまとめ

デフォルト 文字列比較 昇順 ['1','2','3','4',,,,] Array.sort() Array.sort((a,b) => a.localeCompare(b)) デフォルト使うことってあまりないよね....。 数値昇順 [1,2,3,4,,,,] Array.sort( (a,b) => a-b ) 数値降順 [10,9,8,7,,,,] Array.sort( (a,b) =>…

javascript 既存の関数の書き換え

evalでメソッドや関数を書き換える(フック) eval( "method = " + (method+'') .replace("function (){","function (){console.log(arguments);") ) この場合、元の関数が関数のスコープ外の変数を参照していると、関数を文字列に変換した時点で、関数が正常…

chrome拡張で拡張のリロードを行うとcontents_scriptがリセットされてしまう

chrome拡張で拡張のリロードを行うとcontents_scriptがリセットされてしまう ページをリロードすれば、contnet_scriptが再度ロードされるが、 リロードしたくない場合は、バックグラウンドスクリプトで再度content_scriptを自前で送り込んで上げる必要がある…

javascript 非破壊なArray.shift

普通にshiftするともちろん、元の配列の要素が減る var arr=['A','B','C','D'] var val=arr.shift() console.log(arr); console.log(val); shiftと同じで元の配列を残したい場合sliceを使う var arr=['A','B','C','D'] var arr2 = arr.slice(1-arr.length) v…

javascriptで非同期処理をfor文で回したい。

普通に書くと setTimeout( () =>{console.log('a');},4000); setTimeout( () =>{console.log('b');},3000); setTimeout( () =>{console.log('c');},2000); setTimeout( () =>{console.log('d');},1000); 非同期なので出力はd,c,b,aになる。 同期的に書くと例…

gitでrmしたファイルを一括でgit rmする

日本語ファイル名が含まれている場合は xXXと表示されてうまく行かないので 日本語ファイルはあらかじめ自分でgit rm しておくこと rmしたファイルを一括でgit rmする - Qiita

javascript 同一オブジェクトのプロパティを比較する場合に匿名関数を使って短く書きたい

var a = { id : 1, name : 'test1' }; var b = { id : 2, name : 'test2' }; var compare = (x,y,i) => x + y*(-i||1); [a,b].map( x => x.id ).reduce( compare,0 ); [a,b].map( x => x.name.startsWith('test') ).reduce( compare,0 ); [a,b].map( x => x.…

javascript 1,-1,1,-1.....の数列を返す

単純に作るなら-1のn乗を計算すればいい。 for(var i=0;i<10;i++){ console.log(i+':'+Math.pow(-1,i)); } 1,-1,1,-1,1,-1..... ビット演算子だけでやってみる まず0,1,0,1の数値を作る for(var i=0;i<10;i++){ console.log(i+':'+i%2); } 0,1,0,1,0,1,.....…