サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
blog.gijutsuya.jp
はてぶ見ていたら下記の記事があったのだけど色々モヤッとしたコードだなと思ったのでリファクタリングしてみる。どうしてもDDD界隈のコードは見るとどうしてもモヤッとしてしまう感じがする。 panda-program.com もともとのコード 普通に考えたらこうなるのでは そもそもモデリング上の値オブジェクトは何を指していたのか もっと値オブジェクトは自由でよいのでは 蛇足 追記:無理やりgenericsで型を使ってみた 追記:phantom typeを使ってみた もともとのコード 元記事のコードは動かないので、最後の一行以外は動くように適当に変更している。 元記事の趣旨は、このコードであればDollarとYenという違う単位のものを計算しようとするとコンパイルエラーになるから良いということである。しかしながら、このコードを見るとぱっと見て下記の欠点がある。 DollarとYenは非常に似た性質
最近DDDや値オブジェクトやドメインオブジェクトの定義が一部界隈で話題です。kumagi sanとかとじゅんさんの間で熱い議論が何日にも渡って繰り広げられています。 kumagi.hatenablog.com blog.j5ik2o.me kumagi.hatenablog.com kumagiさん眠たいんですが…。続きは明日でもいいですか。 — かとじゅん (@j5ik2o) 2022年5月19日 大変ですね! ぼくも違うチャネルでkumagi sanに色々理解をぶつけてみたものの全然違うようで色々と教えてもらったりしました。 しかしながら、これ実際どこでどう使うのかなと。大先生がこんな事を言ってました。 言葉遊びしてるんじゃねえんだぞ、動くものを作れ — Yoshi Yamaguchi (@ymotongpoo) 2022年5月19日 というわけで、最近書いたコードを題材にちょっとリフ
NFT界隈っていろんな議論が行われていてよくわからないと感じませんか。僕はよく感じています。たまにははらじゅんの長文が読んでみたいと言われたのもあり、つらつらと思うところを書きつつ、会話が成り立っていないポイントの指摘とNFTなどに対する私の所感を表明してみたいと思います。 目次 NFT界隈の噛み合わない希少性や所有権の考え方 NFTの希少性はNFT自体の希少性である NFTで所有や希少性を管理したバーチャル世界は効率的か どんどん概念化するNFT NFTは道具だけど、使い方が謎。みんな妄想でしゃべってる。 補足 NFT界隈の噛み合わない希少性や所有権の考え方 NFTやメタバースの定義や効用とされているものは多岐にわたっている。先日バズったkumagiさんの記事に例として上がっていたものをピックアップしただけでもそれなりに色々書かれている。 希少性を担保する 所有権を現す バーチャル空間の
※下記は2020/06/20時点の情報によるものです 厚生労働省から新型コロナウィルス接触アプリが公開されました。 www.mhlw.go.jp ざっくり何ができるかというと、コロナ感染者と過去2週間のうちに濃厚接触したかどうかを判定してくれます。 一方で、「プライバシー大丈夫なのか」と言った懸念が出ているようです。なるほど id:yugui さん賢い。情報公開請求。 blog.yugui.jp www.itmedia.co.jp 一定レベルアプリの挙動を見ればどう言ったデータを送っているのかをみることはできるので、試してみました。 結論としては、今回10分くらい観測した範囲では下記のことは確認できました。 基本的にiOSに実装されているCovid19向けのAPIを利用しており、厚労省の接触確認アプリが独自仕様で個人情報を取得しているわけではない(?) 接触確認アプリがBluetoothで
id:shinyorke さんの下記の記事を読んで、僕のテクニックも公開してみようかなと思い。 shinyorke.hatenablog.com 個人的な挫折する理由 僕の場合、一番の理由は業務量の上下が激しいというところに根本原因があります。忙しくなると自分が何してたのかを忘れがちなんですね。これをもう少し分解すると下記になります。 当初の目的や面白いと感じたことを忘れてしまう 作ろうと思ってた機能や、検討の進捗を忘れてしまう。 コーディングの状況を忘れてしまう。 忙しいのは頼られているということでいいことではあるのでしょう・・・ 対策: 思ったことや考えを書き留めておく 僕はBOOX Nova2 7.8 ePaperを使っており、どういったことを実現したいのか(Vision)やどういった体験を実現したいのかを整理したり、どういった体験になるのかを手書きで書き出します。 書き出した段階で
タイトルは若干釣りです。ドラフトなので、意見があったら適当に修正して行くと思います。 たまたまここ一週間くらい、人生で初めてプログラムを書く人達のコードを拝見する機会があったのだけど、だいたい共通する失敗は多い順に並べるとこんな感じでした。そもそも全く分からないというのは除く。 かっこの対応がおかしい。数があって無いとか。 インデントが全くおかしい。 セミコロンの打ち所が理解できてない。 メソッド(関数)を使う意味が分からない。 最初の3つは、eclipseとかが勝手に直してくれそうなものですが、なぜかそれがうまくいかないみたいです。そこでふと思ったのですが、根本的にプログラミングを書くための作法や道具の使い方というものはあまり解説されていないのだと気づきました。 業務でプログラミングを行う人というのは、大抵の場合推奨環境というのが用意されているはずです。例えば、eclipse使いましょう
ドラフト。ドラフトじゃなくなることはあるんだろうか。コメント求む。 XSS対策手法のひとつの提案 概要 XSS (cross site scripting)というのは、特にwebプログラミングの文脈でよくつかわれる、セキュリティホールの一種である。webプログラミングが一般的になった現在でもこのセキュリティホールは頻繁に発生しており、必ずしも素人だけがしてしまう失敗とも限らない。近年で有名な例としてtwitterでの事件がある。 >本投稿では、XSSの事例と背景について説明するとともに、その対策として「コンテキストを減らす」「コンテキストごとのエスケープ」「安全なプログラミングの手法」を示しひとつのXSS対策の指針を示す。 また最後に、もともこもない対策方法として「base64で対策したらこうなった」という話をする。 本投稿は、「安全な」対策方法としてはまだ開発段階にあり、鵜呑みにするのは
実際はホスティングなんですが。 gyazoって知ってますか?masuiさんが開発された驚異的な便利ツールです。 実はこれGPLでオープンソースになっています。 自宅サーバでgyazoを運用するためのtipsです。 当方macなので、クライアントがmacでserver側はrack(rubyのアプリケーションコンテナ)を使うようにしています。 さて、自宅サーバでgyazoをするメリットとは。 情報漏洩リスクが低い basic認証かけたりできる 社内の情報共有ツールとして使う ログがとれる などなどでしょうか。 情報漏洩リスクは、低いと言えば低いんですがgyazo.comは本質的には情報漏洩リスクがあります。 どっかの会社ではあまり気にしないで使われてるんですが、twitterがコンプライアンス違反ならこっちの方が余程リスクが高い気もします・・・・(細かい話はまた別で だから、自分で運用す
とりあえずな対応ですが・・・・ 使ってる環境がruby1.9.2trunkとrails3.0betaなんですが、残念ながらredmineはrails2.3.5とruby1.8.xでしか動かない。 とりあえず動かしてみたところ、基本的にひっかかるのは文字コード周りであることがわかったためちょっと修正してみたらだいたい動く感じになりました。 ポイントは gitを使う rails2.3.5をvendor/railsに入れる Stringを拡張する Encoding.external_encodingをUTF-8にする postやgetの値paramsを全部force_encoding("UTF-8")する です。 gitを使う redmineを直接いじるのでバージョン管理する方がおすすめです。 git clone http://github.com/edavis10/redmine.git この
ポールグレアムの「知っておきたかったこと」に引っ掛けて、すごく卑近な就職活動について知っておきたかったことをまとめようと思います。 あまり具体的な企業名とか自分のスペックについて書かないのであまり面白くは無いかもですが、誰かの役に立つかもしれないと思い書いておこうと思います。 1, 就職活動は戦略が大事 思いつきでうけると間違いなく泥沼化します。 思ったよりもガンガンお祈りメールが来るものなので、わかってても結構落ち込みますし周りが内定で始めると焦ります。 そうした時に慌てて適当にES書いて出したりすると、時間も取られるはお祈りメールは増えるはでいいこと皆無です。 企業によっては(公的には言わないものの)OB訪問が事実上必須になっているところもあります。知ってる範囲でも生保は新入社員が事実上のリクルータになっているところがありますし、どこぞやの有名企業はOB訪問の結果を人事に提出させら
Css Spriteという手法をご存知ですか? 画像の部品をひとつの画像にすることで、セッション数を節約したり圧縮効率を上げたりする手法です。 こうすることによりwebページがより素早く表示されるようになり、ユーザはハッピー!ということらしいです。 ものすごい負荷がかかるほどの大規模サイトじゃない限り、大抵の人には関係ない代物ではあります。 この画像を作るために通常はデザイナが苦労して画像を合成するらしいです・・・・お疲れさまです・・・ 何が大変かというと、デザインが変更になる度に画像を合成しCSSを書き換え・・・・死にたくなりますね。 そこで例えばこんなツールがあります。CSS Sprite Generatorは、画像一式をzipで圧縮して投稿すると冒頭の画像のように合成してくれその上CSSまで作ってくれるという優れものです。 けど、結局デザインって画像とか文字色とかを微調整す
最近、自分ががしがしコミットしていたソースツリーを他人と共有する必要があり、人がどういう変更をしていたのかを確認する必要が出てきました。 コンフリクトを避けるのはもちろんですが、互いの空気をソースから読み取るというのは重要です。 要は git diff を見ればいいんですが、git diff はぱっとみよくわかりませんね・・・・ 世の中にはスーパーハカーがいたりするのでこれでいいのかもしれませんが、超一般ピープルである私にはちょっときついです。そこでGitVimDiffです。 motemen さんの git.vim をベースにさせていただきました。これはmoteます・・・・! スクリプトを.vim/pluginsにコピーしてvimを起動します。 そこでいきなり:GitVimDiffと入れてみます。するとHEADからの差分が表示されます。 さて、今回の目的は他人のコミットとの差分を表示す
Darts: Double-ARray Trie System http://chasen.org/~taku/software/darts/ dartsというのは、Trie木をdouble arrayで実装したライブラリです。ヘッダファイル一つだけの配布なので大変使いやすい。 今回HAT-trieを実装してみるにあたって、Trie木の部分の実装としてこれを使ってみることにしました。 しかし、サンプルが動かない・・・・!どうやらよく見るとテンプレート周りとconstを付け加えた際に、もともとのサンプルが動かなくなった模様。 なので、これを修正しました。別に大したことはしていません。 PLAIN TEXT CODE: #include <iostream> #include <darts.h> int main (int argc, char **argv) { using namesp
screenには大変なじみがあるのではないかと思いますが、最近windowの縦分割(左右に分ける)をしたくなり、tscreenやscreenのパッチなど色々と考えた末に、tmuxにしてみました。 理由は特にない(^^;;んですが、使ってみた結果tmuxの方が若干見た目に奇麗であるように感じました。 現在最新版はバージョン0.9なのですが、ドキュメントがなくソースを読むしかない(?)ので、軽く使えるコマンドについて言及したいと思います。 とりあえずmacの人はmacportsにあるのでコマンド一発ではいります。 PLAIN TEXT CODE: sudo port install tmux そして、次は設定ファイルをおきましょう。screenでいうところの.screenrcは、.tmux.confというファイルになります。 私の設定ファイルはこちらをごらんください。 基本的にソースに付
キーワード自動リンクの話を某勉強会でしました。その資料を公開します。 自動リンクのためのデータ構造としてTrieを採用し、今回は有名な実装であるsenna, Tx, dartsの比較をしました。 それぞれのライブラリの背景は次の様なデータ構造です。 senna – パトリシア木 Tx – LOUDS darts – Double Array 今回の実験はとりあえず実装しましたレベルなので、厳密な速度や容量にはなっていない可能生があります。 というのは、それぞれのライブラリを精査したわけではないからです。 またキーワード抽出した結果がそれぞれで若干異なっています。抽出できたキーワードの件数に大きなさや検索にかかる時間に相関が無さそうなので概ね正しいと考えることにしました。 というわけで、ご参考まで。
Txでdartsのようなtraverseをする関数を作ってみました。 使い方はdartsのtraverseと同じだと思います。たまたま作ったのでパッチをそのまま貼っておきます。動作は未保証。dartsよりも爆速でふきました。 PLAIN TEXT CODE: diff -cb tx-0.13/tx.cpp tx_original/tx.cpp *** tx-0.13/tx.cpp 2009-04-13 13:21:14.000000000 +0900 --- tx_original/tx.cpp 2009-08-27 22:45:25.000000000 +0900 *************** *** 195,200 **** --- 195,221 ---- return 0; } + uint tx::traverse(const char* str, size_t& po
「テクノロジーが重要なんだ」 こういう人は少なくないです。工学部を今年卒業する自分としても、「テクノロジーが重要」というのはとても同意できることです。 しかし、これが一度サービスに関する議論になった時どうでしょう? 私はこういうときにいつもこういいます。 「技術的問題はほとんどの場合解決可能なので、ユーザが受けるべきメリットについてよく考えてください」 これがなかなか難しいらしいことに最近気づく。 技術者は「技術的面白さ」が「一般人の感覚から離れすぎている」ことで、ユーザのメリットを考えにくい傾向があるように感じられる。 これはよくよく指摘されていることです。 が、面白いことに「技術者じゃない人」も同じく、「技術ありきでサービスを考える」傾向がとても強いことに最近気づいた。 やっかいなのは技術に関する知識がない分、発想が貧弱だということだ。 よくgoogleが引き合いに出される
railsアプリの欠点のひとつはファイルのアップロードが大変なことでしょう。 そこで次のようなrakeを作って、rsyncをつかってサーバと同期するようにしました。 これでテストサーバにアップロードするのが簡単になります。 deployするときはcapistranoの方が楽そうですが、開発段階ではいちいちsvnにコミットせねばならず無駄にコミットを繰り返すことになってしまいます。 おそらくこちらの方がよいでしょう。 参考につくったrakeファイルを置いておきます。これを lib/tasksに入れておけばOK。 SERVER=”username@domain.name” APP_DIR=”/path/to/merb/root/” namespace “rsync” do desc “do rsync” task :do do sh “rsync -avz –delete –exc
一学生がクリスマスでイラっとしてたところにはてなの記事があったので、ちょっとストレス解消に意見してみる。しかし、VCでのバイトや自分自身がソフトウェア開発を個人でやった経験からもいろいろと疑問を感じた。何をやってきた人なのか気になる人は自己紹介ページなどを見てください。 近藤社長「未熟だったと思う」 はてなが目指す“脱IT系” (1/2) とりあえず先に言い訳書いておきます。 まず、私ははてなのサービスをほとんど使ってません。こっそりはてなスターついてますが、友達に言われてつけたくらいののりで、使い方も何気にわかっていません。 はてなの中の人もまったく知り合いいないので、誰のこともよく知らないので、人物評価とかに客観性は皆無です。 言い訳終わり。 はてなダイアリーとかはてブとかで有名な、株式会社はてな。東京オフィスはいったことあるんですが、正直あまり興味がないのでどのサービスがどうなの
CentOS5はrubyのバージョンとかgemのバージョンとかの関係でなかなかmerbがインストールできません。 とりあえずえらく苦労したのでメモ代わりに。自分はもともとmod_railsで動く環境があったので、そこから変更をしました。 目標はpassengerのmod_rackとmerbの組み合わせで動かすこと。 まずrubyをアンインストールする 2008/11/15現在、centos5はruby1.8.5なんですがmerbはruby1.8.6以上でgem1.3以上じゃないと動きません。なのでyumで入れてる人は全部削除しましょう。 yum remove ruby yum remove rubylibs ねんのため次のコマンドを実行して残ってないか探してみましょう。 yum list ruby |grep installed なにもでなければ大丈夫です。 checkinstallをイン
CentOS5はrubyのバージョンとかgemのバージョンとかの関係でなかなかmerbがインストールできません。 とりあえずえらく苦労したのでメモ代わりに。自分はもともとmod_railsで動く環境があったので、そこから変更をしました。 まずrubyをアンインストールする 2008/11/15現在、centos5はruby1.8.5なんですがmerbはruby1.8.6以上でgem1.3以上じゃないと動きません。なのでyumで入れてる人は全部削除しましょう。 yum remove ruby yum remove rubylibs ねんのため次のコマンドを実行して残ってないか探してみましょう。 yum list ruby |grep installed なにもでなければ大丈夫です。 checkinstallをインストール なにも気にしないで入れてもいいのですが、ソースからコンパイルしてインス
以前は次のようにやっていたようですが、いつの間にかかわったようです。 Mac OS X で DNS のキャッシュをクリアする。 lookupdはすでに存在しません。そのかわりdscacheutilが使われるようになっています。 これはmac上の様々なキャッシュを統一的に扱うようにしているようです。 次のようにするとdnsキャッシュの中身が見れます。 dscacheutil -cachedump -entries host で、クリアするときはこんな感じ dscacheutil -flushcache なるほどなるほど。
技術者だからといって、モノが作れればいいんだろうか?そういうものでもないでしょう。 一つの考え方として、技術者は自分のたち位置や技術の位置づけについて、文脈に照らして考える能力が必要だということを言ってみようかと思います。 今回のえがちゃん騒動に思うこと:微妙に世間のことがわかっていない 別に世間知らずだとかいう訳ではないです。 単純にいうと、車輪の再発見のオンパレードをしているという話。しかもかなり劣化版の車輪。 けど、これはえがちゃんに限った話ではなく、このブログもそうだとは思うし、よのなかの多くのブログはそうでしょう。 たとえば、「情報商材はすばらしいビジネスモデルだ!」というエントリー。自分からみるともう何年も前からいわれてることで、それこそ起業しようとか少しでも考えたことある人や、実際に受託開発とかやってるひとなら簡単に思いいたるところです。 例えば自分なら、「で、それから
進・日進月歩 IT, Jazz, study, engineering, すべての真実とクリエイティビティのために この話題に言及するのもこれで最後にしよう。IT泥の時もそうだったけど、3才くらいしか差がないはずなんだけど、なんかどうもこの年代のITの人とは意見が合わない。 最近の若い者は(笑 これを読んでなるほどと思った。いつまでも学生起業家ではいけないよねという話。 結局自分の周りですごいなと思うところは最初から学生起業とか名乗ってなかったし、結局それで未だに会社も続いてるってところがほとんどだと思う。 作ることに価値があるのは自分としても認めるところ。で、最初品質が低いのもそれはしょうがないと思う。ただ、それがすごい事なのかというと全然そんなことはない。 公開することにマーケティング的価値があることは認めるけど、それと人物評価とか能力評価はまったく別問題。 どうしてもそれは本当な
進・日進月歩 IT, Jazz, study, engineering, すべての真実とクリエイティビティのために なんか意地でもITを泥化したい人たちがいるらしい。これは悪意すら感じるようになってきた今日この頃です。 まず書く前に自分の立ち居地について書いておく必要があるかな。 エンジニアの未来サミットには参加してません 実際にシステムの受託開発的なことを一時期していて、ほとんど中小企業だけど中には上場企業のシステムやサイトなどをコンサルティング、製作したりしてました ほとんど社会人とだけつるんでやってたので、学生周りの事情を知ったのは最近 ちなみにまだ大学生(卒業できんかったのですよ)。受託向いてないと思って辞めたところで来年から大学院生 ちょっと書きたいことをバラバラ書くので読みにくかったり、語弊があったりしたらすみません。あまりエンジニアの未来サミット関係ないかもしれません。
進・日進月歩 IT, Jazz, study, engineering, すべての真実とクリエイティビティのために キャズムを超えろ 変換スピードが遅いとかそのへんの話がいろいろ出てるけど、根本的に連文節変換がないケータイとか(文字を色々入れる人なら)ありえない はて。これは本当なんだろうかという話。「必要」というのが「これなけりゃiPhoneとか買う価値なさ過ぎる」とかいう意味ならそんなことはないと思う。 (個人的に「必要」ということばは数学的な何かを思い起こさせるのでかなり強い単語に聞こえる) 実は学科の友達も「連文節変換ないのがだめだ」と言っていたのだけど、言われるまで気づかなかったくらいに自分には不便がなかった。 というかPCとか電子機器に対してユーザビリティの点を期待したことがなかったのはあるかもしれないが・・・・たいていの場合人間がUIに順応していくもので、個人的には人
泥カンってのをざっくり説明するとこれ。これをustで眺めてました。 なんというか、結局泥の部分をまったく語らないまま終わってたので、なんで「泥になるのか」ということと、それはSIerとかといった業態とは関係なく、単に経営的にその会社が泥なだけなんだという話と、そんなの関係なく自分が何をしたいのか考えろという話をしてみようと思います。 泥っぽいところを昔見たり体感したりしました。泥っていっても色々ありそうなので具体的に書くと・・・ AM2時とかでも平気で起こされて、理不尽な要求を突きつけてくる。たまにだったらいいけど、ひどいときは毎日に近い ちょっとの仕様追加が重なって、いつの間にか赤字(といっても人件費的に赤だから、ちゃんと計算しないと見えてこんのだけど) 仕様があいまいなまま発注しようとする人がいて、最初からデスマーチが決定している ぱっと思い出せるのはこんな感じですね。大体こんな感じの
なんかずっとこれに違和感があったんだけど、なんとなくわかった。ネットの話を見てるとどうも「コードを書くこと」を「技術」と呼んでいて、ゆえに「コードがかけないと技術がわからない」となっているんだと思った。 つまり「A→B」なんだけど、「A=B」なので、結局循環論法「A→A」となっているっぽい。 繰り返しになるけど、包含関係だけ考えれば、webひとつをとってみてもコードを書くこと以外の技術の方が多い気がしてならない。 結果的にほとんどの人はコードがかけるので、必須条件のように思えてるけど、実際そうでもないと思う。 もちろん、漢字の書き取りと一緒で、実際やってみるのが一番覚えられるし、やってみないとわからんことも多いわけだけど、別に音声認識の詳細な実装を知ってアプリを書いてる人がいるのか疑問だし、画像処理にしてもopenCVの関数使ってるだけで実装知らない人たくさんいるんじゃないかな? も
tomcat6用のjsvcを用いたデーモン起動スクリプトが世の中にないようなので、作成したものを添付しておきます。 環境はTomcat6.x、centos5でjava6update3の手動インストールです。 ベースはTomcat5.shです。 デーモンで起動するメリットは、何気によくはわかってないのですが、とりあえずいくつかメリットがあるようです。 たとえば ルート以外に実行権限を渡せる(セキュリティ的にこっちのほうがいい JVMがクラッシュしたときjsvcが再起動してくれるので、サービスがストップしにくくなるかもしれない という感じです。 何はともあれ、私はしたのスクリプトを/etc/init.d/において使ってます。 #!/bin/sh ##########################################################################
次のページ
このページを最初にブックマークしてみませんか?
『blog.gijutsuya.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く