サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
satoshis.hatenablog.jp
EclipseをNeonにアップデートしたら、Slim3のプラグインが入手不能で簡単に開発に着手できなかった。 動かすまでにちょっと手間取ったので、手順をまとめておく。 準備 まずはこれの前に書いた手順でGoogle Cloud APIを使えるようにする。 ≫ Eclipse Neon で Google Cloud API を使えるようにするまで - 今日の役に立たない一言 − Today’s Trifle! − 次に slim3-blank-1.0.16.zip を入手して、適当な場所に解凍。 ≫ ブランクプロジェクトの入手 - Slim3 日本語サイト(非公式) 新規プロジェクトの作成 ツールバーの「g」をクリックして「新規Webアプリケーション・プロジェクト」をクリック。 ダイアログで以下の項目を設定して「完了」をクリック。 プロジェクト名を入力 パッケージを入力 Use GWTチェ
ログ表示画面でログのひとつをクリックすると、その詳細をダイアログで表示するようなUIを作った。画面をスクロールして下の方に表示してるログをクリックすると、ダイアログは表示されるんだけど、ページの先頭までスクロール位置が移動してしまって、ダイアログがスクロールアウトして見えなくなってしまうという問題に遭遇。 ぐぐってみたら、同じ問題で困っている人がいた。 ≫scroll - How do I prevent scrolling to the top of a page when popping up a jQuery UI Dialog? - Stack Overflow クリックイベントを拾ったところで false を返してやればいいらしい。 Stackoverflowのサイトで出てたコードがこれ。 $('a.closeButton').click( function() { $('#di
試行錯誤してできるようになったので、簡単にまとめる。 基本的にはここに書いてあるとおり。 To use a Google Cloud Endpoint, you'll need to use the Google JavaScript client library. The code you need to add to use Endpoints is minimal, consisting of: Google App Engine — Google Developers var ROOT = 'https://<your-app-id>.appspot.com/_ah/api'; var CLIENT_ID = 'xxxxxxxxxxxxxxx.apps.googleusercontent.com'; var SCOPES = 'https://www.googleapis.com/
Androidのアプリケーションを作っていると、Activityのソースが巨大化しやすい。その最大の理由はサンプルソースに有ると思う。 世の中にあふれているサンプルソースとして書かれているコードのほとんど全部が、Activityのクラス内にコードを書いてしまっているから。サンプルソースを見た人は、それをマネて書くから、機能を追加すればするほどActivityのコードが巨大化してしまう。 では、巨大化を防ぐにはどうすればいいか。 MVCアーキテクチャにしたがって、クラスの責務を設計することが重要だ。そもそも継承元のActivityが巨大なので、継承元のActivityが実装しているメソッドのオーバーライドを必要に応じて実装するだけでもそこそこ巨大化してしまう。だから、オーバーライド以外のメソッドは追加しないくらいのつもりでいいと思う。 Contextの種類で分類する Androidにはいくつ
超絶苦労する前のいろいろ 専門学校の授業でSubversionを教えようと思ったわけですよ。バージョン管理のメリットは学生のうちでも卒検とかではすごくメリットがあるだろうし。 そこで、まず専門学校に依頼してみたのです。すると、使えるサーバーがないとかで用意ができない。 しかたないので、クラウドにある自分のサイト(www.satoshis.com)上で、専門学校用のSubversionのリポジトリを用意して、そこにアクセスさせようと思ったわけですよ。自宅パソコンからもテストして、生徒全員分のアカウントも用意して、これで完璧じゃー!と専門学校に行って接続しようとしてみたわけです。すると、なぜかエラーで接続できない。 なにかのアクセス制限がかかってるんだろうってことで、www.satoshis.com へのアクセス制限はすべて解除してもらうよう依頼したのです。 翌週になってアクセス制限はすべて解
昨日の午前中に、Twitterのタイムラインを見てて、ひとつのニュースがふと目に留まった。 ≫ WordPressサイトの.htaccessが改ざんされている件 - CGI版PHPの脆弱性?謎のindex.bak.php | WP SEOブログ 自分のサイトでは、まだWordPressを使ってないけど、一応チェックしとくかと思って調べてみた。 そしたら、上のブログで書かれてる内容とは違うけど、.htaccess が改竄というか、もともと置いてなかったのに、勝手に作成されてるではないか! この↓内容で .htaccess が作られてた。Joomla!のサイトは既にあるので、ファイルの先頭に挿入されてた。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} ^.*(google|ask|yahoo|yout
ぐぐれば、zxing を使えばいいってことはすぐに分かる。 さて、どういうコードを書けばいいのかを調べてみるが、いろいろとめんどくさいことを書いてあるブログなどを発見。 zxing をダウンロードして、android アプリのサンプルが含まれているので、そのコードを読んでみようかと思ったけど、意外とボリュームがある。 zxing のサイトで、Wikiをチェックしてたら、こういうページを発見。 ≫ScanningViaIntent - zxing 既にQRコードスキャナーをインストール済みなら、これだけのコードで読み取れるらしい。 public Button.OnClickListener mScan = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent("com.g
Eclipseを使ってて、いくつもタブを開いてると、タブを切り替えるのにいちいちマウスに手を伸ばさなくちゃいけなくてめんどいことこのうえない。 ショートカットキーが割り当てられてないのかと調べてみたら、Ctr+F6なんて情報があったけど、Macだと押してみても反応しないし。 サクっと新しい設定を追加することにした。 メニューバーの[ウィンドウ]-[設定](Macは[Eclise]-[環境設定])で設定画面を開く。 左のツリーで[一般]-[キー]を選ぶ。 フィルターに「エディター」(Macは「タブ」)を入力する。 コマンドの一覧から「次のエディター(タブ)」を選ぶ。 「バインディング」にフォーカスして Ctrl+.(ピリオド) キーを押す。 コマンドの一覧から「前のエディター(タブ)」を選ぶ。 「バインディング」にフォーカスして Ctrl+, (カンマ)キーを押す。 OKすれば設定完了。 こ
phpMyAdmin で SQL にエクスポートして、それを別のホストに用意したMySQLにレストアしたら、文字化けしまくり。 いろいろとぐぐったりしていくつもの方法を試したけどなぜかうまくいかない。で、最終的にうまくいった方法だけメモっとく。 SQL Dump の先頭に以下の小文字で記載した部分(最後の4行)を追加したら文字化けしなくなった。 -- phpMyAdmin SQL Dump -- version 2.11.2.2 -- http://www.phpmyadmin.net -- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; set @@character_set_client=utf8; set @@character_set_connection=utf8; set @@character_set_database=utf8; set @@ch
なんか結論をタイトルに書いただけですべて言い尽くしてしまった感があるんだけど、一応書く。 設計の質が向上する 設計時点でクラスの責務とかメソッドの処理内容などを検討するとか、レビューなんかでも議論されるんだろう。そのときに同時に、クラスやメソッドの命名が的確になされているかをチェックすべきだ。 クラス名が的確ならばクラス名を見ただけで、そのクラスの責務が推測できる。これはとても重要なことで、例えば何かの機能追加をしようとしたときに、そのクラスに実装を追加すべきなのか、それとも別のクラスに追加すべきなのか(または新たなクラスを作成すべきなのか)、判断の拠り所にもなりうる。 メソッド名が的確ならば、メソッド名が意味している以上の処理を書こうとすると不自然になるので、自然とatomicなメソッドになりやすい。もちろん、気付かなかったらatomicにならないんだけど、ぼんやりしたメソッド名だった場
twitterって、考えてみれば基本的なところは単なるチャットサーバーともいえる。だけど、いままでのチャットとは違ってるところがいくつかある。そこがtwitterのスゴイところとも言えるんじゃないだろうか。 チャットはすごくなかったけど、twitterがスゴイことになってしまった理由は、単なる発想の転換にあったということだ。 発言をつぶやきと言い換えた チャットの場合に何かの言葉を発することは、誰かに向けた発言だった。これを、誰にも向けない「つぶやき」に言い換えた。つまり独り言を容認した。いままでネット上に出ていきにくかった、頭の中にある想いとか悩みとかモヤモヤしたものまでをも、システムとして許容するという態度を示した。 部屋という概念をなくした チャットは、チャットルームという閉ざされた中でのみ発言という情報を共有できた。twitterでは、部屋という概念をなくし、すべての人が同じ場所で
twitter とか(もちろん自分のTL)で MVC アーキテクチャのことが話題になってるみたいなので、ちょっとメモ程度のことを書いておく。 まず、ここで言及してるのは、MVC2アーキテクチャのことではないので念のため。 Webアプリケーションは、一般的に三層アーキテクチャを採用する。プレゼンテーション層、サービス層、データアクセス層の3つ。でも、これはMVCアーキテクチャとは異なる。 Webアプリケーションでのコア部分はサービス層である。サービス層でWebアプリケーションで提供するサービスをきちんと構築するには、サービス層の中に MVC のうちの、少なくとも Model と Controller が必要になる。 プレゼンテーション層はまさしく View にあたる部分だけど、サービス層の中に View というか、UML で言うところの Entity・Boundary・Controller
専門学校でたくさんの生徒に教えていて、思ったことがある。当然のことなんだけど、日々の授業中の態度が1年間の学習で習得した能力に大きく影響している。その態度を何年も積み重ねることが、大きな実力差につながっていく。もちろん、将来的にも。 理解力が多少劣っていても、授業中の説明をしっかりと聞き、分からないところは質問する生徒は、着実に実力をつけている。同じ程度の理解力があると思われる別の生徒は、そもそも授業中の説明を聞いていない。聞いていないから理解できない。理解できないから質問もできない。最初に難しいと思った時点で、投げ出しているのである。理解しようとする努力を感じられないのだ。 プログラミングの課題を与えたときにも、その態度の差は表れる。努力する人はテキストを読み返したりWebで検索するなどして課題をこなそうと努力するが、まったく関係ないサイトを閲覧したりゲームをしている生徒もいる。「この業
ユーティリティクラスみたいなのを作って、そこにクラスメソッドを集めるのはよくあることだと思いつつ、悩ましいコードを眺める。 利便性のためにユーティリティクラスを作るという趣旨はわかるんだけど、クラスメソッドにすると安易にどこからでもアクセスしやすい状況ができてしまう。ユーティリティクラスにはいろんな機能が追加され、どんどん巨大化する。巨大化したユーティリティクラスのクラスメソッドは、プログラム全体のあちこちから呼び出されることになる。 で、そうやってできたプログラムをリファクタリングしようとしているところ。 ユーティリティクラスに突っ込まれたメソッドを眺めると、機能的にも異なるカテゴリのものが集まってるので、本来はいくつかのクラスに分割すべきだと気付く。さらに整理してみると、本来はそれなりにインスタンスがあって、そのインスタンスメソッドとして提供した方が、設計上もうまくいくことが分かる。
昨日、専門学校で生徒が作ったソースなどを持ち帰ってチェックしようと、手持ちのUSBフラッシュメモリにコピーしようとしたら、なぜか使えない。このUSBフラッシュメモリは、この前、Fedora Core をインストールするために使用したもの。USBフラッシュメモリからブートしてインストールした。そんときにDDForWinってソフトでイメージを書き込んだのが原因のような気がする。 専門学校の教室のパソコン(WindowsXP)でフォーマットしようとするとエラーが出てフォーマットできなかった。GUIがダメでもコマンドなら、と思ってやってみたけどやっぱりダメ。コピーしないまま帰ってきた。 そのUSBフラッシュメモリを復活させようと、自宅のパソコンでチャレンジ。 コマンドプロンプトから普通にフォーマットを試みる。 c:\>format u: 新しいディスクをドライブ U: に挿入してください 準備がで
どこにいても聞こえてきそうな「言い訳をするな」という一言。ほんの一言なんだけど、この一言によって失われてしまうものは膨大だ。 まずは、この一言が、どのような状況で発せられるのかを考えてみる。そこには、対話する人たちがいる。そして、その人たちにとって都合が悪いことが起きていて、ある人が都合が悪いことが起きていることを知った、という状況だろう。そしてその人が他の人にその悪い情報を伝達したときに、情報を受けた人が発するというのがよくあるケースではないかと思う。 家庭の場合ならば、情報を伝達する側は子供で、受ける側は親だ。会社などの場合、情報を伝達する側は部下で、受ける側は上司であることが多いだろう。 「言い訳をするな」 それまで対話が成り立っていたとしても、この一言が発せられた時点で悪い情報を伝達するためのコミュニケーションは中断してしまう。この一言は、この言葉を発した側が「情報を受け取りたくな
ずいぶん前に書いた、Template Method パターンを使用したクラスをメンテナンス。具体的にはキューを制御するためのクラスなんだけど、Java5 には便利なキュー制御のクラスがいくつも追加されている。ちょっとうらめしい。 実際に欲しかったのは DelayQueue に近い機能。そして AbstractQueue に相当するクラスで TemplateMethod パターンを利用して、TemplateMethod でキューへの追加と、キューからの取り出し条件をサブクラスで記述できるようにしてある。 でもね、やっぱりね、たとえ自分が書いたコードだとしても、書いてから長い時間が経過した後でコードを読むと、継承を使ったものはわかりにくい。コードを読むときに、ふたつのクラスのコードを行ったり来たり。 継承って、スーパークラスとサブクラスが混ざっている状態。しかもサブクラスはスーパークラスのフィ
本当に運命的な出会いだったのよ。初めて会ったのは酒の席。黒ビールを飲み続けていた彼女、とても印象的だった。居酒屋でも同じ酒を奪い合った。ある日、終電に間に合わなかった彼女を部屋に泊めた。会ったのはほんの数回目だったけど、その日に「結婚しようよ」と言った。彼女は「いいよ」と答えた。 その日、いろんなことを話した。「おじいちゃんとおばあちゃんになっても、縁側で一緒にお酒を飲もうね。」と話した。一人だけ死ぬと寂しいから、手をつないで一緒に死ねるといいねと話した。その約束を果たさないまま、勝手に一人だけで逝きやがって。 結婚指輪なんて買わないよって話をしたとき、「形から入るのは嫌。指輪なんていらない。」と答えられた。同じ価値観を持つ人がいたことを心から嬉しく思った。 結婚してから生活を共にしてからも、価値観の一致に驚くことが多かった。ちょっとした意見の違いはあるけれど、対立することなんてなかった。
昨日の通夜と、今日の告別式、火葬が終わった。ちょっと落ち着いたので、今日は6日にあったことを記録に残しておく。 午後4時過ぎに、幼稚園から携帯に電話があった。2時にバスで送ったときに迎えに来なかったので子供二人を幼稚園に連れ帰ったそうだ。自宅に電話しても誰も出ないけど、今から子供たちを送りたいのでどうしたらいいかと。折り返し連絡すると答えた。 たまたま携帯に登録していた近所の山口さんに電話して、家の様子を見に行ってもらった。実家の母親にそのことを連絡し、出張中の上司にも連絡して会社を早退した。山口さんから電話があった。照明がついてるし、テレビもついてるし、エアコンもついている。神さんは横になっている。電話にもインターホンにも反応しない。明らかに変だ。救急車を呼んでもらった。 電車を待っているときに山口さんから電話があった。救急車が着いたけど、鍵があいてないからガラスを割って入っていいかと。
技術者だって、技術的なことばかりをやってらんない。ドキュメント大切。ドキュメント重要。 で、たまに技術的なことをやってみるとクラクラしたりして、余計にモチベーションが下がったり。(涙) 世の中、思うようにならんことばかりの時期だってあるさ。 さ、ひとつずつこなしていくか。 はてなブックマークの最近の人気エントリーに、「正しい技術文章作成のためのヒント」というページが上がってる。とりあえずはひととおり読んでみた。あんまりケチつけたくないんだけど、はっきり言って「正しい技術文章作成のためのヒント」というページ自体、読みにくいと感じた。でも、ダメだしは、このエントリの目的じゃないんでパス。 一部引用。 本当なら、大学の講義で、技術文書の作成方法を学ぶべきなのですが、日本の ほとんどの大学ではそういったカリキュラムを設けていないようです。 技術文書の作成方法どころか、作文の方法すら教えられてない。
プログラマー必読書と言っても間違いないくらいの名著「達人プログラマー」の第2版が発売されました。 初版が発売された2000年11月30日から20年。 ソフトウェア開発に関する技術は発展しましたが、ソフトウェア開発における活動の原則は変わってませんね。 せっかく買ったのに1年近く放置してましたが、ぼちぼち読み始めようと思います。 達人プログラマー第2版、届いた。 pic.twitter.com/glod7jIaHM— さわださとし@車好き酒好き料理好きひとり親エンジニア (@satoshis) 2020年12月2日 Laravelの練習がてらにリツイート数・いいね数ランキングサイトを作りました。 TwTimzと同じようなの。 ≫ Buztter.com Twitter APIが制限されたので、動かなくなりました。 モデルを保存しようとしてエラーが発生。 Illuminate\Database
それから僕にとっての「業務としてのスターウォーズ」の日々が始まり、昨日ようやく「II」を見終えました。そして今日は午後から休みをとって妻と二人で、はてなの皆より先に「III」を見てきます。 業務としてのスターウォーズって。。。(^^; 別に熱烈なスターウォーズファンじゃないけど、ここで紹介されてる「スター・ウォーズ トリロジー DVD-BOX」って、エピソードの IV・V・VI と特典ディスクがセット。ちょっと興味があるなぁ。 なんだか、次々に仕事が入ってきて、コードを書けない日々が続いてたりする。 書くのは仕様書と取説と設定ファイルばかりなり。 つまらん。。。 もうかるけどつまらない仕事ともうからないけどおもしろい仕事があれば、会社はもうかるほうを選択するのだ。 その仕事の中でなんとかモチベーションにつながるのは、JUDE でユースケース図や配置図などを描いて仕様書の中に埋め込んでいく作
今から健康診断にお出かけ。午前中は不在。 胃カメラ、おいしいかなぁ? 実用的なGroovy: GroovyによるJDBCプログラミング [日本語] [英語(原文)] 近くにいる人が外注したソフトウェア、VB.NETを指定(エンドユーザからの指定)してたのに外注が VB6 で作ってきたらしい。 隣の部屋で作業している彼ら。コンパイルできなくて困っているようなことを言っていたので、「動くようになるまで1ヶ月はかかるよ、たぶん。」と近くの人にはコメントしといた。 しばらくがんばってたようだけど、とうとう「持ち帰って作業したい」と泣きが入ったらしい。 結局、一山いくら(←どっかで見かけた表現だけど、とても気に入った(^^))のプログラマなんてそんなもんなんだろうな、と。 最近、プログラムをいろいろと触っているけど、単体テストをなかなか書けない。 コードを読んでバグを発見しても、そのバグがGUIに関
このページを最初にブックマークしてみませんか?
『今日の役に立たない一言 - Today’s Trifle! -』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く