プログラミング

サクラエディタのGrep置換

私はもうだいぶ長い間、テキストエディタはEmEditorを使っている。理由は保存時の文字コードの選択ができるからだ。 が、サクラエディタにある、Grep置換というものを知って少し揺らいでいる。気持ちが。 通常の置換で、ファイル内の文字を一斉に置き換える…

CakePHP3でTCPDFを使う

TCPDFは、PDFを生成するためのPHPライブラリだ。 CakePHP3でこれを呼ぶためには、composer.jsonに "require": { "tecnickcom/tcpdf": "*" } を追加して、 composer updateをかけるだけである。 実際にうまく入ったかどうかは、 TCPDFの簡単なサンプルコード…

CakePHP3でpChartを使う

CakePHPは3系になって2系までよりもはるかにコーディングルールが厳しくなってきているようだ。 pChartを使おうとVendorに入れ、普通に呼ぼうとしてもうまくいかなかった。 呼ばれる先のライブラリにまでCake3系の規約を適用しようとしているかのようなエラ…

ニコ動ヲッチャーもできた

ニコニコ動画の カテゴリ合算ランキング(毎時更新)の一覧。 http://kdp.url.ph/niconico/

ツイキャスヲッチャーってのを作ってみた

最初はKDPランキングの表示部分をbootstrapで作り替えようとしていたのだけれども やっているうちに見た目は綺麗になるものの、既にレスポンシブ化のためのメディアクエリーなども含め諸々調整済みだったので 新たに可能になる要素がなんもねえなと思って、b…

O/RマッパーとCakePHP3、QueryBuilder

ORMがあることでDBとのやり取りも言語チックに「分割」「構築」「抽象化」できると言われている。 CakePHP3だと、まるでDoctrineのようなQueryBuilderが使える。 LaravelとかFuelPHPも、似たようなスタイルになっているらしいから、これがモダンなフレームワ…

CakePHP3のBakeを使う上でのTips

CakePHPには元来、Bakeという便利な機能がある。一言でいうと、基本的なコードは0から書かなくても自動生成してくれる。 例えば、Modelや、View、Controllerの最低限の機能は、コマンド1行で勝手に出来上がる仕組みだ。 例えばお問合せフォームを作ろうと…

CakePHP3.xの開発環境をXAMPPにインストール

CakePHPもいつの間にか3.x系になっていたようだ。2系までと比べるとComposerを使えるので設置は簡単になった。 Composerというのはパッケージ管理ツールだと説明しているサイトもあれば、パッケージ管理ツールではないと説明しているサイトもある。 いずれに…

プログラム上からメールを送信する際の文字コードはUTF-8だと逆にダメでむしろISO-2022-JPだという話

UnicodeこそがこれからのWeb用のエンコードだ、と昔言われたことがあった。 だが、メールに関してはそれは完全にNOなのかもしれない。 プログラムからメールを送る際、UTF-8でエンコードしてあると、例えばThunderbirdではゴミみたいに文字化けてしまう。 Th…

Phalconの開発環境をXAMPPに構築する

Phalconの名前を初めて聞いたのは、一年半ほど前のことになる。 シューティングゲームの世界で有名な某社では、CakePHPからPhalconへの移行の試みが始まっているとのことだった。 C言語で書かれている為に、ほかのフレームワークと比べて高速で動作するとの…

怒涛のくまブ開発を振り返る

先日ようやくリリースに至った珍豪鬼氏と私と、あと某氏と某氏が深く関わるこのくまブ開発についてついに語るべきときが来たようだ。 https://kumabu.com/ この四名は、実はStarCraftというゲームを通じてつながった面子だ。 そもそも私と珍豪鬼氏は初代Diab…

iframeやobjectタグで他ページを埋め込んだ際のスクロールバーについて

調べてみると、iframeやobjectタグで他ページのhtmlデータをサイト内に埋め込んだ際に、スクロールバーを二重に表示させないための色々なJavascriptコードのサンプルが 世の中には豊富に存在しているようである。 もし、本当にiframeやobjectタグで読み込ん…

スマホアプリを個人で作ってリリースする簡単な方法(Android)

スマホアプリを作るのは、実は全然むずかしくない。 スマホアプリ開発入門、みたいな本は、実は買う必要がない。今はネットだけで必要な情報はそろう。 体系的な知識を本で学ぶのは後々大切なことではあるが、つかわない知識も多い。 疑問が生じるたびに都度…

Amazon KDP Kindle 電子書籍 個人作家 ランキング 1.1

http://kdp.url.ph/cakephp/ranking 裏側には何万件もの電子書籍のデータを収集しているというのに、上位300件しか見えないのもどうかと思ったので、 上位9900位までみれるようにしてみた。 あまりにも重くなるので300位ずつに区切った。 9900…

Amazon KDP Kindle 電子書籍 個人作家ランキング

表題のものがみたいと思い、実はAmazonの検索窓に正規表現の入った論理条件を入れてみたり 色々試していたのだが、無理であった。問い合わせた結果として、無理だと分かったので 作ってみた。 Amazon APIの絞り込み条件で、出版社が空欄である場合など、 色…

PHP+MongoDBのセキュリティ

