せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

技術

Vket2023wに出展した話

この記事は どもがよアドベントカレンダー2023 の24日目の記事です。 23日目はあおたくさんのルタバカを食べるでした。 野菜が食べられてえらい!!!(偏並感) てか「ジャガイモとカボチャの中間のような食感、カブやキャベツのような旨みと風味がある」味…

【Arduino】比較演算が極稀に失敗する不具合に遭遇した話

これはここ数年Arduinoでの開発をやっていて、一番不条理だと感じた不具合の話です。 単純な比較演算処理に失敗する――そんなことが起こり得るのか? 順を追って説明していきます。ちなみに本件ではSparkfun社製Pro Micro(5V/16MHz、チップはAtmega32U4)を…

【Arduino】「I2Cを使ってるとdelay()が効かなくなったぞ?」となったら、それは二重割込みのせい

最近の業務は、Arduinoなどのマイコン用ファームウェア開発がメインになってます。 マイコンでは色々と低レベル*1なところに気を配らないといけないので大変です。 今回はそんな体験談を一つ。 *1:「機械部分に近い」の意

Sinatraで肥大化したファイルを分割する

Sinatraを使ったPJ*1で、あまりにも一つのファイルに色々突っ込みすぎていたので、ファイル分割をメインとしたリファクタリングを実施した。 その際の備忘録。ディレクトリ構成は長くなるので割愛。 やったこと バッチファイル cronで実行するバッチファイル…

SinatraとVueの黒魔術化

お前が○○んだよ?ジェネレータ次なる実験場はこのジェネレータ。 ベースにSinatraを使っているので、そこに乗っける形でVueによるSPA化を施していく。ぶっちゃけ、下記ページに必要なことは8割方書いてある。qiita.com qiita.com以下、備忘録 index.htmlの返…

Vueいじってみた

せらぴんjp.vuejs.org今更ながら「Vue.jsを使いたい」という欲求を満たすため、自分のサイトをゴリゴリ改造しました。 従来mithril.js(in livescript)だったものを、Vue.js+Vue-router(in javascript)に変更してます。 以下、備忘録。 開発の流れ/詰まった…

遅延処理に使えそうなgem

業務で遅延処理が必要だったので、Rubyで下記のような感じで実装しました。 遅延処理の情報(実行メソッド、実行予定時刻、パラメータ)をDBのワーカーテーブルに書き込む ワーカースレッドがワーカーテーブルを定期的に読み込んで処理を実行する 業務が終わ…

処理速度を向上させようとして失敗した話

気付けばもう2018年です。 去年は結局ブログのエントリを1本しか出しませんでした。 ブログのエントリは、twitterよりはまとまった話がしやすいですし大概追いやすいので、少し去年の四方山話をまとめておこうと思います。 閑話休題。 去年の12月、実装して…

rubyでシリアル通信するとき、ケーブルが抜けるとどうなるか?

Bye Bye Mooreに倣って技術系の記事をたくさんつけてミントス。ここ最近、Arduinoとサーバを、RasPiを中継機として繋げる作業をしています。 Arduino.Ethernet? 知らんなぁRasPi(の上で動くruby製ソフト)とArduinoはUSBケーブルを介してシリアル通信でやり…

続・透過PNGをマスクにしてクリッカブルマップを作ろうとしたが挫折した話

あらすじ unohanat.hatenablog.comムキイイイイイイイイイイイイイイイ!! どうにかならないか調べてみた 「イメージマップを楽に作れないか?」と検索をかけてみると、結構対応策あるみたい。tsudoi.orgwww.vector.co.jpとりあえず両方試してみました。 使…

透過PNGをマスクにしてクリッカブルマップを作ろうとしたが挫折した話

図にするとこんなことをやりたかったがダメだった。 アルファチャンネル付のpngを複数枚用意する それぞれのpngに別々のページをアンカーする cssでpngをすべて重ねる pngで透明な部分は重なった後ろの方のpngにフォーカスする(といいなぁ) →透明な部分に…

何も考えない直訳ほどナンセンスな名付けはない

大規模PJでは画面IDを元にクラス名設計をする場合が多々あります。 それはそれで鬱屈とするのですが、それよりも厄介なのが画面名を直訳してクラス名をつける*1というパターン。この“直訳”というのがミソで、例えば下記のような画面があったとします。 ユー…

DXRubyでポーカーを作った

この記事はDXRuby Advent Calender 2014の11日目の記事です……のはずがもう日を跨いでいます。ごめんなさい!!前回はみれいゆーさんの「DXRubyで成長曲線と父母遺伝の再現、描写」でした。専門的な内容であまりわかってないのですが、これを利用すれば人生シ…

セッションにまつわる失敗談

