サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
komamitsu.hatenablog.com
というタイトルですが、具体的には "Rustで拡張ライブラリ全体を書いた" のではなく "Cで拡張ライブラリの本体を書いてその中からRustのライブラリを呼んで、非同期でRust側からの結果を取得" してます。 ちなみに、Foreign Data Wrapper (FDW) とは、PostgreSQL管理外のデータソースにIOできるPostgreSQLのテーブルの一種です。今回の場合 "Treasure DataというSaaSに裏でクエリーを投げて結果を取得するFDW" となります。 github.com なぜこんなことをやろうかと思ったか? もともとはMulticornという "Pythonで外部データソースにアクセスできる処理を書けるFDWフレームワーク" を用いて GitHub - komamitsu/td-fdw: Multicorn based PostgreSQL Foreig
この記事は、Fluentd Advent Calendar 2015 - Qiita の七日目の記事です。 先日、komamitsu/fluency · GitHub というFluentd (in_forward) 用のJava loggerを作ってみました。 元々、fluent/fluent-logger-java · GitHub の開発を見ていたのですが、Fluentd MLで色々と要望があって機能を拡張したい欲が高まったものの既存の実装的に面倒臭そうな感じだったので、ついカッとなってゼロから書いてしまいました。 特徴 特徴としては以下のものがあります。 通常 (fluent/fluent-logger-java · GitHub) より三倍速い fluency_benchmark.md · GitHub 参照 (後述するPackedForwardを利用した場合) Fluentdへの
数ヶ月前から というのを細々と作ってました。 これは何かというと、 msgpack/msgpack-java at v07-develop · GitHub で開発が進められているMessagePack Javaのv0.7系の実装と FasterXML/jackson-databind · GitHub の豊富なデータバインディング機能を連携させるライブラリです。 作った背景ですが、 性能面およびメンテナンス性において大きく改善すべく開発が進められているmsgpack-java v07では、v06まで提供していたある程度のデータバインディング機能を自前で提供する予定が今のところ無いので何かしら必要 そもそものmsgpack-java v06までのデータバインディング機能の機能的な制限が結構辛い といった感じです。 現状でもv06で扱えない色々なケースに対応しているっぽいので便利っぽい(ぽい
とあるgit repositoryからgit cloneしようとしたら以下のエラーが出てしまいました。 error: gnutls_handshake() failed: A TLS packet with unexpected length was receivedで、どうしようか、というメモ。 まず、どうやらgnutlsがエラーを出しているみたいなので、念のため確認と絞り込み。やはりエラーとなる。 $ gnutls-cli -p 443 hogehoge.com Resolving 'hogehoge.com'... Connecting to '123.231.213.123:443'... *** Fatal error: A TLS packet with unexpected length was received. *** Handshake has failed GnuTL
一ヶ月程前に同僚である @doryokujin 先生からRaspberry Pi(面倒なので以下Pi)を頂いたのだけど、Piに必要なSDカードが手元に無くてすっかり放置していたのですが、満を持してSDカードを買ってきたのでちょっとPiを立ち上げてみた。という話を備忘録的に。 必要なもの(というかこれで間に合った、的なもの) USBケーブル RCAケーブル USBキーボード LANケーブル SDカード(SDHD 8GB) startxとか叩かなければUSBマウスは要らない。 Piの立ち上げ 準備に使った環境はMac OX 10.8.5 SDカードは挿してある状態 SDカードの/dev/disk番号を確認してunmount $ diskutil list /dev/disk0 : /dev/disk4 #: TYPE NAME
こんにちは。Fluentd Advent Calendar 11日目担当の @komamitsu です。ワイワイ。 Fluentd Advent Calendarにノリで登録したもののfluentd本体やプラグインに余り関わっていないので途方に暮れていましたが、fluent/fluent-logger-java のメンテナンスをしていることもあり、fluent-logger周りのことを書いてやりすごしたいと思います。 fluent-logger-javaの一年 地味な見出しですね。自分でも書いてみて素でちょっと引きましたが、とりあえずfluent-logger-javaに関連した出来事などを... fluent/fluent-logger-java/commits いくつか細かいバグの修正や改善を入れていますが、その中でもTCP切断後の再接続処理やタイムアウトの問題が改善されているので、地
使ったコードはこちら => https://github.com/komamitsu/AndroidMsgpackBenchmark/blob/master/src/com/komamitsu/android/msgpackexample/MsgpackExampleActivity.java ベンチの概要としては、100byte x 50000の配列、100byte(value) x 30000の辞書をJSON, MessagePackでシリアライズ・デシリアライズしてどんなもんか見てみようかと。 Android2.2(IS06)の場合 I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: serialize start I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: ser
ちょっと最近はインフラ周りでいろいろ調べ物をしていまして、それらのメモなぞを。 SPF (Sender Policy Framework) はRFC4408で扱われている泣く子も黙るスパム対策の一つですが、要は送信元のSMTPサーバーを指し示しているDNSの方で以下のいずれかの設定をしておくと、受信側のSMTPがチェックをして信用して受信したり、破棄したりする仕組みです。 example.com. IN TXT "v=spf1 +mx a:colo.example.com/28 -all" example.com. IN SPF "v=spf1 +mx a:colo.example.com/28 -all"で、本題は「どうやって、うまくSPFの設定ができているか?」をテストする何かを探していたところ、http://www.openspf.org/Tools に纏められていたので、メモしとき
http://mediaelementjs.com/ 眠いのだけども、READMEのままやったらはまったので素っ気なくメモを。 1. githubからcloneするとbuildディレクトリの下にjs, cssとかあるので、その中から以下のファイルをpublicなところにコピー flashmediaelement.swf mediaelement-and-player.min.js mediaelementplayer.css controls.png 2. <script src="jquery.js"></script> <script src="mediaelement-and-player.min.js"></script> <link rel="stylesheet" href="mediaelementplayer.css" /> 3. audio/videoタグを書く際に必ずi
Wifi環境であればPCからAndroidにアクセスできるはずで、すなわちAndroid上にWeb server立ててPCからアクセスできるんじゃないかなぁ、と思ったのと、NanoHTTPD has moved to github という酷くかわいいhttpd(Java source file一枚!)を見つけてしまったので何か作ろうかと思い立ったので試してみました。 XML的なところは適当に... 今回はアクセス元のHTTP-Request headersを画面に表示してみてます。 で、Activityはこちら(同じpackageにNanoHTTPD.javaを置いてます) 起動させたところ PCからブラウザでアクセスしたところ(このときブラウザには "Hello, World" 的なh1が表示) ということで、めちゃめちゃ簡単にAndroidがWeb serverになりました。何だか色々
Test project も Jenkins上で build & test できたので、忘れないうちにメモ。とはいえ、力つきそうなのでザックリと。 Android test projectの作成(local PC) やりかたは色々あると思うけど、今回は まず、Eclipse上で、Android test projectを作って 以下を参考にpom.xmlを作って、convert to Maven projectした。 http://code.google.com/p/maven-android-plugin/wiki/AutomateAndroidTestProject Maven projectにconvertすると、srcディレクトリ直下がSource folderから外れてしまうので、src/main/java とかに移動した。 あと、どのdevice上でテストするかを指定するため以
iPhoneでよくある例のやつです。 Androidでは標準で無いので自前で何とかしないといけなさそうですが、どうもサンプルコードが見当たらないのです。悲しい… 嘆いていても仕方が無いので自分で書いてみました。 ImageWithBadge.java package com.komamitsu.android; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class
いろいろと初期設定のままだと全然コードが見えないので hi DiffAdd ctermfg=black ctermbg=2 hi DiffChange ctermfg=black ctermbg=3 hi DiffDelete ctermfg=black ctermbg=6 hi DiffText ctermfg=black ctermbg=7 とかにして幸せ。
ここ半年位、Android Appを開発しています。関係者一同の頑張りもあって100万ユーザーという非常にうれしい状況なのですが、結構なハードスケジュールで開発が進んだので割と力技で泥臭く実装している箇所があったりします。Database周りもゴリゴリSQL文を書いてたりするのですが、できればOR Mapperを使いたかった... という反省点があり、少し落ち着いた (のか...? 本当に...?) 今のうちにそっち方面を調べておこうかと思います。 Androidではそのスペックの都合上, 軽く動作するOR Mapperが向いていそうです. そういう視点で色々探して見たところORMLite (http://ormlite.com/) が良さそうな気がしました. ORMLiteの他にはActiveAndroid (https://www.activeandroid.com/) というActi
http://d.hatena.ne.jp/komamitsu/20090422/1240413644で コードの違いからするとガベコレのタイミングでTCP close()しているようにも思えるけど、Rubyではデストラクタがないからなぁ… どうやってるんだろう? って書いたのだけど、そこ「ガベコレのタイミング」だったら対応するのは「Finalizer」だYO!!! > 自分 ということでRubyにはObjectSpace.define_finalizerがあるのでした。 こんなコードを書いて… class Demo def self.cleanup lambda {puts "finalized!"} end def initialize @a = "abcdefg" * 1024 * 1024 * 2 ObjectSpace.define_finalizer(self, self.cl
Spring frameworkを使うとDBまわりのコードがすっきりするらしいので、練習兼メモがてらサンプルを書いてみた。 RDBMSは何でも良いのだけどPostgreSQLで。適当なテーブルを用意しておく。 sample=# \c psql (8.4.4) You are now connected to database "sample". sample=# \d users Table "public.users" Column | Type | Modifiers --------+-------------------+----------- id | integer | name | character varying | age | integer | ValueObject(っていうの?)はこんなの。 public class User { private final in
最近、NoSQLと分類されるRedisで遊んでいるのですが、レプリケーションをさせてみるメモを残そうかと。 まず、masterとslave用の設定ファイルを作成します。ほとんどデフォルトのままですが、ファイルが衝突しないように変更しているの、とレプリケーション用の設定だけ変えています。 redis-master.conf daemonize no port 6379 bind 127.0.0.1 loglevel verbose logfile stdout save 900 1 save 300 10 save 60 10000 rdbcompression yes dbfilename dump-master.rdb dir /home/komamitsu/tmp/redis appendonly no appendfsync everysec vm-enabled no vm-swa
http://shinh.skr.jp/m/?date=20100516#c01 の kosakiさん情報が、有用過ぎるので抜粋。 InactiveはActiveと比べてアクセスビットの有無を先にチェックするという意味しかないのでActiveとInactiveを分けて考えるのは意味がありません 参照なされている記事*1はその点が間違っており SreclaimableやSUnreclaimableはActiveにもInactiveにも合算されていない ページキャッシュはActive/Inactiveという分類と、ファイルキャッシュとAnonという2つの分け方があって スワップアウトがダメで単に捨てればよいページ量が知りたいなら、Active(file)+Inactive(file)+SReclaimableでよい 最近だとActive/Inactiveは(anon)と(file)の2つに分か
という需要が良くあるのだけど、標準のSDKのライブラリにはピッタリのものがないので、それっぽいものを書いてみた。 まず、画面のレイアウト。今回はListActivityを使うのでそのように。今回の本筋とは関係ない。 layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_width="fill_parent" android:layout_
寝る前にどうしても試してみたかったのでもう一つ。 Linuxでは読み書きしたファイルがページ単位で余裕のあるメモリにキャッシュされる、という話は知っていたのですが、仕組みについてはあまり理解していませんでした。 で、例の本でとてもわかりやすく実験方法も書いてあったので実験してみます。 まず、そのまえにページ・キャッシュの仕組みをメモ。 ページ・キャッシュにはページの活性*1を表すActive/Inactiveという状態と、ディスクとの同期状態を表すDirty/Writebackという状態がある。 ページの活性は、Active(2) > Active(1) > Inactive(2) > Inactive(1)、の順で高い。初回の書き込みでInactive。その後、Readされる毎にActive方向に遷移していく。 ページがwriteされると、Inactive(2)に遷移。ページが回収されて
タイトルの後半は尾ひれです。 RubyのNet::HTTP#propfind経由でWebDAVのPROPFINDメソッドを呼べば良いのですが、Web上に個別の情報(WebDAVとRuby)があるもののつながった情報が見つからなかったのでメモ. Webサーバーに依存するかもしれないけれど、とりあえず以下のコードで一覧表示できた. require 'net/http' require "rexml/document" Net::HTTP.version_1_2 req_body = <<-EOS <?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <!-- D:allprop/ --> <D:href/> <D:prop xmlns:lp1="DAV:"> <lp1:getlastmodified/> </D:
元旦の夜だっていうのにこんなしょーもないことで一時間半も… クライアント機からTCP/IP経由で全然接続ができない… 最近MySQL全然使ってないのでよぉわからん… そんな夜に。 mysql.userテーブルのuserとhostカラムを何度も何度も確認して、Enter passwordも指一本で丁寧に丁寧に押してやっても、こんなエラーしか返ってこないときは十中八九これが原因、と言いきってやる! DBサーバのmy.cnfに、 [mysqld] bind-address = クライアントが接続できるIPアドレスと書くべし!書くべし!書くべし!なければMySQLのベースディレクトリっぽいところに作っちゃえばおk. そのへんは雰囲気で。 これが書いていないとlocalhostからしか接続ができないみたい。 あ。 明けましておめd
Linux2.4以降ではmountコマンドで--bindオプションが使える。 mount --bind olddir newdirとすると、マウント済みのolddirがnewdirに再マウントされ、シンボリックリンク的に扱える。 これの何がうれしいのかというと、vsftpdとかでchroot_local_user=YESしていて、chroot外にアクセスさせないようにしているにしつつ、一部のchroot外ディレクトリにアクセスさせたいような場合。 シンボリックリンクだと当然chrootの外だと扱われて「550 Failed to change directory」となるのだけど、mount --bindだと当該ディレクトリがchroot内の一ディレクトリとして扱われるのでアクセス可能になる。
意外な落とし穴が。 リバースプロキシしたRailsアプリの一つでは、手抜きでBasic認証の環境変数REMOTE_USERを利用しているのですが、Mongrelでは認証出来なさそうだったので、Apacheに認証させるようにしました。 すると、当然のごとくRailsにはCGI環境変数のREMOTE_USERが渡らなくなってしまうという… で、いろいろ情報をあつめてみたら、Apache, REMOTE_USER, and Mongrel - Ruby Forumというのを発見しました。 結局、ちょっと手直ししてこんな感じに。 RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule . - [E=RU:%1] RequestHeader set X-Forwarded-User %{RU}eやっていることは以下かと思いま
xevを起動してから無変換キーを押してkeycodeを調べる。 仮に131だった場合、$HOME/.Xmodmapに以下を書く。 keycode 131 = Escapeすぐに使いたければxmodmap ~/.Xmodmapなど。
GNU Screenはその昔、画面の水平分割はできていたものの垂直分割する機能がなくて、数年前に実装されたもののCVSでソースを落としてコンパイルする必要があったらしい。 で、その認識のままだったので、Utuntuのaptitudeで入れたやつだとダメなのだ、という思い込みがあったのだけど、何気なく試してみたら垂直分割できていてちょっとびっくりした。 すると、screen起動時に画面が適当に分割されてほしい欲がでてきたので、.screenrcをいじっていた。 ところが… 水平分割のコマンド=='split' というのはmanpageにも書いてあるのだけれど、垂直分割のコマンドが見当たらない。最新のソースコードを落としてきて'split'やら'|'(垂直分割用のkeymap)をgrepしてみたのだけど、それらしいのが見当たらん。 めげずにソースコード調べていたら分かりました => "spli
会社の同僚がThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーションを持っていたので、先日借りて読んでみた。 Web上で、この本を読んだ感想をちらほら見かけるけれど、各人興味をもつ章がバラバラなのが面白い。プロジェクトとは?的な話からDSLや性能テスト技法まで、章ごとに内容が分かれているので自然とそうなるみたい。 私の場合は、特に1章と12章、あと6章が興味深かった。 1章は、「システムが稼働可能な状態になってからビジネス的な価値を生み出すまでの状態」である「ラストマイル」について書かれているのだけど、そもそもThoughtWorks的な「プロジェクトのライフサイクル」のとらえ方というのが、個人的に非常に参考になった。もちろん、どの組織に対しても同じやり方を適用すべきではなく、組織の規模や顧客の性質などにより最適解は異なると思うけれど。 12章は
shellを実行した結果を埋め込む(readでも可、埋め込み場所はrの前に(「:$r !ls」とか)) :r !date yankの前に、レジスタを指定することができる。 たとえば、とある行をbレジスタに入れたい場合は、「"byy」で入れておいて「"bp」とかでペーストできる。 その他のレジスタはこんな感じ 0 => 最後にyankしたテキスト . => 最後に挿入したテキスト % => 現在のファイル名 / => 最後に検索した文字列 : => 最後に検索したコマンド * => クリップボードついでに:regstersで内容の一覧が見れる。
このページを最初にブックマークしてみませんか?
『komamitsu.log』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く