基本機能だけです。 import qualified Control.Monad as CM import qualified Data.Maybe as DM import System.Directory (doesFileExist) import System.Environment (getArgs) import System.FilePath (getSearchPath, ()) findExe :: String -> IO (Maybe…
String,ByteString,Textの速度比較を行うために、wc -lを作ってみました。 用意したコードは下記の通りです。 mywc_text.hs {-# LANGUAGE OverloadedStrings #-} import Control.Applicative ((<$>)) import qualified Data.Text.Lazy as LazyT import quali…
前回作ったtailがあまりにも遅過ぎて酷かったので、全面的に書き直しました。 mmapは使ってません。conduitは使ってます。 {- - 方針 - Sourceでは、seekして後ろから4096バイトずつ(又はファイルサイズの1/10バイトずつ)取得する。 - Conduitで、後ろからn…
conduitを試しに使ってみようという事でtailコマンド書いてみました。 やれることはファイルの後ろから数行を表示するという基本だけ。 引数の処理はテキトーなので行数指定必須です。クソです。 {-# LANGUAGE OverloadedStrings #-} import Control.Applica…
git rebase -iで過去を改竄する。 git rebase -i ブランチ名 で過去のコミットを編集することが出来ます。 細かいことはこちら古いコミットを書き換える: 歴史修正主義者のための git rebase -i 入門 - 学習する機械、学習しない人間 Next Generation。 git…
http://blog.michaelrueegg.name/?p=209 こちらで紹介されているコンパイラプラグインを使うと、ページ下部の画像に表示されているような感じでhlintの出力する情報がvim上に表示されます。
import Graphics.UI.WX import Graphics.UI.WXCore main :: IO () main = start $ do r <- xmlResourceCreateFromFile "hoge.xrc" wxXRC_USE_LOCALE f <- xmlResourceLoadFrame r objectNull "hogeFrame" b <- xmlResourceGetButton f "hogeButton" set b [ …
GCJJ決勝のB問題を解いてたら解けなくて気づいたらここに辿り着いてたのでメモ。 冪剰余計算 import Data.List bits :: Integer -> [Integer] bits e = reverse $ bits' e where bits' 0 = [] bits' x = (x `mod` 2) : bits' (x `div` 2) binaryMod :: Integ…
PEGとか知らないけどPeggy - The Parser Generator for Haskellを見ながら書いてみた。 思うところは色々あるけどもう今日は終わりたいから書いておく。 {-# LANGUAGE TemplateHaskell, QuasiQuotes, FlexibleContexts #-} import Text.Peggy main = print .…
※gdgdやりながら何とか動いた時の手順をまとめた自分用のメモなので、正規のやり方では無い可能性があります。 なお、ubuntu11.04での話です。 wxWidgets ./configure --enable-mediactrl --enable-unicode make make installでインストール。ここまで問題な…
RWHでモナド変換子とか色々覚えたので、それらを使ってマルバツゲーム作ってみた。 {-# LANGUAGE GeneralizedNewtypeDeriving #-} import Control.Applicative import Control.Monad.Error import Control.Monad.Instances import Control.Monad.State impor…
例えば、 git clone ssh://foo@hogehoge:ポート番号/barってする。
uiはuiLoaderを使う。 qtスクリプトは普通に読み込む。 qrcファイルは一旦「rcc -binary my_application.qrc -o my_application.rcc」とかやってrccファイルを作り、実行時にregisterResourceを使って読み込む。
qtHaskell-1.1.4はbuildスクリプトがghc7に対応していないので、Adminpanelを見て手作業で進めていきましょう。 またrunhaskell Setup.hs buildを実行すると、途中でQtc/Core/Attributes.hsで以下のようなエラーを出します。 Qtc/Core/Attributes.hs:583:13:…
sudo mount -t iso9660 -o loop ISO_DIR MOUNT_DIR
IPv4の場合の逆引き use Socket; gethostbyaddr(pack('C4',split('\.', $ip)), AF_INET); IPv6の場合の逆引き use Socket6; gethostbyaddr(inet_pton(AF_INET6, $ip), AF_INET6); とりあえず、やり方だけ記録。
JPEG開くのに失敗する!と散々困って終わってみれば以前にもやったような気がしなくもない事だった。 次の画像形式をQtで扱う場合、QtHoge.dll以外にplugins/imageformats以下に入ってるdllが必要になる。 GIF ICON JPEG MNG SVG TIFF 上記の画像形式を扱う…
setWindowOpacityはウィンドウそのものの透過率の設定。 ウィジェットを個別に透過させたい時は次の方法を取る。 // パレットを設定しautoFillBackgroundを利用して透明色で塗りつぶす。 widget->setPalette(QPalette::Background, QColor(255, 255, 255, 12…
※とりあえず動いた所までのメモなので、セキュリティが甘い可能性があります。 sudo apt-get install postfix でインストール。 すると何やら初期設定の種類を聞かれる。 テストが目的なだけなら「ローカルのみ(local only)」を選択。 localhostのみから外…
体験版がLynx3Dに入っていて、自分のイメージするスケジュール登録方法とこいつの宣伝文句がかなり一致していたので試しに使ってみた。 結果:メールからスケジュール登録する方法で紹介されてる例文の名詞と件名だけ入れ替えた文章を全力で無視した。 全く…
qmakeのproファイルにて以下の変数を設定する。 QMAKE_LFLAGS_RPATH QMAKE_RPATHDIR 例えば、proファイルにQMAKE_RPATHDIR=/opt/myqtと設定すると soファイルの検索リストの先頭に/opt/myqtが追加される。
auto lambda Rvalue references (without for *this) decltype Right angle brackets Local and unnamed types as template arguments Extern templates Static assertions
// システムアイコンの取得 QIcon icon = QCommonStyle().standardIcon(QStyle::SP_HOGEHOGE); // ファイルに設定されたアイコンの取得。 QIcon icon = QFileIconProvider().icon(QFileInfo(FILENAME)); ディレクトリのアイコンはシステムアイコンに含まれて…
ps2pdf -dEPSCrop hoge.ps hoge.pdf これでPSファイルのBoundingBoxのサイズに合わせたサイズのPDFが作成される。 PSファイルのBoundingBoxのサイズをgrepして確認し、ps2pdfに-gWxH(W,H共にBoundingBoxの10倍の値が良い)を渡して手動設定も出来るけど2手間…
南米発のツールがIT業界に与えるインパクト | 日経 xTECH(クロステック) 某所経由でこんな記事を発見した。 世界はRADな流れだし、いいんじゃないの? どの程度応用性があるか次第やね。その辺が期待できなさそうだけど。
buildスクリプトを使ったインストールだとcabal --globalでインストールしようとする。 従ってHOpenGLとParallelが同じ条件でインストールされていないとうまくいかない。 ユーザーローカルにインストールしようとすると面倒くさそうなので、システムにイン…
日本語訳何て言うの。 何やらMonadを扱う関数は下記の3つのルールを守れという事だそうな。 return a >>= f が f a と同義。 f >>= return が f と同義。 f >>= (\x -> g x >>= h) が (f >>= g) >>= h と同義。合成の優先順位が変わっても問題ないように、と…
基本的には、(>>)::(Monad m) => m a -> m b -> m bの連鎖のシンタックスシュガー。 ※以下に現れるfsは処理の集まりを表す。 do{f}→f do{f; fs}→f>>do{fs} ただし以下の特殊な動作になる場合が存在する。 do{let decls; fs}→let decls in do{fs} do{x >= g
整数型の無限リストという形で疑似乱数が欲しかったのでXorShiftで作ってみました。 これを作る過程でData.WordとBitsを使いましたが、使いやすくてすごく気に入った。 ちなみにC/C++の^記号がXORを意味するのを忘れていて無駄に時間を食ったのは内緒。 impo…
例えば『空白区切りで並んだ数値文字列の合計を算出して、それをリストに格納したい』時。 以下のような処理を行う。 -- 仮に結果を単精度浮動小数点数としておく。 plus :: String -> [Float] plus = foldl f [] . words -- (1) where f (x:xs) d = (x + (r…