タグ

ブックマーク / www.clear-code.com (91)

  • 共有するほど皆が得するモデルをつくりたい話 - 2024-06-17 - ククログ

    業の傍ら、「クリアコードをいい感じにする人」として働いているたなべです。「クリアコードをいい感じにする人」とは何かについては過去に『「クリアコードをいい感じにする人」の採用を開始』という記事や採用情報の『「クリアコードをいい感じにする人」』にて解説されています。 今回はその活動の中で最近取り組んでいる「共有するほど皆が得するモデルをつくりたい」という取り組みを説明します。興味を持ってくれる人・助けてくれる人と話すきっかけになることも期待しているので、記事を読んで話を聞いてみたい・してみたいと思った方は sunao.tanabe@gmail.com 宛に連絡をください。 「共有するほど皆が得するモデル」とはなにか 「共有するほど皆が得するモデル」とは、ソフトウェアに関わる人が増えれば増えるほど、そのソフトウェアに関わる人が得をするという、関わる人の増加と得られる恩恵に正の相関がある状態のこ

    共有するほど皆が得するモデルをつくりたい話 - 2024-06-17 - ククログ
    tuto0621
    tuto0621 2024/06/17
  • Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ

    PostgreSQLに超高速な日語全文検索機能を追加するPGroongaを開発している須藤です。今回はPGroongaやpg_bigmなど拡張モジュールを使わずにPostgreSQLの組み込み機能だけで日語全文検索を実現する方法を紹介します。PGroongaを使う方法はRuby on RailsでPostgreSQLとPGroongaを使って日語全文検索を実現する方法を参照してください。 Heroku PostgresなどDBaaSとして提供されているPostgreSQLではPGroongaを使えません。(DBaaSとして提供しているベンダーがPGroongaをインストールしてくれないから。)PostgreSQLの組み込み機能だけでは日語全文検索を満足に実現することができないので、DBaaSのPostgreSQLを使っていると次のように日語全文検索で困ってしまいます。 日人のプ

    Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ
    tuto0621
    tuto0621 2020/12/22
  • BrowserSelectorのすすめ - フリーソフトウェアでマルチブラウザをもっと便利にする - 2020-10-27 - ククログ

    企業の運用では複数のブラウザを使い分けることがままあります。例えばこんな具合です。 「どうして一つのブラウザで両方見ないのか?」という疑問を覚えるかもしれませんが、このような構成を採用する理由には、大きく分けて以下の二種類があります。 レガシーブラウザを使う必要がある場合。 典型的には、社内サイトが古いIEにしか対応していない場合がこれに該当します。インターネットでは、既にIEのサポートを終了していて、IEでは正常に表示できなくなっているアプリやサイトが少なくありません。このため、社内サイトの閲覧用に限って、IEを温存させる必要があるというのは、現実の運用では非常によくあるパターンです。 セキュリティ的に分けたい場合。 これは用途に応じてブラウザを分けてしまおうというアイデアです。従来から「Web分離」という文脈で論じられてきた対策の一つのバリエーションで、業務用とインターネット閲覧でブラ

    BrowserSelectorのすすめ - フリーソフトウェアでマルチブラウザをもっと便利にする - 2020-10-27 - ククログ
    tuto0621
    tuto0621 2020/10/28
  • ノータブルコード12 - データ構造を分かりやすくドキュメントする技 - 2020-09-25 - ククログ

    第12回目のノータブルコードでは、データ構造を分かりやすくするドキュメントのテクニックを紹介します。 C言語とシリアライズ処理 C言語でよくあるパターンとして、データをバイト列にシリアライズするという作業があります。多くの場合、この作業はデータフォーマットの仕様と密接に絡み合っています。フォーマット仕様書にある「最初の1バイトは8ビット識別用の固定値。次はフォーマットを表す3バイトの符号で埋める。その次が...」という指示に基づいて配列を埋めていくのが典型です。 この処理は、もちろん正確に実装する必要があるのですが、一方でヒューマンエラーの入り込みやすい部分でもあります。例えば、二つの隣り合うフィールドを入れ違いで埋めてしまった、データが実は1バイトずれていたというのは、実にありがちなミスです。最初は慎重に実装しても、フォーマットの拡張に対応するために、何度か手を加えるうちにいつのまにか壊

    ノータブルコード12 - データ構造を分かりやすくドキュメントする技 - 2020-09-25 - ククログ
    tuto0621
    tuto0621 2020/09/25
    メモリアドレスやバイト列のような概念は、私たちの住む日常的な世界には存在しないので、これを視覚的なイメージで置き換えることが有効なのです。
  • ノータブルコード4 - NULLよりも名前付きの番兵オブジェクト - 2020-03-03 - ククログ

    MroongaというMySQLのストレージエンジンを開発している須藤です。MySQLAPIはよく変わるのでMroongaの開発をしているとMySQLのソースコードを読む機会がよくあります。今日、MySQLのコードを読んでいて「お!」と思うコードがあったので4回目のノータブルコードとして紹介します。 MySQLは基的なデータ構造も独自に実装していることが多いです。今日紹介するListも独自に実装しています。 多くの場合、リストは次のように「要素データへのポインタ」と「次の要素へのポインタ」を持つ構造をつなげて実装します。

    ノータブルコード4 - NULLよりも名前付きの番兵オブジェクト - 2020-03-03 - ククログ
    tuto0621
    tuto0621 2020/03/04
    “GDBではpで出力したアドレスが既知のグローバル変数や関数などの場合はその名前も出力してくれます。ここでend_of_listという名前が出てきたのです”
  • ノータブルフィードバック4 - 開発者が知らない言語圏に固有の問題の報告 - 2020-02-29 - ククログ

    結城です。 ノータブルコードに便乗して、実際のOSSのフィードバックを見て「ノータブルフィードバック」と題してお届けする記事の4つ目は、筆者がチャットツールのZulipに対して行ったフィードバックです。 実際の報告 ■タイトル typeahead: "keydown" events for Enter and Arrow keys should be ignored while "composition" ≪インクリメンタル検索: Enterキーと矢印キーのkeydownイベントは「コンポジション」の最中は無視されるべき≫ ■説明 First, I describe what is the "composition". ≪最初に、「コンポジション」とは何かを説明します。≫ In CJK language regions, people use some software named "IM

    ノータブルフィードバック4 - 開発者が知らない言語圏に固有の問題の報告 - 2020-02-29 - ククログ
    tuto0621
    tuto0621 2020/03/02
  • ノータブルフィードバック1 - 導入時のつまずきを減らす報告 - 2020-02-25 - ククログ

    結城です。 最近このブログで、「よいコミット・よいコードの実例」を紹介することを通じて他の人のコードを読むことを奨励していく、ノータブルコードというコーナーが始まりました。それに便乗する形で、「OSSへのよいフィードバックの実例」の紹介を通じて身近なところからのOSSへのフィードバックを奨励していく記事を掲載していきたいと思います。 1回目は、当社の堀さんがOCamlというプログラミング言語に対して行ったフィードバックをご紹介します。 フィードバックの経緯 当初、OCamlのWindowsでのインストール手順は、必要なコマンドを以下の順で実行するよう書かれていました。 opam init eval `opam env` opam switch create 4.06.1 eval `opam env` which ocaml ocaml --version この最後のocaml --ve

    ノータブルフィードバック1 - 導入時のつまずきを減らす報告 - 2020-02-25 - ククログ
    tuto0621
    tuto0621 2020/02/26
  • ノータブルコード3 - 危険なバグを仕組みで予防する - 2020-02-12 - ククログ

    第三回目のノータブルコードで取り上げるのは、分散バージョン管理システムGitのヘッダファイル「banned.h」です。 banned.h とは何か? これは何かと言うと、その名前の通り「危ない関数の利用を禁止する」ためのヘッダです。実際にコードを見てみましょう。 #ifndef BANNED_H #define BANNED_H /* * This header lists functions that have been banned from our code base, * because they're too easy to misuse (and even if used correctly, * complicate audits). Including this header turns them into compile-time * errors. */ #define

    ノータブルコード3 - 危険なバグを仕組みで予防する - 2020-02-12 - ククログ
    tuto0621
    tuto0621 2020/02/13
    error: ‘sorry_strcpy_is_a_banned_function’ undeclared (first use in this function)
  • 2019年、fat gemをやめる - 2019-11-22 - ククログ

    fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bitRuby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ

    2019年、fat gemをやめる - 2019-11-22 - ククログ
    tuto0621
    tuto0621 2019/11/26
    rroongaのWindowsビルドがDevKitだけでできるかがちょっと心配です。
  • PostgreSQL Conference Japan 2019:Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索 #pgcon19j - 2019-11-18 - ククログ

    2019年11月15日(金)にPostgreSQL Conference Japan 2019が開催されました。 私は、「Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索」という題名で、既存の技術を組み合わせて、なるべく楽に高速、高機能な全文検索ができる仕組みを紹介しました。 当日、使用した資料は以下に公開しています。 関連リンク: スライド(Rabbit Slide Show) リポジトリー 内容 RDBMSのマネージドサービスにAmazon RDSがあります。Amazon RDSはマネージドサービスなので、RDBMSの管理や運用などのコストを大幅に下げるような機能(自動レプリケーション、自動フェイルオーバー、自動バックアップ、設定の最適化などなど)がたくさんあり、これらを使うことで、DBの管理、運用はとても楽になります。もちろん、

    PostgreSQL Conference Japan 2019:Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索 #pgcon19j - 2019-11-18 - ククログ
    tuto0621
    tuto0621 2019/11/19
  • 他のチームの知見を活かす - 2019-11-12 - ククログ

    はじめに 弊社では複数のチームがあり、それぞれのチームで日々案件をこなしています。 今回、あるチームで課題を解決した方法を別のチームでも使える可能性があるのでは?ということで、チーム間の情報共有を行う取り組みを始めました。 チーム間の情報共有がなされにくいという課題 弊社は、それぞれのチームで案件が独立しているため、チーム間で情報を交換する必要性をあまり感じません。各案件についての背景知識がないと課題解決できないと考えがちなためです。そのため、現状では、チーム間の情報共有はとても少ないです。 しかしながら、案件によらず、どのチームにも共通する課題は存在します。あるチームで解決した課題と同じような課題で、別のチームが悩んでいるということがありえるのです。 他のチームから知見を得る機会を作ってみた これは、非常にもったいないので他のチームの知見を取り入れられないかと考えました。 チームミーティ

    他のチームの知見を活かす - 2019-11-12 - ククログ
    tuto0621
    tuto0621 2019/11/13
  • OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - 2019-07-12 - ククログ

    結城です。 ここまで、OSSへのフィードバックをやってみようとした時に躓きがちなポイントについて、フィードバックするトピックの見つけ方、報告に盛り込むとよい内容、その情報の送り届け先の選び方の知見をそれぞれ述べてきました。 ところで、それらの技術的な内容以前のハードルとして、言語の壁という物もあります。実際にOSS Gateワークショップでも、フィードバック内容をまとめた後、英語でそれを書き直すという段階で手こずっておられる方がかなり多い印象があります。 ITエンジニア向けに「こういう英語表現を覚えよう」という情報を紹介する記事は時々見かけます。ですが、ワークショップでビギナー参加者の方が英語を書くのに苦労している様子を実際に見ている印象では、必要なのはそういった記事で紹介される「実際の現場でよく使われる単語や熟語の情報」ではなく、「実際の現場で英文を書く時に行われる考え方の解説」の方であ

    OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - 2019-07-12 - ククログ
    tuto0621
    tuto0621 2019/07/17
    “「日本語の文章を英語に変換する」のではなく、「同じ事を説明する英語の文章を作る」という考え方をしよう”
  • ClearCode.vimの紹介(これまでとこれから)と告知 - 2018-03-27 - ククログ

    横山です。去年の11月くらいから、社内でVimの勉強会を始めました。ほぼ週に一度のペースでやっていて、前回(3/14)は14回目の開催でした。 次回から形式を変えるつもりなので、この機会に経緯や方針などを簡単にまとめておきたいと思います。 これまで 始めたきっかけは、主にVimを使っている人が続けて2名(私を入れると3名)入社したことです。クリアコードはおすすめEmacs設定 - ククログ(2011-02-16)を公開しているように、主にEmacsを使っている人が多かったので、Vimの情報がまとまっていませんでした。これはいけないということで、この機会に社内のおすすめVim設定を作ろうというのが最初の目標でした。 その目標は既にclear-code/vim.dで達成しています。今は特に次の目標は定めず、日々の開発で不便だなと感じたことを調べて、Vimで解決できそうなら設定を追加する、という

    ClearCode.vimの紹介(これまでとこれから)と告知 - 2018-03-27 - ククログ
    tuto0621
    tuto0621 2018/03/28
  • Rubyとクリアコード #ruby25th - 2018-02-23 - ククログ

    これはRuby25周年へのメッセージです。 クリアコードの社長の須藤です。そんなにコミットしていないのであんまり自分から言わないのですが、Rubyのコミット権を持っています。 同い年のRubyコミッター8人の中では一番最初にコミット権をもらいました。2004年の1月のことなので、なんともう14年前!当時は大学生だったのですが、すごくドキドキしたことを覚えています。私がコミット権をもらったのは自分が作っているライブラリーがRuby体に取り込まれたからなんですが、会ったこともない人がしっくりくると推薦してくれたことがうれしかったです。Rubyが使いやすいなぁと思って使っていたので、他のRubyistからしっくりくると思ってもらえる使い勝手のライブラリーを作れているのがわかったのが嬉しかったんでしょうねぇ。 クリアコードが始まったのは私が社会人になった2006年の7月で、私は(たしか)9月から

    Rubyとクリアコード #ruby25th - 2018-02-23 - ククログ
    tuto0621
    tuto0621 2018/02/27
    直接お金を稼いでいるわけではないですが、仕事ですごくRubyを活用している例があります。それはRabbit
  • Redmine大阪 第17回勉強会 - 全文検索でRedmineをさらに活用! #RedmineOsaka - 2017-08-27 - ククログ

    株式会社クリアコード > ククログ > Redmine大阪 第17回勉強会 - 全文検索でRedmineをさらに活用! #RedmineOsaka 関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 発表内容は2017年5月13日に開催されたredmine.tokyo第12回勉強会の発表内容をアップデートしたものです。 Redmineの全文検索機能はLIKEベースで実現されていて、「どのくらい検索クエリーに適合していそうか」の概念がないため、「それっぽい検索結果を上位に並び替える」ことができません。そのため、探している情報はヒットしているけど、検索結果の中からなかなか見つけられない、という状態になりがちです。 Groongaベースの全文検索プラグインを導入すると「それっぽい検索結果を上位に並び替える」ため、探している情報をすぐ

    Redmine大阪 第17回勉強会 - 全文検索でRedmineをさらに活用! #RedmineOsaka - 2017-08-27 - ククログ
  • 「クリアコードをいい感じにする人」の採用を開始 - 2017-08-18 - ククログ

    代表取締役の須藤です。コードを書いたり、社外向けの活動をしたり、クリアコードをいい感じにしたりしています。このうち、「クリアコードをいい感じにする」活動を主な業務とする人の採用活動を始めました。職種は「クリアコードをいい感じにする人」です。このような活動をする人が世間でどのような職種として呼ばれているのかわかっていないのでこんな職種名になっています。 クリアコードは以下の2つの両立を大事にしています。 お金を稼ぐこと(フリーソフトウェアを「継続的に」推進していくために必要だから) フリーソフトウェアの推進 これを「継続的に」今よりももっとうまくやれる私たちになりたいと思っています。「クリアコードをいい感じにする」というのはこれを実現するための活動です。 たとえば、今は次のような活動をしています。 1ヶ月に1度クリアコードメンバー全員から個別に最近の話を聞く どうやったら「もっといい感じ」に

    「クリアコードをいい感じにする人」の採用を開始 - 2017-08-18 - ククログ
    tuto0621
    tuto0621 2017/08/20
  • Firefoxの先読み機能の無効化とその確認手順 - 2017-06-16 - ククログ

    ※この記事の情報はFirefox ESR52を対象としています。これより新しいバージョンではこれらの情報は当てはまらない場合がありますので、ご注意下さい。 Firefoxの先読み機能の種類と無効化の方法 FirefoxにはWebサイトの閲覧時の体感的な快適さを向上するため、実際にリクエストが行われる前から接続やデータのダウンロードを行っておくという「先読み」の機能があります。ただし、無差別に全てのリンクを辿るのではなく、いくつかの条件が揃った時に初めて先読みが発動するようになっています。具体的には以下の要領です。 ブログの前後のエントリのように、続けて読まれる可能性が高いリンク HTTPヘッダやリンクの属性値などによって明示的に先読みするよう指示された対象(ログインページを表示している間に、ログイン後のページで使用するための画像などを先読みする、など) 多数の読み込みが並行して進行している

    Firefoxの先読み機能の無効化とその確認手順 - 2017-06-16 - ククログ
    tuto0621
    tuto0621 2017/06/19
    FirefoxにはWebサイトの閲覧時の体感的な快適さを向上するため、実際にリクエストが行われる前から接続やデータのダウンロードを行っておくという「先読み」の機能があります。
  • 関西Ruby会議2017:株式会社クリアコード #kanrk2017 - 2017-05-29 - ククログ

    須藤です。今年2回目の大阪です。(今年1回目の大阪はOSS Gate大阪ワークショップ2017-02-25でした。) 2017年5月27日に関西Ruby会議2017が開催されました。「Ruby Community and Ruby Business」がテーマということだったので、会社の話をするのがいいだろうなぁと思い、「株式会社クリアコード」というタイトルで基調講演をしました。 関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 「Ruby Community and Ruby Business」というテーマなので、クリアコードは「Ruby Community」と「Ruby Business」を相互に活かしながらクリアコードが大事にしていることを実現している、という話をしました。クリアコードでの「Ruby Community

    関西Ruby会議2017:株式会社クリアコード #kanrk2017 - 2017-05-29 - ククログ
    tuto0621
    tuto0621 2017/05/29
    コミュニティーとビジネス、問題はupstreamで直す
  • バグを踏んだら開発元(upstream)に報告するのをまわりに勧めてみよう - 2016-10-27 - ククログ

    はじめに クリアコードでは、普段の開発で実践していることを開発スタイルとしていくつかまとめています。 そのなかの一つが、「問題を見つけたらupstreamで直す」です。 今回は、自分達で実践するだけではなくて、「問題を見つけたらupstreamで直す」のをまわりに勧めてうまくいった事例(Kermitの不具合を報告)を紹介します。 Kermitとは Kermitとはシリアル通信でファイル転送をするためのプロトコルであり、組み込み用途にEmbedded Kermitが用意されています。 今回の事例では、シリアル通信でファイルを転送するのにEmbedded KermitJavaの実装を採用していました。 どんなバグを踏んだのか Kermitを利用してファイル転送をしていると、ファイルの内容が破損するという問題に遭遇しました。 Embedded KermitJavaの実装は10年以上修正されて

    バグを踏んだら開発元(upstream)に報告するのをまわりに勧めてみよう - 2016-10-27 - ククログ
    tuto0621
    tuto0621 2017/02/08
    Kermitを利用してファイル転送をしていると、ファイルの内容が破損する
  • 新装版 達人プログラマー - 2016-12-02 - ククログ

    2016年10月にオーム社から「新装版 達人プログラマー 職人から名匠への道」というプログラマーとしてよい仕事をするためのが出版されました。 https://amazon.co.jp/dp/9784274219337 内容 書は1999年に出版された英語の翻訳です。そのため、内容は1999年当時のものです。そう聞くと時代遅れの内容だと感じます。しかし、驚くべきことに2016年のいま読んでも時代遅れになっている内容がほとんどありません。これは、書の内容が一過性のものではなく時代に左右されにくい質的なことだったということです。 そのため、これからプログラマーとしてよい仕事をしたい若い人にオススメしたいです。(一過性の内容ではなく)質的な内容を学べることはすばやくレベルアップすることにつながるからです。 ただ、若い人はまだピンとこない内容かもしれません。ある程度経験がないとピンと

    新装版 達人プログラマー - 2016-12-02 - ククログ
    tuto0621
    tuto0621 2016/12/06
    驚くべきことに2016年のいま読んでも時代遅れになっている内容がほとんどありません