以下備忘録。 Tempdata衝突地獄 ASP.NET MVCのTempdataはSessionの代わりに使えて、かつ一度利用したら勝手に消去されるという使い勝手の良い存在です。リダイレクトする場合などに使えば効果抜群。 しかし、注意しなければならないのは以下のような書き方。…

うのはな、demadoの存在を知る

demadoまた車輪の再発明をしてしまったぜ。

俺タワーウィジェット公開しました

俺タワーウィジェット俺タワーウィジェットの反応が割と良さそうなので公開しました。あなたの俺タワーライフをちょっとだけ気軽に楽しく! 実際のところ 「気軽にできる」ことはゲームをプレイする上で重要なファクターだと思います。 部屋の片隅で埃をかぶ…

俺タワーウィジェット(もどき)を作る

俺タワーウィジェット(もどき)、できました。 自分用なので特に一般公開とかは考えてませんが。 追記(2014/11/01) 公開しました! よかったら使ってください。 なぜ作った? デュアルモニタを活かして、サブモニタで艦これと俺タワーを並行表示で楽しも…

polymorphicなモデルをjoinできるメソッドがほしい

RubyのActiveRecordは、ポリモーフィック関連というクッッッソ便利な機能があります。 例えば「ブログの記事にタグを使いたいなー、あ、でもブログ自体にもタグを使いたいな―」といった場合に、TagモデルをEntryモデルでもBlogモデルでも使えるようにしちゃ…

Rspecのbe_***表記は引数を受け取れる

nil?やblank?をRspecで使用する場合、以下のような書き方ができます。 expect(flash[:alert]).to be_nil nil?やblank?は引数がないからいいけど、引数があるinclude?なんかも同じように書けるのか、ちょっと疑問に思ってました。結論から言うと、以下のよう…

Rspec、expect表記移行での修正点まとめ

Rspecがshould表記からexpect表記にシフトしてしばらく経ちましたが、本日Rspecを実行するとかなりの数のエラーが検出されました。どうやらshould表記のままではエラーが出てしまうようなので、すべて修正する羽目に。後学のために、今回修正した点をざっと…

astahのスケルトンコードはListを理解できない

astahってスケルトンコード作れるんですよ。 「クラス図を書くだけでコードまで作れるなんて素晴らしいじゃないか!」って思ったものです。 大きな間違いでした。なぜかというと「astahではメソッドの戻り値と引数にジェネリクスを指定できない」から。例え…

遭遇したら全力で逃げるべきプロジェクトの特徴

「Webサービスを作ろう!」という時に、「これだけはやってはいけない!」という教訓を経験したのでまとめます。こんなプロジェクトを見たら即刻逃げましょう。 1.O/Rマッパーを利用しない 例えばこんなプロジェクト。 Railsで作るのにActiveRecordを使用…

sinatraPJをherokuにデプロイする

自作のWebアプリケーションをherokuにデプロイするのに非常に苦労したので備忘録。 1.TOP画面が表示されない! ⇒サブブランチをpushしていたためと思われる。 解決策:masterブランチをpushする 2.git push heroku masterに失敗する! ⇒production環境で…

デュアルモニタの座標ズレをなくそう!

お悩み編 デュアルモニタを使っているのですが、上図のように仮想と現実の座標ズレに常に悩まされておりました。 これなんとかならないものか……。ちなみに画面解像度の設定はこんな感じ。 解決編 外部ディスプレイを接続して、デスクトップ領域を増やしたと…

SVNを導入してみた

前回の記事で、「バージョン管理ソフト使わなかったからひでー目にあったわぁ」とゴチっていましたが、先日上司から「前のPJのソースバージョン管理ソフトに登録しといて」とのお達しがあり、喜び勇んで取り掛かりました。しかしここで一つ問題が。うちの部…

バージョン管理ソフトにまつわる失敗談

バージョン管理ソフトはソフトウェア開発に必要不可欠です。ですが小規模PJだと構築の初期コストをケチってsvnをまったく使わず開発に取り掛かる、という事態があるようです。「ホントにそんなPJあるのかよ……」と思われるかもしれません。当の本人が言ってい…

【FTP】パッシブモードと見せかけてアクティブモード

「クライアントからサーバにパッシブモードでファイルを転送しようとしたが、途中で425エラーが出てきてしまう」という話があった。 この時クライアントのファイアウォールをOFFにすると、なぜか転送に成功する。ソースは以下のとおり。 package testProject…

備忘録(2012年度PJ)

去年の炎上PJでの備忘録 1. 一括処理は個別処理を再利用できるように設計しろ 今回開発したのが一括取込処理。個別の登録処理は画面上から行うのですが、画面処理がフレームワークに則っている関係かほぼ再利用不可。しょうがないので個別処理と同じことを一…