タグ

2013年12月12日のブックマーク (20件)

  • すごく簡単なアルゴリズムがphpで書けなくてつらい - Qiita

    ある条件でソートされているIDのリストを与えられて、なんとなく近い範囲でマッチングさせたいという要件があった。配列からの任意の要素の取り出しは O(n) だけど、末尾や末尾から固定した範囲の要素に限って言えば O(1) なので、後ろの方からマッチングさせながら要素を取り出していけば O(n) でマッチングできるはず。 なんにも難しいことは無い話で、 Python で書けばこうなる。 list.pop() が末尾からのインデックス (-1 が最後の要素を表す) を許すのが地味に便利だ。 # coding: utf-8 def match(seq, r=100): from random import randint # 奇数個の時に先頭周辺の要素がボッチになるのが嫌なら、先に後ろの方の # 要素を取り除いて偶数にしておくこと. while len(seq) >= 2: # 引数を省略すると末

    すごく簡単なアルゴリズムがphpで書けなくてつらい - Qiita
    oppara
    oppara 2013/12/12
    Python - すごく簡単なアルゴリズムがphpで書けなくてつらい - Qiita [キータ]
  • PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ

    この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ

    PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ
    oppara
    oppara 2013/12/12
  • PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-

    PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    oppara
    oppara 2013/12/12
  • Home

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Home
    oppara
    oppara 2013/12/12
    Home · gree/haskell-tutorial Wiki
  • クライアントサイドJavaScriptのライセンス管理 | GREE Engineering

    最近シリコンウエハーもらって嬉しかったago(@kyo_ago)です。 このエントリはGREE Advent Calendar 2013 11日目の記事です。 今回はクライアントサイドJavaScriptにおけるライセンス管理の問題を取り上げたいと思います。 ライセンス管理の問題点 「使用しているライブラリのライセンス管理をどうするか」はクライアントサイドJavaScriptにかぎらず発生する問題ですが、クライアントサイドJavaScriptには以下の様な特徴があるため問題が複雑になります。 コードが結合、圧縮される場合がある クライアントサイドJavaScriptでは読み込みの速度を上げるため、使用しているライブラリの結合、圧縮を行うことがあります。しかし、この時誤ってライセンス文が捨てられてしまうことがあります。 ソースが外部に公開される クライアントサイドJavaScriptではソー

    クライアントサイドJavaScriptのライセンス管理 | GREE Engineering
    oppara
    oppara 2013/12/12
  • 社内Haskellチュートリアルのススメ | GREE Engineering

    こんにちは。インフラストラクチャ部の竹辺(@beketa)です。 このエントリはGREE Advent Calendar 2013 12日目の記事です。 1. グリーでのHaskellプログラマ採用 Haskellを導入する企業が増えているようです。最近国内のメディアで紹介された事例だけでも Tsuru Capital様: http://itpro.nikkeibp.co.jp/article/Watcher/20131003/508622/ NTTデータ様: http://itpro.nikkeibp.co.jp/article/NEWS/20131126/520642/ の複数があり、すっかり実用的なプログラミングとして定着した感があります。 弊社でも2012年の中ごろから複数のプロジェクトでHaskellを使い始めており、昨年からは一部の商用サービスでもHaskellで開発したミド

    社内Haskellチュートリアルのススメ | GREE Engineering
    oppara
    oppara 2013/12/12
  • zsh で コマンドライン中に改行する - Qiita

    コマンドライン中に改行文字をそのまま埋め込んでいるような感じになるので、^P か上矢印で1行目に戻って修正もできるようになる。ちなみに、'^J' というキーバインドを J 以外に変えるとうまく動かないので注意。 実はこの機能は bindkey で設定していない時でも使えて、 ESC-^J ESC-^M を押せば OK。でもちょっと押しにくいので、このキーバインドを設定しておいたほうがいいと思う。 2013/12/07 12:00 追記 コメントで self-insert-unmeta ではなく self-insert で良いのではという指摘をもらいました。たしかにその通りです。self-insert-unmeta でも動作するのですが self-insert の方がよりふさわしいので修正しました。

    zsh で コマンドライン中に改行する - Qiita
    oppara
    oppara 2013/12/12
  • bundle exec を打たなくて良くなる zsh プラグイン書いた - Qiita

    エントリでは僕が初めてつくった zsh プラグインを紹介します. Ruby を使っている人なら bundler のお世話になっている方が多いと思いますが, その bundler をより便利に使うためのプラグインになります.Ruby を使わない方 には直接は関係ないですが,アイデアは応用できるかもしれません. Bundler の問題点 Bundler は gem の依存関係をローカルな範囲で管理できる gem で,Rails を始め色々 なところで使われています.この bundler を使う上で,面倒くさいことの1つが bundle exec です. bundler でインストールされた gem をコマンドラインから実行する場合,$PATH が通っていないため, 実行する場合は bundle exec を使う必要があります. 例えば,railsbundler でインストールした場合,

    bundle exec を打たなくて良くなる zsh プラグイン書いた - Qiita
    oppara
    oppara 2013/12/12
  • zshのPATHの自動重複削除や余計なPATHの削除 - @znz blog

    シェルの中から exec zsh をしたり、 GNU screen や tmux を経由して間接的にシェルの中でシェルを開いたりするときに 何も考えずに PATH を追加していくと どんどん長くなっていってしまうと思います。 bash などでも使えるように汎用的にしようとすると自前で頑張らないといけないのですが、 zsh では zsh 自体の機能で簡単に重複を防げます。 また、パスに望ましくないものが入っていた時に削除する方法も紹介します。 この投稿は zsh Advent Calendar 2013 の12日目の記事です。 重複削除 重複を削除するには

    oppara
    oppara 2013/12/12
  • zsh+git使ってる時にキャレットを自動エスケープする - Qiita

    問題 zsh使っててgit diff HEAD^すると、zsh: no matches found: HEAD^エラーが発生する。 解決法 zsh-git-escape-magicをインストールする。 解説 zsh使っててextended_glob設定していると、キャレットは特殊文字とみなされてしまいます。 そのため、

    zsh+git使ってる時にキャレットを自動エスケープする - Qiita
    oppara
    oppara 2013/12/12
  • zshのカレンダー | Advent Calendar 2013 - Qiita

    About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    zshのカレンダー | Advent Calendar 2013 - Qiita
    oppara
    oppara 2013/12/12
  • オレオレSQLセキュリティ教育は論理的に破綻している

    (Last Updated On: 2018年8月20日)ツイッターでの議論を見て「SQLエスケープを教える必要はない」とする原因は「教育の基」と「セキュリティの基」の理解不足が「根的な原因」だと解ってきました。この事についてもブログを書くかも知れませんが、今日は「オレオレSQLセキュリティ教育」、言い換えると「自分の環境に特化したSQLセキュリティ教育」について書きます。一般論・基礎としてのセキュリティ教育は、自分の環境に特化したセキュリティ教育では困る、という話です。 このエントリは「貴方が普段言っている事が間違っている」と非難または攻撃しているのではありません。実務で「プリペアードクエリ・プレイスホルダ・ORMを使いましょう」と言うことは全く間違っていません。セキュリティ教育はこういう手順で教えたほうが解りやすいです、と提案しています。 ツイッターでSQLセキュリティ教育に「エ

    オレオレSQLセキュリティ教育は論理的に破綻している
    oppara
    oppara 2013/12/12
  • エスケープファースト、この順序は変えられない

    (Last Updated On: 2018年8月8日)アプリセキュリティ対策の根的なセキュリティ対策は教育です。セキュリティ対策を教育する場合、エスケープファースト(エスケープを一番)にすると最も高い効果を期待できます。汎用性もあり、自己解決する能力も付きます。 教育がアプリセキュリティ対策の根的対策である、とすることに異論は無いでしょう。開発者が脆弱な設計をしたり、コードを書いたりしなければ脆弱なアプリケーションは作られません。 このエントリでは出力のセキュリティ対策(教育)をテーマに考えてみます。 効果的なセキュリティ教育の手順 では根的対策である開発者のセキュリティ教育を効果的に行う手順はどのような手順でしょうか? セキュリティ対策の基は「リスク認識」です。幼児が崖や走っている車の危険性を認識できないのは「崖が危険」、「車が危険」だと認識していないからです。人は先ず危険であ

    エスケープファースト、この順序は変えられない
    oppara
    oppara 2013/12/12
  • 出力先のシステムが同じでも、出力先が異なる、を意識する

    (Last Updated On: 2018年8月4日)出力先のシステムが同じでも、出力先が異なる場合はよくあります。これを意識していないとセキュリティ問題の原因になります。 私は普段から出力を行う場合には、どのような出力先であるか、を常に意識しています。「大垣はなぜエスケープにこだわるのか?」と疑問に思っている方も居ると思います。その理由は出力にこだわっているからです。安全なプログラミングには出力先を良く理解する事が必須だからです。フレームワークやライブラリは出力先の特性を良く理解していなくても、安全に出力できるような仕組みを提供している場合もあります。しかし、前提条件があったり、不完全な場合も多いです。フレームワークやライブラリが完全であるかないか?を確認・理解する為にも出力先と出力先に対する適切なエスケープ/バリデーションにはこだわる必要があります。APIを利用した出力を行っている場

    出力先のシステムが同じでも、出力先が異なる、を意識する
    oppara
    oppara 2013/12/12
    出力先のシステムが同じでも、出力先が異なる、を意識する | yohgaki's blog
  • PHP文字列のエスケープ

    (Last Updated On: 2021年5月9日) PHP文字列をテキストとして出力したい場合もあります。PHPの文字列型はバイナリセーフなのでどのようなデータでも保存可能ですが、プログラム中でPHP変数をPHPのテキスト(リテラル)として出力するにはaddslashes()によるエスケープ処理が必要です。 【重要】エスケープ/API/バリデーション1は出力先に合った方法でないと意味がないです。一口にHTMLと言っても複数の”コンテクスト”があります。 JavaScript(識別子、変数など)、CSS、タグ属性名、タグ属性値(URIコンテクストに特に注意。BASE64、JavaScriptを使う場合もある) があります。 SQLクエリと言っても 引数(更にLIKE、正規表現、JSON、XMLなどに別れる)、識別子、SQL語句 などがあります。全てのテキストインターフェースにコンテクス

    PHP文字列のエスケープ
    oppara
    oppara 2013/12/12
  • ジョブセキュリティ:セキュリティ業界の為のセキュリティ対策ではありませんか?

    (Last Updated On: 2018年8月4日)追記:このエントリの背景となる根拠の一部となる開発者は必修、SANS TOP 25の怪物的なセキュリティ対策に書きました。こちらも合わせてご覧ください。 今日のエントリは「セキュリティ業界ジョブセキュリの為のセキュリティー対策になっていないか?」という話です。 ジョブセキュリティ 知らないと仕事にならないような、雇用を守る作用を持つ手法や知識のこと。 セキュリティ対策は様々な対象を守る為に行いますが、このエントリではアプリケーションセキュリティを維持することだけを考えます。 セキュリティで飯をべるには脆弱性が量産されればされるほど困る事はありません。脆弱性を量産するには基的なセキュリティ対策を教えないことが最も効果的です。 SANS/CWE TOP 25では、ソフトウェアの脆弱性を無くす為に最も効果的なセキュリティ対策は「確実な入

    ジョブセキュリティ:セキュリティ業界の為のセキュリティ対策ではありませんか?
    oppara
    oppara 2013/12/12
  • いまさら聞けないWebアプリセキュリティの基本ルール

    (Last Updated On: 2018年8月8日)C言語の最も重要なセキュリティの基ルールは「メモリをきっちり管理する」です。もちろん他にもプログラミングをする上で注意しなればならない事は山ほどありますが、C言語でプログラミングする上で最も基的なセキュリティのルールは「正確なメモリ管理」です。 Webアプリを作る上でのセキュリティの基ルールは何でしょうか? 今回はWebアプリセキュリティはもっとシンプルに考えよう!という話です。 Webセキュリティの基ルールは正確なテキスト管理 C言語で最も重要なセキュリティの基ルールは「正確なメモリ管理」です。セキュリティの基である「正確なメモリ管理」がされていないと「不正なコードをインジェクションされ実行」されてしまいます。不正なコードを実行されることはシステムの乗っ取られる事を意味します。 1つの間違いでサーバーを乗っ取られる可能性

    いまさら聞けないWebアプリセキュリティの基本ルール
    oppara
    oppara 2013/12/12
    いまさら聞けないWebアプリセキュリティの基本ルール | yohgaki's blog
  • エンジニア必須の概念 – 契約による設計と信頼境界線

    (Last Updated On: 2019年5月29日)少し設計よりの話を書くとそれに関連する話を書きたくなったので出力の話は後日書きます。 契約による設計(契約プログラミング)(Design by Contract – DbC)は優れた設計・プログラミング手法です。契約による設計と信頼境界線について解説します。 契約プログラミングとは 契約プログラミングは比較的新しい設計思想で、サポートしている言語にはEffile、D、Clojure、Valaなどがあります。最近作られた言語の多くが契約プログラミングをサポートする機能を持っています。C++、C#やJavaなどでも契約プログラミングをサポートするライブラリが利用できます。契約プログラミングをサポートする言語やライブラリを利用しない場合でも、契約プログラミングの概念を適用すると安全かつ効率が良い開発の手助けになります。 Wikipdiaの

    エンジニア必須の概念 – 契約による設計と信頼境界線
    oppara
    oppara 2013/12/12
    エンジニア必須の概念 – 契約による設計と信頼境界線 | yohgaki's blog
  • 最近行ったTDDの講演や寄稿について - t-wada の日記(旧)

    こんにちは、だんだんブログ勘を取り戻していきたい和田です。このエントリは TDD Advent Calendar 2013 の 11 日目のエントリです。このエントリでは、最近行ったテスト駆動開発関連の講演や寄稿に関して、この機会にまとめておきたいと思います。 DevLOVE 現場甲子園 まず 11/9 にDevLOVE現場甲子園2013にて「テストを書く文化を育てる戦略と戦術」というタイトルで短い講演をさせて頂きました。DevLOVE 甲子園は楽天第2タワー大広間の四隅で最大四つの講演が同時に行われるという意欲的なイベントで、話す方も気合い(と声量)が必要な場でした。 この講演では、開発者が自動テストを書く文化が無かった組織に自動テストの文化を育てる際の姿勢、心がけについて短い時間でまとめました。そのときの講演資料がこちらです(ライセンスは CC BY です)。 テストを書く文化を育てる

    最近行ったTDDの講演や寄稿について - t-wada の日記(旧)
    oppara
    oppara 2013/12/12
  • Jenkins がもっと便利になるおすすめプラグイン 8 つ

    こんにちは、開発担当の松です。 今回は、Jenkins にたくさんあるプラグインの中からおすすめのプラグインをいくつか紹介します。 ジョブ一覧にアイコンを追加できる: Custom Job Icon 今年8月にリリースされた比較的新しいプラグイン。名前の通りプロジェクトごとにアイコンを登録できて、それがプロジェクト一覧に表示されるようにできます。 利用するには、プラグインインストール後にアイコンを登録する必要があります。 「Jenkins の管理」→「システムの設定」ページに「Custom icons」セクションが追加されていますので、そこでファイルを追加しておきます。追加しても「Refresh icon list」をクリックしないと表示が更新されない点に注意。 なお、画像の拡大縮小あまりきれいに行われないので、アイコンのサイズは 24 x 24 にしておくのがよいみたいです。 アイコン

    Jenkins がもっと便利になるおすすめプラグイン 8 つ
    oppara
    oppara 2013/12/12