サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
www.altus5.co.jp
この記事は、10年前に書いた記事なんですが、今年の新人の人たちにも、やってみてほしくて、古いblog記事から掘り起こして転載しています。 linterを使ったコーディングスタイルのチェックだけでは、スパゲッティなコードを直すことができません。 よくできたコードは、パッと見で、”なんか違う”と感じさせるところがあり、あぁ、このコードを書いた人はデキるって思わせるものです。 読みやすくて、きれいなコードを書くためには、どうしたらよいんだろうか?さらには、それを人に教えるには、どうしたら? そのヒントが「オブジェクト指向エクササイズ」にあります。 この本を読んだときに、"これだ!"と感じたことを覚えています。 以下、10年前に書いた勉強会後記です。 今回の勉強会は「ThoughtWorksアンソロジー」の第5章、「オブジェクト指向エクササイズ」の読み合わせをやりました。 エクササイズは、1000
Excelの仕様書を見ながら、プログラミングするのって、なんだか、煩わしいって、思ったことないですか? Excel方眼紙の仕様書をうんぬん言ってるんじゃなくて、それがWordの仕様書でも嫌なんです。HTMLになった仕様書をブラウザで見るのも嫌。 コーディングしながら、仕様書を見ながら、関連仕様をgrepして確認して、仕様書に間違いを見つけたら即修正して・・・と、こんな感じで、できるだけ、 実装の流れを止めずに仕事する ことってできないものか? ということで、なるべくテキストエディタだけで仕事できたら良いんじゃない?というお話です。 wikiで仕様書を共有する弊社の開発では、プロジェクト管理に Redmine、GitHub、GitLab、Backlog などを使ってますが、wikiにプロジェクトの概要や、各種手順、議事録などをまとめるため、マークダウンで文書を書くということが、日常的になって
Trieを実装する上で必要不可欠な、データ構造の工夫前回のブログで、辞書検索、サジェスト、形態素解析などを実装するのに使われるTrieの概略を紹介しました。 テキスト処理に使われるTrie(トライ木)とLOUDSに関する概略 _ ALTUS-FIVE木構造の各エッジに文字のラベルを付けることで辞書を表現するという抽象的な説明を与え、それを実現するLOUDSという簡潔データ構造を紹介しました。 今回はLOUDSとは別の、Double Array(ダブル配列)というデータ構造で実際にTrieをPythonで構築し、共通接頭辞検索を行えるようにします。 実装方法については 『日本語入力を支える技術』(徳永, 2012)、通称「徳永本」に準拠しますので、同著を読まれた方が実装を試みる際の参考にもなると思います。 また、Double arrayのエッセンスを紹介していきますので、参考書籍をお持ちでな
リアクティブプログラミング(reactive programming)とは?最近、リアクティブプログラミングという言葉を目にすることが多くなりました。 リアクティブプログラミングは、CPUのマルチコア化やクラウドの活用が進む中で、 非同期通信に基づいたアプリケーションの設計に適しているため、 これからのソフトウェア開発における重要な技術として注目されています。 まず、以下の擬似コードを見てみましょう。 a = 1 b = 2 * a a = 2 print b プログラマに対して無前提にこのコードの出力結果を訊けば「2」と答えるかと思います。 しかし、リアクティブプログラミングの観点でみると「4」が出力されるべき、という答えになります。 というのは、リアクティブプログラミングの観点では、2行目の「b = 2 * a」というコードは 「bをaの2倍として定義する」という意味で解釈されるからで
非公開サイトをLet's EncryptなDockerコンテナでお手軽にSSL化する方法 | 開発環境のスピード構築のために アクセスを限定した非公開サイトを運用していて、それをLet's EncryptでSSL化したいけど、コマゴマ面倒くさいという方に、お手軽にできるレシピをご紹介します。 非公開サイトをSSL化したいと思っている人が、どれほどいるのかわかりませんが、例えば、 自宅サーバーをベーシック認証でユーザー限定で運用をしているのだが、なんとなく気持ちが悪いのでSSL化したいモバイルの確認のためにステージング環境をIPアドレスの制限付きで公開しているが、独自CAのSSLで、いつも警告が出るので、警告の出ないSSLにしたいこんな状況下なら、使えるレシピになるかもしれません。 少なくとも、私は、これで、Let's Encryptを使ってます。 Let's Encrypt について無料で
本記事は、Python上で動作するニューラルネットワークのライブラリ「Chainer」を使ってマルコフ連鎖を実装、様々な実験を行うものです。 マルコフ連鎖に関する基礎的な解説もしていくので、初学者の方もご安心ください。 ChainerとMarkov chainChainerはそもそもがニューラルネットワークの実装のために開発されたライブラリです。一方、マルコフ連鎖はChainと名前が付くものの、Chainer及びニューラルネットワークに直接の関係はないことに注意してください。ニューラルネットワークは1940年代に起源のあるモデルですが(注目され始めたのは21世紀に入ってからです)、マルコフ連鎖は1906年に最初の論文が発表されている、より古典的かつシンプルなモデルです。 では、本来関係のない両者を結びつけることでどんなメリットが得られるのでしょうか? Chainerを学びたい人にとっての「
フロントエンドの開発環境を整備すべく、 nodejs と ruby が入ったコンテナがないかな?と探したのだけど、オフィシャルなイメージとしては、nodeのコンテナと、rubyのコンテナが、それぞれ単体では存在するが、両方が載っているものがなかったので、オフィシャルじゃないイメージを使うことにした。 その前に、ふと、Dockerコンテナの中で、Dockerコンテナが動くんだろうか?という疑問がよぎった。 できたとしても、親子の入れ子構造にすると、イメージが肥大化するので、兄弟関係で、動かした方がいいんだろうな・・・ということは、なんとなく想像がつくので、コンテナ間で、 docker exec できないものか?と調べてみる・・・。 そして、Dockerコンテナの中で、Docker Clientは、動くらしくて、ホストOSにある /var/run/docker.sock を共有することで、コン
目的この記事では機械学習に関連する以下のトピックについて解説し、機械学習を学んだことのない方が、汎化と過学習に関する観念的な理解を深めることを目指します。 予測モデルの汎化能力汎化能力の向上を妨げる過学習という現象観念的なわかりやすさを重視しているため、細部に誤りや不正確な点があるかもしれません。 不適切な点がございましたら、ご教示頂ければ幸いです。 以下、この記事では画像の二値分類を例に取ります。 ですが、汎化と過学習に関する知識の適用範囲は画像認識の分野にとどまりません。 予測モデルにおいては、データ誤差を抑えることが本質的な課題であり、過学習はその目標達成を妨げる実際に機械学習を行う際、適切なデータサイズやエポック数(学習回数)を決めるために過学習に関する知識が必要である以上のことから、モデルの汎化能力と過学習に関する理解は機械学習について学ぶ上で十分に汎用的であり、初学者が理解を深
WEBサイト間でシステム連携を、WEB APIで実現する場合、第三者に勝手に利用されないように保護したい場合があると思います。 対応策として、ネットワーク構成で防御する方法が真っ先に思い浮かびます。例えば、IPアドレスで制限する方法などです。その方法がとれるなら、簡単なので、そちらの方がよいでしょう。 この記事では、インフラ構成はそのままで、OAuth認証を使って安全に連携する方法をについて説明します。 Laravel5.3以降の場合は、laravel/passportが、公式パッケージとなったので、そちらを使ってください。 Laravel5.2以前は、プラグイン lucadegasperi/oauth2-server-laravel を使います。 どちらも、 league/oauth2-server が使われているので、内部は同じものです。 さて、laravel/passport につい
無料で使える WEB API を活用して、動的ページ化してみる無料枠が用意されたサービスを、うまく組み合わせると、無料でサイトの運営ができます。 コーポレートサイトによくある「お問い合わせフォーム」を、静的サイトに搭載してみたので、ご紹介します。 まずは、無料で使える静的サイトを構築します。 利用するサービスは、次のとおりです。 GitHub Pages GitHubリポジトリから直接WEBサイトとしてホストできるサービスです。Cloudflare SSLを無料で使うことができて、上記の GitHub Pages の CDN となります。WEBで検索すると GitHub Pages で独自ドメインを使うための記事が、いくつも見つかりますので、とりあえず、静的サイトを無償で運営するだけだったら、やり方は同じなので、そちらをご参考に、構築されるとよいと思います。 次に、「お問い合わせフォーム」
飲んだ味噌汁の量連続量も、現実には離散化してサンプリングすることがほとんどですが、解析上は実数全体を取るものとして扱い、微分積分などを駆使してモデリングを行います。 離散最適化問題を解くには、離散数学の知識が必要です。 この記事はその入門に適するよう、集合や組合せに関する基本的な知識のみで読めるように書きました。また、離散数学は配列やキュー、スタック、ヒープといったデータ構造とも関係する概念ですので、エンジニアが接する数学としてはお勧めです。 劣モジュラ性や、この記事で紹介する貪欲法は、概念を理解すればすぐコードに落とし込み、最適化を手軽に行うことが出来る分野です。 早速、始めてみましょう。 グラフ - 離散最適化の必需品TwitterやFacebookなどのソーシャルネットワークにおけるユーザー同士のつながりは、グラフを用いて表すことができます。 ここでグラフとは、下図のような頂点(ve
DATABASEの作成 日本語をソートするので、collate using identity にすること create database sampledb ON /mnt/sdb/sample using codeset IBM-943 territory JP collate using identity インポートとエクスポート import from T_EMPLOYEE.csv of del commitcount 1000 replace into T_EMPLOYEE export to T_EMPLOYEE.csv of del select * from T_EMPLOYEE ロード load from T_EMPLOYEE.csv of del savecount 1000 replace into T_EMPLOYEE STATISTICS YES AND INDE
今回の勉強会は「ThoughtWorksアンソロジー」の第5章、「オブジェクト指向エクササイズ」の読み合わせをやりました。 エクササイズは、1000行程度の小さなプロジェクトを準備して、次の9 つのルールを厳密に適用させてみるという内容です。ルールを強制することで、いままでの自分流のコーディングとは違ったアプローチを発見することを目的としています。 ルール1: 1 つのメソッドにつきインデントは1 段階までにすること ルール2: else 句を使用しないこと ルール3: すべてのプリミティブ型と文字列型をラップすること ルール4: 1 行につきドットは1 つまでにすること ルール5: 名前を省略しないこと ルール6: すべてのエンティティを小さくすること ルール7: 1 つのクラスにつきインスタンス変数は2 つまでにすること ルール8: ファーストクラスコレクションを使用すること ルール9
VMWare で開発環境を作成するときに、仮想HDDのサイズは、できだけ小さく作るようにしているため、開発が進むうちに、容量不足になることがよくある。新しく HDD を追加して、フォーマットして、マウントして、、、と、この辺のコマンドはあまり使わないので、手順をメモとして残しておく。 HDD を追加する VMWare で「Add Hardware」で SCSI の HDD を作成して、Power On。 FDISKでパーティションを作成する 追加した HDD にパーティションを作成する。下記の (*1) のデバイス名は、追加する毎に違うので、注意すること。 (*1) VMWare で HDD の追加をすると、推奨されているのが SCSI なので、SCSI で作成することが多いと思うが、この /dev/sdb をいうデバイス名は SCSI の場合、1台目が sda 2台目が sdb、sdc
以前、Google App Engine Java で形態素解析器を作成しました。以前の記事はこちら。 今回は、これに改良を加えました。 改良前に使用していた辞書は、IPAdic でしたが、これを NAIST-jdic に入れ替えてみました。 そして、せっかくなので、IPAdic と NAIST-jdic の違いを見てみようと、両方の辞書で解析して、結果を並べて表示するようにして、それをやるなら、ついでに、Yahoo!JAPAN WEB API の日本語形態素解析の解析結果も並べて表示できるようにしました。 ご興味のある方、試してみてください。 http://agolabs.appspot.com/ * IPAdic と NAIST-jdic の違いで、一番わかりやすいのはアルファベットです。 ◇ 辞書について 形態素解析器といえば、ChaSen や Mecab ですが、これらのエンジ
PDF から日本語テキストを抽出するための方法をいくつか探し回った。 Java から使えること 日本語が読み取れること PDF のバージョンに依存しないこと 開発環境が限定されないこと(Linux と Windows の両方で使えること) これらの条件を満たすツール等を探して、2つ試してみた。 PDFBox http://incubator.apache.org/pdfbox/ Apache のプロジェクトなので、これで決まれば一番いいなぁと思いながら、試してみた。 残念。 ページ下端のページ番号の数字だけ処理されて、日本語が処理されなかった。 さらに探すと、「Apache PDFBox と FONTBox を日本語化する」という記事を見つけたので、こちらにあるソースをダウンロードして、JDK1.6でビルドし直して使ってみた。 ほとんどの PDF の日本語が正しく処理された。 すばらし
Google App Engine Java のアプリを作ってみました。 ちょっと前に検索エンジンの開発に触れる機会があったので、今回の手習いは、形態素解析器を GAE/J で動かすことをテーマにしました。 まずは、下記ページに書かれている 「Eclipse を使用して(または使用せずに)App Engine Java プロジェクトを作成する方法」 にしたがって開発環境を作成します。 http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/introduction.html そして、ひと通りチュートリアルを試して、開発環境に慣れてしまいます。 実は、最初はチュートリアルは試さないで、他に GAE/J を紹介している記事を参考にして、必要なことだけをやろうとしたんですけど、後から考えると、先にチュートリアルを通し
このページを最初にブックマークしてみませんか?
『ALTUS-FIVE(アルタスファイブ)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く