大量のユーザを抱えるウェブサイトは、インメモリのKVSとしてRedisやMemcachedを使うなどしてパフォーマンスを上げていると思う。 NoSQLのデータベース、MongoDBも注目されていた。 MongoDBは$neのようなオペレータを使うのだが、 PHPだとこのオペレータが埋…

fizzbuzz問題、余りを使わない版

"NULL", 1=> "NULL", 2 => "fizz", 3 => "NULL", 4 => "buzz", 5 =>"fizz", 6 => "NULL", 7 => "NULL", 8 => "fizz", 9 => "buzz", 10 => "NULL", 11 => "fizz", 12 => "NULL", 13 => "NULL", 14 => "fizzbuzz"); $c = 1; while ($c < 100) { for ($j = 0; …

n匹とm匹がk匹乗りボートで川渡りする問題

#include <stdio.h> #include <stdlib.h> #define N 4 /* ネコの数 */ #define M 4 /* ネズミの数 */ #define K 3 /* ボートの定員 */ int np, solution; unsigned char nk[(K+1)*(K+2)/2], mk[(K+1)*(K+2)/2], nh[2*(N+1)*(M+1)], mh[2*(N+1)*(M+1)], flag[N+1][M+1]; void fou</stdlib.h></stdio.h>…

javascriptで書いてみる

クリティカルシンキング・入門篇、実践篇 - AFTER★SE7EN 二年前に書いた上記の書き込みの下記問題 例えば印象に残ったテーマは、3匹のネコと3匹のネズミをボートで川を渡すような問題だ。・手漕ぎボートには一度に2匹しかのることができない。・向こう岸…

クチコミ分析プロジェクト構想

ソーシャルゲームの運営業務はKPIの分析によってイベント施策に対するユーザ反応を把握することに始まる。 UU(Unique Users)、DAU(Daily Active Users)、一人当たり平均課金額(ARPPU:Average Revenue Per Payed Use) を分/時/日/週/月/年のレベルでグラフ化…

円周率を計算してみる

f = "test.txt" mode = "w" open( f , mode ) {|f| f.write(0)} f = open("test.txt") p = f.read i = 0 while true do Float(p) if i % 2 == 0 then p = p.to_f + 1.0 / (i*2+1) else p = p.to_f - 1.0 / (i*2+1) end i++ end mode = "w" open( f , mode ) …

JpGraphでXMLデータをグラフ化する

下記のXMLを元にPHPのJpGraphでグラフを出力してみた。 <datas> <data> <name>Windows</name> <price>99</price> </data> <data> <name>Mac</name> <price>94</price> </data> <data> <name>Linux</name> <price>30</price> </data> </datas>

MySQLへのログのインポート

ログファイルを一行ずつ読み込んで処理する方式だとちょっとメモリを食いすぎるということで 一旦DBに突っ込んでからログを集計したいなということになる。 そういう時にはLOAD DATA INFILEが使えるようだ。 DBとテーブルとフィールドをあらかじめ定義してお…

一応とっておくその2

名前解決をスレッド20個で処理するようにした版 http://techracho.bpsinc.jp/piichan1031/2010_07_05/2030 require 'resolv' require "thread" def multi_process(ary, concurrency = 20, qsize = nil) q = (qsize) ? SizedQueue.new(qsize) : Queue.new p…

一応残しておく

某所の議論にあったApacheログを解析ネタ。 IPから名前解決してアクセス元のプロバイダのランキングだけやるコードをRubyで書いてみた。 require 'resolv' logArray = [] namesArray = [] open("/var/log/httpd/apache_log") do |file| file.each do |s| log…

Google Code Jam練習

Google Code Jamの練習問題に久しぶりにチャレンジ 問題 連続する複数の整数を、以下の手順によっていくつかの集合に分割します。 まず、対象となる整数の区間と、ある整数 P が与えられます。 初期状態では、区間中の整数はそれぞれその整数のみを含む別々…

Google Code Jam Japan 2011練習問題 数珠つなぎ

Google Code Jamの過去問、数珠つなぎをPHPで解いてみた。 Snapper はちっちゃな電化製品で、片側に入力プラグ、反対側に出力ソケットがついています。 この出力ソケットには、電球などの電化製品や、他の Snapper の入力プラグを接続することができます。 S…

二つの配列の共通項を重複なしで抽出せよ

二つの配列の共通項を重複なしで抽出せよ。 とても簡単な問題なように思えるし、実際ゴリゴリ書いていけば私のような初心者でも 十分解けそうだ。ところがこの問題は、意外とゴリゴリやっていたのでは話の割には大変なコード量になってしまう。 import java.…

一時変数を使わない変数交換の3つの方法

二つの変数の値を入れ替えようとするとき、通常は一時変数を使って移し替える。 tmp = a; a = b; b = tmp; しかし、排他的論理和を使ってこんな入れ替え方をすると、一時変数を使わなくても入れ替えられる。 a ^= b; b ^= a; a ^= b; また、数値型の場合だと…

テトリス

学生時代に作ったコマンドライン上で動くテトリス。 ・system("cls")で画面をクリア後、移動後の画面を再描画でアニメーション ・kbhit()でキー入力にリアルタイムに反応させる ・ブロックの回転はビットマップ画像処理の回転アルゴリズムを応用し 配列の添…