タグ

ブックマーク / labs.cybozu.co.jp (30)

  • ‘-‘ という名前の、中身が無いのに70万回ダウンロードされてる謎のnpmパッケージ

    – という名前の JavaScript/TypeScript パッケージについて警告を発している記事が話題となっています。 このパッケージ、中身はほとんど空で、Readme と、dev で TypeScript を動かせるようにするライブラリ群を呼ぶ箇所だけのもの。 しかし、この “-” を使っている他の npm パッケージが 50個以上あり、約一年前の公開時からのトータルのダウンロード数は72万回にもなります。 しかし、”-” を読み込んでいるパッケージを見てみても、”-” が必要そうには見えません。 警告記事では、この無名のパッケージが密かに使われるようになった原因が、npm コマンドのコマンドラインを打つときのミスタイプにあるのではないかとの仮説を立てています。 つまり、someFlag というオプションを使い npm i -someFlag somepackage と打つべきところ

    ‘-‘ という名前の、中身が無いのに70万回ダウンロードされてる謎のnpmパッケージ
  • プログラミング言語TrumpScript

    TrumpScript は、高名なドナルド・トランプ氏を基にした新たなプログラミング言語です。現在のプログラミング言語の中に、トランプ氏の豪華な金髪バーコードヘアにも気に入られるような言語が無いことから制作されました。 […] TrumpScript は、高名なドナルド・トランプ氏を基にした新たなプログラミング言語です。現在のプログラミング言語の中に、トランプ氏の豪華な金髪バーコードヘアにも気に入られるような言語が無いことから制作されました。 特徴 浮動小数点数無しで整数のみ。アメリカに中途半端はありません 数は100万以上に限ります。それ以下の数字は取るに足らないからです import はできません。すべてのコードはアメリカで作った国産でなければなりません True/False(真/偽)ではなくfact/lie(事実/嘘)を使います 良く知られた、トランプ氏の好きな(2000個ちょっとの

    プログラミング言語TrumpScript
  • kamo from scratch: Perl: オブジェクトのunbless

    perlblessはオブジェクトにクラス名をマッピングする命令です。 my $a = bless {}, "AA::BB::CC"; print ref($a), "\n"; を実行すると、AA::BB::CCが表示されます。 ほかの名前でblessし直すとその名前で古い対応関係が上書きされます。ではその対応関係を解除するにはどうすればよいのでしょう。bless $a, "HASH"などとすれば、ref関数の結果はblessする前と同じになりますが、依然としてblessされたままです。たとえば、Scalar::Utilのblessed命令を実行すると、blessされたままであることがわかります。 blessの解除を行うために、Data::Structure::Utilパッケージのunblessという命令が使えます。 use Scalar::Util qw(blessed); use Da

  • Kazuho@Cybozu Labs: setlock を使って cron をぶんまわす方法

    « データベースをコピーするモジュール DBIx::Replicate | メイン | Tritonn (MySQL+Senna) の join を高速化 » 2008年01月30日 setlock を使って cron をぶんまわす方法 事前計算や DB 再構築を手軽に実行するのに cron は便利ですが、タスクのまわし過ぎによるサービスのパフォーマンス低下や実行順序の制御を別途行う必要があります。自分は、そのためのツールとして、daemontools の setlock コマンドがお気に入りです。setlock は、flock を用いて、タスクの待機や実行中止を制御することのできる、とても小回りのきくプログラムです。 1-59/* * * * * /usr/local/bin/setlock -nx /tmp/precompute.lock /usr/local/bin/setlock

  • 自前のメールサーバーを使っていても多くのメールはGmailユーザーの友人経由でGoogleに捕捉されている、という話

    自前のメールサーバーを使っていても多くのメールはGmailユーザーの友人経由でGoogleに捕捉されている、という話 自分の電子メールは自分のサーバで管理し、プライバシーを守りたいとしてきた ベンジャミン・ヒル(Benjamin Marko Hill)さんが、Gmailのサービスが開始した2004年からの10年間の自分のプライベート用メ […] 自分の電子メールは自分のサーバで管理し、プライバシーを守りたいとしてきた ベンジャミン・ヒル(Benjamin Marko Hill)さんが、Gmailのサービスが開始した2004年からの10年間の自分のプライベート用メールアドレスのメールボックスを解析してみたところ、近年では1/3から半分近くのメールがGmailのサービスにも知られている、という結果が出たそうです。 ヒルさんは、ネットの検閲に反対するなどの活動で知られる電子フロンティア財団(EF

    自前のメールサーバーを使っていても多くのメールはGmailユーザーの友人経由でGoogleに捕捉されている、という話
  • wが二つ重なった文字「ʬ」がバイラビアル・パーカッシブだと調べる方法

    もともと2ちゃんねるで回答されたものみたいですが、「wが縦に二つ重なった文字の出し方教えて」という質問に対して、「ʬ」を出したり、その読み方が「バイラビアルパーカッシブ」だと回答した人はどうやって調べたんでしょうね。 そ […] もともと2ちゃんねるで回答されたものみたいですが、「wが縦に二つ重なった文字の出し方教えて」という質問に対して、「ʬ」を出したり、その読み方が「バイラビアルパーカッシブ」だと回答した人はどうやって調べたんでしょうね。 その回答者がこれを使ったかどうかはわかりませんが、ユニコード内の文字だと、ShapeCatcherというサイトで調べられます。 左側のボックスに、マウスで探したい文字を書き、”Recognize”(認識せよ)をクリックすると、下にそれに近い文字が列挙されます。wを縦に二つ書いてみましょう。 コード 0x2ac のラテン文字 bilabial perc

    wが二つ重なった文字「ʬ」がバイラビアル・パーカッシブだと調べる方法
  • 日本のウェブデザインがこんなに悪い^H^H違う理由

    Why Japanese Web Design is so… Different?(なぜ日のウェブデザインはこんなに…違うのか?) というのが、はてなブックマークで人気になっていたので読んでみました。 英語 […] Why Japanese Web Design is so… Different?(なぜ日のウェブデザインはこんなに…違うのか?) というのが、はてなブックマークで人気になっていたので読んでみました。 英語で日のウェブデザインを語る記事は、良くわかってないものも多いのですが、今回のはかなり正確に現状やその理由を捉えているように思いました。ポイントをざっとまとめます。 禅庭などの文化、建築などで知られる日のデザインが、ウェブについては15年も古く見えるのはなぜか? 人気サイトとして楽天を例に (同様の例としてヤフージャパン、ニコニコ、JR東日、読売新聞なども) 詰め込ま

    日本のウェブデザインがこんなに悪い^H^H違う理由
  • ちょっと悲しい、スタートアップの集合写真

    いかにもスタートアップ、という風のシリコンバレーのweb広告技術の会社。企業サイトの「チーム紹介」のページは、オシャレデザインのオフィスに、カジュアルな服装でリラックスした感じの集合写真です。マウスカーソルをあわせると名 […] いかにもスタートアップ、という風のシリコンバレーのweb広告技術の会社。企業サイトの「チーム紹介」のページは、オシャレデザインのオフィスに、カジュアルな服装でリラックスした感じの集合写真です。マウスカーソルをあわせると名前が表示されるというギミックも今風です。 が、しかし、どこにでも良く見ている人はいるもので、「まったく同じ写真なのに、人が居なくなったり、別の人が増えたりしてるぞ」という発見者が。 一見、同じ場所で撮り直したようにも見えますが、両方の写真に映っている数人を見ると、まったく同じ服装、まったく同じポーズです。つまり、社員が辞めたり増えたりすると、この集

    ちょっと悲しい、スタートアップの集合写真
  • HttpsとTorで守れるデータ、守れないデータ – 電子フロンティア財団(EFF)の作成した図の読み方

    HttpsとTorで守れるデータ、守れないデータ – 電子フロンティア財団(EFF)の作成した図の読み方 電子フロンティア財団が作った、HTTPSとTorを使った時に通信の何が守られるのかを表すダイナミック・チャートがよくできています。 図の登場人物に日語の訳をつけてみましたが、リンク先で実際に左上の「HTTPS」と「To […] 電子フロンティア財団が作った、HTTPSとTorを使った時に通信の何が守られるのかを表すダイナミック・チャートがよくできています。 図の登場人物に日語の訳をつけてみましたが、リンク先で実際に左上の「HTTPS」と「Tor」をオン・オフしてみて、httpsやTorでwebサービスにアクセスすることで、インターネットの途中の通信路にアクセスできる第三者に対して、あるいはアクセス先のwebサービスのサーバにアクセスできる人に対して、何を隠すことができるのか、を見る

    HttpsとTorで守れるデータ、守れないデータ – 電子フロンティア財団(EFF)の作成した図の読み方
  • 画面をスクロールするとオナラの音が出るJavaScriptライブラリfartscroll.js

    fartscroll.js は、画面をスクロールさせるとオナラの音が出る、というジョークライブラリです。このページをスクロールさせてみてください。 どれぐらいスクロールさせた時に音が出るかも、パラメーターとして与えること […] fartscroll.js は、画面をスクロールさせるとオナラの音が出る、というジョークライブラリです。このページをスクロールさせてみてください。 どれぐらいスクロールさせた時に音が出るかも、パラメーターとして与えることができます。 ライブラリを作成・公開した The Onion は、日でいう bogusnews みたいな、嘘ニュースで笑いを取ることで有名なサイトです。 # 今bogusnewsのトップにあるのも屁のニュースですね。流行ってるの? その The Onion 技術チームが新たにリリースしたこのライブラリは、jQueryベースで作られていて、GitH

    画面をスクロールするとオナラの音が出るJavaScriptライブラリfartscroll.js
  • コメントスパムの手の内が、スパマーのミスでダダ漏れに

    Githubユーザーshanselmanさんが、「自分のブログにコメントスパムを書き込もうとしたスパマーが、バグか何かでこれを書き込んできたよ」と、スパマーが使っていたテンプレートらしきものを公開して、Hacker Ne […] Githubユーザーshanselmanさんが、「自分のブログにコメントスパムを書き込もうとしたスパマーが、バグか何かでこれを書き込んできたよ」と、スパマーが使っていたテンプレートらしきものを公開して、Hacker Newsでも話題になっています。 以下のような感じで100行以上あるのですが、 { {I have|I've} been {surfing|browsing} online more than {three|3|2|4} hours today, yet I never found any interesting article like yours.

    コメントスパムの手の内が、スパマーのミスでダダ漏れに
  • Codespell – Java言語がそのまま呪文となる教育用3Dゲーム

    カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した Codespell は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。 Codesp […] カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した Codespell は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。 Codespellでは、プレイヤーは小動物ノーム(gnome)たちが住む土地にやってきた魔法使いです。ノーム達は過去に魔法を使って生活していたのですが、今は魔法をうまく使えなくなっています。魔法の呪文はJava言語プログラムで、物体を浮遊させるとか火を起こすといった7つの手持ちの呪文を使って、ノーム達を助け、火を消したり川を渡ったりといったクエストを解き、バッ

    Codespell – Java言語がそのまま呪文となる教育用3Dゲーム
  • Kazuho@Cybozu Labs: Re: はてな認証 API

    « はてな認証 API | メイン | Hash ≠ MAC » 2006年05月06日 Re: はてな認証 API naoya さんありがとうございます、ということで、「認証APIのメモについてのレス」への返答です。 2006/5/7 追記: 1) で述べた MD5 による api_sig の偽装が可能であることを確認しました。この偽装を用いた攻撃は、auth.json および auth.xml については、1) に述べたとおり成功しません。認証リンクについては、仕様として任意のパラメータをハンドリングできる必要があるので、攻撃が成立してします (攻撃者がパラメータを追加することができる)。 よって、認証リンクの署名機能は壊れている、と言わざるを得ないように思います。 3) パラメータ指定の手法について 先にこちらから。 パラメータ指定は先日サポートしました。http://auth.ha

  • 秋元@サイボウズラボ・プログラマー・ブログ: regist という英語は無い

    さて、サイボウズラボの立ち上げプレスリリースが出たこの瞬間、とりあえずこのブログを見に来る人も多いと思われる。そんなチャンスに、このブログを読んだ人、特に日のソフトウェア技術者に一番訴えたいことってなんだろう? と考え […] さて、サイボウズラボの立ち上げプレスリリースが出たこの瞬間、とりあえずこのブログを見に来る人も多いと思われる。そんなチャンスに、このブログを読んだ人、特に日のソフトウェア技術者に一番訴えたいことってなんだろう? と考えた。 それは、日プログラマーだけが使う謎の動詞 registについてである。そんな単語は存在しないから、ちゃんと “register” を使おう。 Google.com で regist.cgi を検索 Google.com で regist.php を検索 出てくるのは日語のサイトばっかりである。拡張子を”.jsp” や “.asp” にし

    秋元@サイボウズラボ・プログラマー・ブログ: regist という英語は無い
  • Kazuho@Cybozu Labs: キャッシュの上手な使い方

    « C-0.05 | メイン | cygwin + mod_perl » 2006年02月08日 キャッシュの上手な使い方 キャッシュといっても、ウェブブラウザやウェブプロキシのキャッシュのことです。 ・Internet Explorer のキャッシュの動作 Internet Explorer は、同一ウィンドウ内で複数回同じウェブページを読み込む場合、2回目以降はキャッシュのデータを使用します (デフォルト設定の場合、 Last-Modified または Expires ヘッダがついている場合のみ)。 つまり、同じウィンドウの中で、 ページA を読み、次にページB を読み、そしてページA を再び読み込むようなケースでは、2回目にページ A を表示する際にはキャッシュのデータが使用され、ウェブサーバへの再問い合わせは行われません。 また、 Last-Modified ヘッダと Expire

  • Kazuho@Cybozu Labs: Q4M - MySQL 上で動作するメッセージキュー

    « ウェブアプリケーションにおけるHDDの正しい使い方 | メイン | Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) » 2008年01月15日 Q4M - MySQL 上で動作するメッセージキュー 数年来ずっと「RDBMSに統合されたメッセージキューがほしい」と言ってきたわけですが、昨年末にストレージエンジンをプラグインとして開発できる MySQL 5.1 が RC になっていることに気づき、自分で作ってみました。 Q4M (Queue for MySQL) は MySQL 5.1 のプラガブル・ストレージ・エンジンとして動作するメッセージキューであり、堅牢・高速・柔軟であるよう設計されています。昨年12月遅くに開発が開始され、まだ非常に原始的ですが、かなり高速に動作します。 q4m.31tools.com 自分の英語を日語訳するというのも変なものですが

  • Kazuho@Cybozu Labs: サーバメンテナンス中にエラー画面を返す方法

    « Pathtraq サービス中断のお知らせ | メイン | Japanize と Pathtraq が Firefox 3 Beta 1 に対応しました » 2007年11月18日 サーバメンテナンス中にエラー画面を返す方法 サービスのメンテナンス中など、ウェブサーバ全体で 503500 エラーを返したいようなケースがあると思うのですが、その場合どうすればいいのでしょう。ちょっとググってみたけど分からなかったので自分で考えてみました。 ErrorDocument 503500 "Sorry. The service is under maintenance." RedirectMatch 503500 .* とりあえずこんな感じでいいみたい。RedirectMatch 等の設定ディレクティブで 300 番台以外のステータスコードを指定できることを今回初めて知りました。 (参考: mod_

  • Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 (nakatani @ cybozu labs)

    « MyMiniCity 日語化 | メイン | JSRuby から jQuery を使う ( Javascript 連携 ) » Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 あけましておめでとうございます。 1月からサイボウズ・ラボのオフィスが引っ越しました。新年から気分も新しくぶりぶり仕事します。よろしくです。 というわけでちょっとずつ作っていました Javascript で実装した Ruby インタプリタの "JSRuby" を一区切り付けるべくバージョン番号を付けてリリースしました。 JSRuby Project Page (CodeRepos) http://coderepos.org/share/wiki/JSRuby JSRuby Test Page http://labs.cybozu.co.jp/blog/naka

  • Kazuho@Cybozu Labs: Tritonn (MySQL+Senna) の join を高速化

    « setlock を使って cron をぶんまわす方法 | メイン | Range Coder の終了処理 » 2008年02月05日 Tritonn (MySQL+Senna) の join を高速化 自分の利用形態において、Tritonn の処理を最適化するパッチを書きました。具体的には、2種類の最適化を行いました。ひょっとするとバグがあるかもしれませんが、興味がある方は、以下のパッチ (tritonn-1.0.9用) とあわせてごらんください。 1. 全文索引内にプライマリキーを格納 SQL クエリを最適化する際、アクセスしたい全カラムを格納したインデックスを作成することで行データへのアクセスを抑止して速度を稼ぐ、というのは定石のひとつです。しかし、MySQL の全文索引 (フルテキストインデックス) では、他のカラムと組み合わせた複合キーを作成することができません。このことが、T

  • IIR の階層的クラスタリングを試す (nakatani @ cybozu labs)

    Pathtraq で Web ページの自動分類を手がけてみて。 Web ページは日々どんどん変わっていくのでフィルタは常に更新されなければいけないんですが、そのためには適切なタイミングに、適切な学習データを用意しなければならない。大変。 メンテナンスフリーが理想ですが、もちろん難しい。 現実的なところとしては「追加学習が必要なことを検知して、適切な学習データの候補を提案してくれる」というものが作りたいなあ……などなど考えているわけです。 そこらへんも含めて、自然言語処理とか機械学習とかそこら辺のお勉強をしてるんですが、実際に手を動かさないとわかんないですよねー。 というわけで、 "Introduction to Information Retrieval" の Chapter 17 "Hierarchical clustering" に沿って、ドキュメントの分類器を作ってみました。 ポイン