Let's write β

プログラミング中にできたことか、思ったこととか

GoogleMapのスタイルギャラリーSnazzyMapsのスタイルを適用したGoogle Static Mapの作成

GoogleMapのStaticMapを作るときに、スタイルをカスタマイズしてアプリケーションのテーマと雰囲気を合わせたいなという場合があります。 GoogleMapのスタイルはカスタマイズできるのですが、個別の項目を1からカスタマイズするよりは、 おしゃれな既存のテ…

独学でプログラミングしてきてよかった本まとめ

良いコードを書きながら速くチームで成し遂げたい ビジネス的には、ビジネスの機運を適切につかむためにも速くリリースすることが必要である事が多く、 一方で出来合いのコードで速くリリースし続けると負債となって溜まっていってしまいます。 そういうジレ…

rlwrapがMacでの子プロセスのディレクトリの追跡をサポートしたようです

前回の記事でも触れましたが最近はplan9portのrcをつかって生活をしています。 rcではヒストリ機能はサポートしておらず、readline系のなんかを使うと良いんじゃないかみたいなアドバイスがされています。そんなときに便利なのはやっぱりrlwrapです。任意の…

rbenvをPlan9portのrcに対応させるPRを送った

plan9の標準シェルrcを最近メインで使い始めたのですが、ヒストリー機能がないとかそういうのは自前でやるとしても rbenvなどの普段使っているツールが動かないのは辛いです。 rbenvとhubにrcサポート用のPR送ろっかなぁどニッチだけど— Pocket7878 (@Hannib…

AirPodsが届いた

昨年末に注文していたAirPodsが今朝方届きました。意外と思っているよりも箱が重たかったのが印象的でした。箱を開けてみるとなかに小さなガムの容器のようにケースが入ってました。このケースがしっかりした感覚の重さでした。(充電器として使えることを考…

競プロ勉強進捗

競技プログラミングをちゃんと勉強しようというのが今年の目標でも合ったので とりあえず必ず1日一歩ずつでもいいから進めようと思う。 とりあえず、一昨日あたりからはじめてABCの残っていたA&B問を全問といておいた。 A&Bはすんなり解けるのを確認した。C…

2016年振り返り & 2017年のやってみたいこと

Github 芝 比較的よく働いたと思う。 ただしこれはプライベートリポジトリも含めたもので、会社のプロダクトをGithubで管理しているので 思いに会社のプロダクトのRails, iOSあたりを毎日なにかしら書いているので、ほぼ埋まっているのは 当たり前かもしれな…

RustでWebプログラミング No.4 ~ MySQLに接続する~

振り返り 前回 poketo7878-dev.hatenablog.com は、HandlebarでHTMLページをテンプレートから生成し、表示するというところまで作りました。今回は、MySQLに接続してデータを取得し、それをテンプレートに埋め込んで表示するということをやりました。 Iron-R…

RustでWebプログラミング No.3 ~ HandlebarでHTMLテンプレート~

振り返り 前回 poketo7878-dev.hatenablog.com までにRouterで複数URLに対応したHTTPサーバーを建てられるようになりました。 しかし、出力されるのは常に文字列でHTMLのページではありませんでした。 今回はHandlebarというテンプレートエンジンを利用してH…

RustでWebプログラミング No2 ~ Routerをつかって複数ルート~

前回の記事では、非常にシンプルなHelloWorldを表示するだけのサーバーを作成しIronの基礎を紹介しました。 今回はRouterと呼ばれるMiddlewareを利用して複数のURLに対応したサーバーを作成しました。 routerをCargo.tomlに追加 routerを利用するためにCargo…

RustでWebプログラミング No.1 ~ IronのインストールとHello World~

Hello World hello_worldバイナリプロジェクトを作ろう $ cargo new hello_world --bin サーバーはmain関数をもったプログラムに成るので、--binオプションを忘れに付けましょう。 Cargo.tomlにIronを追加する [dependencies.iron] version = "*" まずCargo.…

RustでAPI Wrapperを簡単に書くためのライブラリを書いている

Swiftで書かれたAPKitというライブラリ:github.comは非常に綺麗に作られていて、便利ですし更新も活発なので非常に気に入っていて、時々コントリビュートしながら 自社プロダクトでも採用しているのですが、Rustで遊んでいる時にこれと同じようなライブラリ…

Acmeをベースにしたテキストエディタを書いている

Plan9のAcmeに惚れ込んでしまって こんなマウス www.edikun.co.jp を購入してしまったのですが、やはりいくらかつらみが有るというか、 ネイティブでは提供されているような機能を提供するのが難しいと感じたりする場面が有り Acmeをベースにしたテキストエ…

YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa でスタッフをしてきました!

uzulla.hateblo.jp これを見た当初は「4/1だし...嘘だろ...」と思っていたのですが buildersconでお会いした時に冗談じゃなく本当に開催するつもりだとお聞きし、 「あれはマジなんだ!」という熱い思いに打たれ微力ながらボランティアスタッフとして参加し…

Plan9PortのMacOSX環境での日本語入力のサポートを試みている話

Plan9PortのAcmeに前回の記事でも触れましたがぞっこんなわけですが、 どうしても日本語入力ができなくて嫌だったので、iTerm2やdevdrawのIME対応を試みていたプロジェクトなどを 参考に日本語入力に暫定的にですが対応したという話です。GitHub - pocket787…

Acmeにキーバインドを追加する

Plan9Portを最近良く使っています。AcmeというPlan9のエディタがあり、マウスのクリックをいろいろな場面で利用して非常に 便利なのですが、一方でキーバインドは最小限に抑えられており、どうしても僕には少し使いづらい場面がありました。そこで、Acmeのソ…

地下鉄のカーテン

地下鉄の窓のカーテン有りますよね,カーテン(イメージして下さい)あれってパーリンノイズだよなぁっておもったのでちょっと作ってみました なかなかうまくいかないですがそれっぽくはなりました

Rustで画像回転

Rust言語で画像の回転をしてみようと思いまして, ライブラリを探したところ,https://crates.io/crates/imageというライブラリがあったのですが,画像を中心を軸に自由回転させるものがなかったので自作してみました.アルゴリズムはC言語による画像回転処…

RustでLifeGame

前々からリージョン理論でメモリ管理を解決してるとかで理論的な興味はあったのですが Rustでプログラムを書くということはしてませんでした. が久々にホームページを見ましたらドキュメントも充実しているし,なかなか良さそうになっていたので 早速少しず…

TouchDevelopが面白い

MicrosoftのTouchDevelop、以前から知っては居たのですが、 前使った時はいまいちピンとこない感じだったのでしばらく触っていませんでしたが、 最近久々に触ってみたところ結構使いやすくなっていてここしばらく色々と遊んでいました。 http://tdev.ly/qtfh…

三目並べのMinMax AIをLipsで

三目並べのMinMaxAIを書くという課題が出まして、 言語は不問ということだったのでとりあえずLispで書きました。 探索空間のサイズ 三目並べは最初がAIの手番だとすると、最大9! = 362880のパターンが有るのでしょうか? 最初に9マスの内にどこを打つのか?…

Project Euler 67をHaskellで

module Main where import Data.List.Split readTriangle :: FilePath -> IO [[Int]] readTriangle fpath = do content <- readFile fpath return $ map (map read . splitOn " ") $ lines content prob67 :: [[Int]] -> Int prob67 = head . prob67' where …

0hh1 Solver written in Python

仕事が忙しくてなかなか更新できませんでしたが、先日HackersNewsで 0h h1 – A little logic game | Hacker News0hh1というパズルゲームを見かけまして、ちょっとプレイしてみたところ以外にも面白かったので、せっかくだからSolverを書いてみようと思いまし…

2048ゲームをRubyで

2048というゲームがなかなかプレイするのにも、AIを作るのにも面白そうだったので、 自分でいじれるように書いて見ました。 require "curses" def make_board() board = Array.new(4).map!{ Array.new( 4, nil ) } end def available_pos(board) pos = [] bo…

DIMACS CNFパーサーを書いた。

SATソルバーの実装に昨日あたり興味がわきまして、手始めにデータ構造とDIMACS CNFファイルのパーサーを書いて見ました。ファイルから読み込めるようになると今後開発するときのデバッグも用意になりますものね。 module Main where import System.Environme…

MySQLで削除のCASCADEを確認する

Pythonを久々に復習していました。復習がてらちょっとMySQLに接続してDELETEのCASCADEが連鎖的に影響を与える範囲を一覧するスクリプトを書きました。

JavaのSwingでネストしたJSplitPaneを扱う

今とあるツールを久々にJavaのSwingで書いている時に、複数のコンテンツをパッキングしてその間にサイズ調整の棒を表示してユーザーがリサイズできるようにする必要が生じました。JSplitPaneをあてにしていたのですが、どうも奴は2つのコンポーネントしか扱…

Mozart-Oz v2をMacOSXのHomeBrew経由のEmacs.appでつかう。

Mozart.appが更新されていた。 以前の記事ではMozart 1.4.0という少し古いバージョンをEmacs.appで使う方法について書いていたのですが、Mozartのホームページに更新がかかったことを知り、確認してみるとページも綺麗になりMozart-Oz v2という少し新しくな…

Business Card Raytracer in CL.

Redditを眺めていたらHaskellでRayTracingをしてみたよ的な記事が流れてきました。 So I (kind of) made a Haskell clone of the business card Ray Tracer : haskellその説明を眺めてみると何やら名刺サイズのレイトレーシングというものが話題になっていた…

CodeIQのナムドット問題。僕の回答

結城先生がCodeIQに定期的に出題なさっているのですが、今回のナムドット問題をやってみました。 挑戦者求む!【アルゴリズム】古代文献を復元しよう! by The Essence of Programming 結城 浩│CodeIQ 問題の出力に着目してみると、ドットでくぎられている数…

Oz(Mozart)環境をMacOSX 10.8でセットアップした

Ozという言語マルチパラダイム言語があるようで、あまり僕の周囲にはユーザーがいないように 見えるのですが、それでもOzはすごいすごいと聞くので、体験してみねばという事で開発環境の 整備をしました。最近iOS関連の開発をする事になってMacOSXを使ってい…

ClojureでWebApp開発に必要なN個のこと

PerlでWebAppの開発に必要なN個のこと - Islands in the byte streamのClojure版です。あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だ…

NasmでLifeGame

更新が非常に空きました。久々にアセンブラです。 %include "stdio.inc" section .bss array0: resb 8 array1: resb 8 flag: resb 1 section .text global start start: mov rcx,flag mov byte [rcx],0 mov rax,1 mov rbx,0 mov rcx,1 call setCell mov rax,…

SECD Machine in Lisp

;; List Utilities (defun head (lst) (car lst)) (defun tail (list) (cdr list)) ;; Lambda Expression (defun lam-expr (var body) `(lambda ,var ,body)) (defun is-lambda (list) (and (listp list) (eql 'lambda (car list)))) (defun bv (lam) (cadr …

ちょっとした物

ちょっとした物です。 ちょっとした物その2、オートマトンをDOT言語に。

Generalized LR法をHaskellで Part3

以前の構文木では、途中のスタックの状態を保存していなかったので、出力される構文木では どのような途中のスタックの経過をたどったのかが不明瞭でした。 そこで、すこし更新して、スタックの途中経過を構文木中に保存するようにしたので、 どのようなルー…

Generalized LR法をHaskellで Part2

前回はXML風に木を出力するという機能をつけていましたが、本命はDOT言語に出力する事です。 そっちのほうが確認しやすいからね。というわけで付けてみました。 以下は変更した部分だけ -- ParseTreeをDOT言語として出力 type IndentLevel = Int --- インデ…

Generalized LR法をHaskellで

自然言語処理のGeneralized LR法をHaskellで書いてみました。 {-# LANGUAGE TemplateHaskell #-} module Main where import Data.List import Control.Monad import Control.Lens import Text.Printf -- 終端記号と非終端記号(行末も終端記号としておく) dat…

SuffixArrayを使った簡易検索エンジンやってみた。

文字列の検索アルゴリズムについてしらべていたら、良いチュートリアルを発見したので やってみました。 簡単なWebサーチエンジンの作り方 (defun all-suffix-node (str) (loop for s from 1 to (length str) collect (cons s (subseq str (1- s))))) (defun…

ルービックキューブと置換とHaskell

何度かプログラムを書いてるので、自分のためのまとめ記事(自分への記事なのでけっこうはしょっています) ルービックキューブの各セルの面に番号をわりあてる ルービックキューブの表面には全部で 9x6 = 54個のセルの表面が見えています。 この面の事をセル…

置換の合成

複数の置換を合成したりしたい場面がありました。 symm.hs module Symm(Symmetric(Symm),clean) where import Data.List import Data.Monoid data Symmetric a = Symm [(a,a)] deriving (Show,Eq) conc :: Eq a => [(a, a)] -> [(a, a)] -> [(a, a)] conc as…

複数のモジュールを同時includeした場合の処理を設定するNo.2

前回の記事では各モジュールのself includedの中で明示的にチェックを走らせる必要がありました。これがなかなか面倒だなという事だったので、もうすこし省略された記法で書けるようにしょうとおもっていました。 そこで、探していたところ、メソッド実行を…

複数のモジュールを同時includeした場合の処理を設定する

昨日の記事でCommonLispで複数のクラスを継承したときの設定をしたいという事でMOPで実装をこころみたのですが、どうも困難そうだったので一度Rubyで実装をこころみました class UnionRule def initialize(modules, action_proc) @modules = modules @proc =…

特定のパターンでクラスを継承した時に発動する機能を設定したい

タイトルの通り、あるクラスが特定のクラス(複数可)を継承した時になにか処理を実行させたいのです(たとえば、メソッドを定義したり、ログに出力したり..) で、CLOSならなんとかなるんじゃないかと、ちょっと作ってみています。 (eval-when (:load-toplevel …

ちょっとしたツール

入力された数値の最大と最小を除いた残りの値の平均を出す #!/usr/local/bin/ruby values = [] sum = 0; while line = gets val = line.to_f sum += val values << val end sum -= values.max sum -= values.min sum /= (values.length - 2) puts sum 標準入…

Webページに虫を蠢かせるJavascript

暇つぶしです。書きました function insertBug(bugs) { var $div = $("body"); var $jqObj; for(var i=0;i<bugs;i++){ var x = Math.round( Math.random()*1000 ); var y = Math.round( Math.random()*1000 ); $jqObj = $("<div/>").addClass("bug").attr({'data-x': x,'data-y': y, }).css('top', y).css('left', x).css('background-c…</bugs;i++){>

Prologでオートマトン定義

授業でオートマトンの講義を受けていて、Prologでやると綺麗に書けるなぁ とおもう場面が多々あったのでPrologで書いてみました。 とりあえず0が三つ連続して出現する文字列を受理するオートマトン single([_]). butlast(Xs, []) :- single(Xs). butlast([X …

Macbook Pro early 2011を中古でいただいた。

チーム開発の業務でそろそろiOSを専任でやっていたエンジニアに負荷がかかりすぎているという事で、チーム全体としてもiOSを優先としてプロジェクトを進行していくという事になり僕もiOSアプリの開発に参加する事となりました。 Androidアプリを専門に書いて…

CL向けのCSSセレクターベースのテンプレートエンジン Caramelを作った(作っている)

ClojureのEnliveというテンプレートエンジンはClojureのWeb開発界では有名だとおもいます。 そのEnliveのAPIが綺麗でCommon Lispでも同じようなテンプレートエンジンがあったらなぁ とおもってました。 そこで調べてみるとcss-selectorsというcssセレクタを…

大津の閾値判別法

大津の閾値判別法 (ql:quickload :iterate) (ql:quickload :lispbuilder-sdl) (ql:quickload :lispbuilder-sdl-gfx) (use-package :iterate) (defclass <data> () ((max :initform (error "max must specified") :reader data-max :initarg :max) (min :initform (</data>…

僕が働いているAzit.incでは一緒に働けるエンジニアを募集しています!
採用情報 — 株式会社アジット|Azit Inc.