タグ

progに関するNOV1975のブックマーク (129)

  • 機械学習を用いると匿名のソースコードから個人を識別可能であることが判明

    by Brian Klug プログラミング言語を用いて書かれた「ソースコード」はあらかじめ定められた規則に従って記述する必要があり、匿名で公開されたコードから個人を識別することは困難に思えるかもしれません。ところが、実際にはコードにも個人の特徴が色濃く表れており、機械学習を用いてコードのサンプルから個人を識別できることが判明しました。 DEF CON® 26 Hacking Conference Speakers https://www.defcon.org/html/defcon-26/dc-26-speakers.html#Greenstadt Machine Learning Can Identify the Authors of Anonymous Code | WIRED https://www.wired.com/story/machine-learning-identify-

    機械学習を用いると匿名のソースコードから個人を識別可能であることが判明
    NOV1975
    NOV1975 2018/08/13
    「プログラミングを勉強する学生が他のコードを盗用したのかどうかを判断する場合や、マルウェアの開発者を特定する時などにコードから個人を識別するAIが役立つ」まあこのくらいだよね後はそもそも署名しろって話
  • 詳説 Cポインタ

    ポインタはC言語を習得する上での最大の壁と言われ、マスターすることが難しくポインタで挫折するプログラマも少なくありません。しかし、一方でポインタをひとたび理解すると、柔軟で効率的なプログラムを書くことができます。書はC言語のエキスパートとなるために避けては通れないポインタについて、図とコードを多用して、視覚的かつ直観的な理解を促します。また、プログラムが動作するためのメモリ構造と管理方法についても理解できるので、Cに限らず他の言語(JavaC++、C#など)のプログラマにも役立つ内容となっています。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の

    詳説 Cポインタ
    NOV1975
    NOV1975 2013/12/30
    一般的なことならid:kmaebashi氏の「C言語ポインタ完全制覇」で十分な気がしますが、さて、詳説の名にふさわしい内容なのか。読んでみたいが最近Cの本を読む動機があまりない…
  • プログラミング言語における正規表現リテラルの必要性について

    Twitterに書いたことのまとめです。 プログラミング言語の仕様の一部として正規表現リテラルを提供することの得失について、JavaScriptを例に説明します。 ■より簡潔なコード 言うまでもありませんが、正規表現リテラルを使った方が簡潔なコードになります。 (new RegExp("abc")).exec(s) // リテラルを使わない場合 /abc/.exec(s) // リテラルを使った場合 また、正規表現リテラルがない場合は、文字列リテラルとしてのエスケープと正規表現としてのエスケープが二重に必要になる結果、コードの保守性が低下します注1。 new RegExp("\\\\n"); // リテラルを使わない場合 /\\n/ // リテラルを使った場合 ■エラー検出タイミング 正規表現リテラルがない場合、実際にその正規表現が評価されるまで記述エラーを検出することができません。正規表

    NOV1975
    NOV1975 2013/12/18
    いつも思うんだけど、この手の比較の時って利用局面に対するコード全体が提示されないよね。この一行の差異がどれだけの差異になるのか。/実行時エラーで問題になることはテスト省略しない限りないんじゃないかなー
  • 正規表現が構文として必要かどうかという話から

    FUJI Goro @__gfx__ dartVMはほんとに速くなったし、標準化はほんとに期待してる。あと正規表現さえ構文に組み込まれればサーバーサイドでも使えますよこれは。 2013-12-15 22:04:54 methane @methane @__gfx__ なんでサーバーサイドで使うのに正規表現が構文で必要なんですか…? PythonGo も正規表現構文無いけど不自由感じないし、むしろリテラルあるとシンプルな文字列操作で良い場面で正規表現を使う悪習が広まるので良くないと思うのですが。 2013-12-15 22:43:35

    正規表現が構文として必要かどうかという話から
    NOV1975
    NOV1975 2013/12/17
    リテラルだったら使うしそうでなければライブラリ使う。コード量減らしたいのかタイプ量減らしたいのかわかんないけど、そんな頻度なさそうなことで揉めたくないな
  • 「CoffeeScriptの関数は明示的にreturnしてはいけない理由」を探す暇あったら他にやるべきことあるのでは? - mizchi's blog

    CoffeeScriptの関数は明示的にreturnするべき | CreativeStyle 当に遅いのか、それを確かめましょう。 適当にでっちあげたコードです f1 = -> for i in [1, 2, 3] for j in [4, 5, 6] i + j f2 = -> for i in [1, 2, 3] for j in [4, 5, 6] i + j return console.time "f1" for i in [1..100000] then f1() console.timeEnd "f1" console.time "f2" for i in [1..100000] then f2() console.timeEnd "f2" 実行してみます $ coffee hoge.coffee f1: 105ms f2: 4ms 約26倍違う、ということがわかります。

    「CoffeeScriptの関数は明示的にreturnしてはいけない理由」を探す暇あったら他にやるべきことあるのでは? - mizchi's blog
    NOV1975
    NOV1975 2013/12/16
    コードでの最適化は最後にとっとけってのが鉄則だよね。それよりも全体的な設計がアホじゃないかとか最適化以前の愚劣なコード書いてないかが重要(まあ愚劣とコスト無視の区別がつかないから問題なんだろうけど)
  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
    NOV1975
    NOV1975 2013/12/16
    スレッド競合の可能性を一切気にしなくていいってのは基本的にないと思っていれば比較的安全ではあるね。
  • Java8日付時刻APIの使いづらさと凄さ - きしだのHatena

    いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし

    Java8日付時刻APIの使いづらさと凄さ - きしだのHatena
    NOV1975
    NOV1975 2013/09/17
    Cの時代から日付時刻関連は何らかの共通をプロジェクトで作らないと各プログラマがいろんな時代をセットしてくれるという罠ばっかりなんだよな…
  • バカ向け言語 Scala - だらだらしてたいなぁ

    なぜScalaがバカ向けなのか。 ぼくの経験を元に、バカ向け言語と非バカ向け言語を比較しながら見て行きましょう 非バカ向け言語 C プログラマーとして最初に携わったのがC言語です。 それは以下のようなものでした。 何十ものファイルにまたがるグローバル変数 緻密な制御が必要であるにも関わらず、無秩序に取得/開放が行われているメモリー管理 このような複雑な構造を、ぼくのようなポケコン並の処理能力しか持たないバカに把握可能でしょうか。もちろん不可能です そこで、次のようなコーディングを心がけました。 グローバル変数を使わず、関数に引数を定義して渡す メモリーの取得/解放を同一ファイル内に限定する これで、メモリーや変数参照の影響範囲を限定し、ぼくのようなバカでも理解できるようになります。 ですが、わざわざそんな事をやらなくても全てを理解できるエリート様達は、 「なぜ引数で渡すんだ。グローバル変数

    バカ向け言語 Scala - だらだらしてたいなぁ
    NOV1975
    NOV1975 2013/04/21
    真の「エリート様向け」言語と「エリート様が使うと下々のものが理解不能になる」言語はまた別物のような。
  • feof関数でwhileループを回す奴はド素人 - hnwの日記

    (2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があったので、整理しました stackoverflowの記事「“while( !feof( file ) )” is always wrong」をざっくり翻訳してみます。これはWilliam Pursellさんによる自作自演スレ(回答者も人)で、Cでwhile( !feof( file ) )というループを作るのが悪い理由を説明するものです。 ちなみにPHPについてもほぼ同じことが言えますので、PHPプログラマの方にも一読をお勧めします(PHPの主要なファイル操作関数はCとほぼ同じインターフェース

    feof関数でwhileループを回す奴はド素人 - hnwの日記
    NOV1975
    NOV1975 2013/04/06
    普通一発読んでからループに入るのでは?
  • 圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ

    はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje

    圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ
    NOV1975
    NOV1975 2013/04/04
    うーん、この例だと郵便番号っぽいものはあるけど、住所はずっとAddressなので住所を渡すと郵便番号に変換される、というように見えないなあ。
  • Javaでヒープ領域を余らせたままOutOfMemoryErrorを出す方法 - 西尾泰和のはてなダイアリー

    先日、こんな問題を見かけたのだけども、JavaのGCにはあまり詳しくないので答えがわからなかった。 OutOfMemoryErrorが発生しました。(中略)ヒープメモリは足りているようです。原因として何が考えられますか? http://d.hatena.ne.jp/iad_otomamay/20130318/1363596244 なんでだろうなぁと思っていたところid:moriyoshiが「Permanent領域があふれたんじゃないの」と一言。「Permanent領域」で検索してみると、なるほど、そういうことなのかー。 というわけで早速それを再現させるコードを書いてみた。ヒープの大部分ががら空きなのにPermanent領域だけ99%になっているのがわかるかと思う。 Exception in thread "main" [Full GC [Tenured: 515K->515K(56896K

    Javaでヒープ領域を余らせたままOutOfMemoryErrorを出す方法 - 西尾泰和のはてなダイアリー
    NOV1975
    NOV1975 2013/03/26
    id:terazzo ヒープメモリは足りている、というのをメモリ使用量に対するヒープの総量と捉えるとこれが答えで良いんじゃないでしょうか。
  • 『変数に型がないということの利点について考える - Perl入門ゼミ』へのコメント

    ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

    『変数に型がないということの利点について考える - Perl入門ゼミ』へのコメント
    NOV1975
    NOV1975 2013/02/28
    実際の苦労した経験がないと利点ばかりが見えるのものなのだろう。
  • 「変数に型がないということの利点について考える」の問題について考える - ぐるぐる~

    id:perlcodesample さんの 変数に型がないということの利点について考える - サンプルコードによるPerl入門 から。 ううむ。 けれども、型がないということは、当に素晴らしいことです。 型がないことによって、たくさんの面倒から解放されるからです。 冒頭のこれが、「静的型付き言語にはメリットが(ほとんど)ない」と言っているように思えてしまいます。 コメントのやり取りを見ても、ある程度そう考えているように受け取れます。 勘違いなどが多く見られたので、補足というか、反論というか、そんな感じのことを書きます。 追記: ごく一部、このエントリを「動的型付き言語と静的型付き言語を比べて、静的型付き言語の方が素晴らしい言語である」ということを言うためのものだと勘違いしている人を見かけました。 このエントリは、そこについては言及していません。 あくまで、元記事で「動的型付き言語のメリッ

    「変数に型がないということの利点について考える」の問題について考える - ぐるぐる~
    NOV1975
    NOV1975 2013/02/28
    このくらいじゃないと議論に耐えないね。
  • 変数に型がないということの利点について考える - Perl入門ゼミ

    Perl › 読み物 PHPPerlRubyPythonなどのスクリプト言語に対して、変数に型がないということを否定的にとらえる人もいるかと思います。特にC言語やJavaなどの静的言語を使ってきた人にとっては、型がないということが不安材料として目に映ることが多いのではないかと思います。 けれども、型がないということは、当に素晴らしいことです。型がないことによって、たくさんの面倒から解放されるからです。 どのような型の値でも代入できる まず基的なこととして変数に型がなければどのような型の値でも代入できるということです。つまり、受け取るときに、どのような型の値を受け取るのかを意識する必要がありません。 my $str = 'Hello'; my $num = 1; my $nums = [1, 2, 3]; my $person = {age => 2, name => 'taro'

    変数に型がないということの利点について考える - Perl入門ゼミ
    NOV1975
    NOV1975 2013/02/28
    経験値不足。
  • C言語は今でも価値のある言語か?

    Couchbaseの作者Damien Katz氏は,C言語はバックエンドプログラミングにおいて現在でも優れた言語である,という意見を持っている。しかし他の開発者は,C言語はあまりにも欠陥が多いとしてC++Javaを支持するもの,あるいはいずれも好まないというものなどさまざまだ。 CouchDB の開発者であるDamien Katz氏は,The Unreasonable Effectiveness of C と題した先日のブログ記事において,C言語がバックエンドのための優れた言語であると断言した。氏はC++Java,さらにはErlangやRubyのようなより現代的な言語よりも,今後もC言語を支持していくつもりだという。ただし単純に,C言語を他のどれよりも優れた言語だと言っている訳ではない。"言語自体のパフォーマンスと信頼性が重視される場面においては,C言語に比類する言語は皆無である",別

    C言語は今でも価値のある言語か?
    NOV1975
    NOV1975 2013/01/30
    「何が起きてるか全部見えるからわかりやすいだろ」VS「トリック多すぎて読みづらいんだよ」くらいのものかな。業務でC書く機会は減ったけどまじめに業務で使うと他よりだいぶ冗長な記述になるね。
  • 今日の腕試し! - AndroidとJavaは違う?:ITpro

    Androidのアプリケーションを開発する場合、主に使用するプログラミング言語はJavaです。でも、これまでのJava開発と同じと考えると思わぬ落とし穴にはまることがあります。次のうち、正しいものはどれでしょう?

    NOV1975
    NOV1975 2012/12/19
    AndroidとJava?Androidって言語なの?/Webアプリ開発ってのもサーバサイドとクライアントサイドが区別できてなくてよくわからない言葉になってるな。
  • 読みやすいコードのための暗黙の了解がつまってる「リーダブルコード」 - きしだのHatena

    そういえばidがkdmsnrの児玉サヌールという人から「を訳したよ!」と献いただいたのだけど、届いたを見てみると訳者は角 征典という人だったのでとまどっていたところ。 出版したときにいただいてたので、もう半年近くになるけど、時間がかかったのは、ちまちまと一日1ページとか2ページとか読んでたから。普通に読めば、たぶん土日で読めます。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) 作者:Dustin Boswell,Trevor FoucherオライリージャパンAmazon 関係ないけど、一時期、角さん、角田さん、角谷さん、という一文字ずつ成長する東のほうの人と一気に知り合いになって「かっくん」と言われてるのがどの人かわからないことがあった。懐かしい話。 それはそれとして、ぼくは「きれいなコードをかきましょう」系の話

    読みやすいコードのための暗黙の了解がつまってる「リーダブルコード」 - きしだのHatena
    NOV1975
    NOV1975 2012/11/01
    ああ、この見解はすごい共感できる。ということは、これを買って配るというのが適切なソリューションということかも。
  • JavaのString.split(”,”)は、split(”,”, -1)にしたほうがいい - $ cd ./.

    知ってる人にとっては何をいまさらって感じなんでしょうけど、はまってしまいました。 JavaのString.splitは、limit引数をつけないと、最後の空文字をとります。 http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String,%20int) new String("a,b,c,,,").split(",") の結果は、 {"a", "b", "c"} {"a", "b", "c", "", "", ""} を取るには、以下のように、-1をつける必要があります。 new String("a,b,c,,,").split("," , -1) APIドキュメントには、-2とかいう変な数値で例がありますが、基的に-1でも-2でも負の数値なら同じ。最初に読んだときは意味がわからず、

    JavaのString.split(”,”)は、split(”,”, -1)にしたほうがいい - $ cd ./.
    NOV1975
    NOV1975 2012/10/19
    いや、おかしいのはパラメータがあることではなく意味のない数値になってることだろ。せめて定数値をとって欲しい。
  • 「JavaScriptの配列は参照渡し(call-by-reference)」は間違い - rarilogger

    JavaScriptの配列は『参照渡し(call-by-reference)』」というネット上に大量に存在する間違った記述を訂正するエントリ。 結論から先に言うと JavaScriptにおいて、関数の引数として配列を与えた場合、『参照の値渡し』になります。『参照の値渡し』は、『参照渡し(call-by-reference)』ではなく『値渡し(call-by-value)』に分類されます。 参考エントリ 以下の解説が非常にわかりやすいです。G-chan Square - [javascript] javascriptの関数で引数に配列を渡すと、それは当に参照渡しか? G-chan Square - じゃ、「参照渡し」ってなんだ?簡単に端折ると、関数の引数として変数を与える場合、 値の値渡し(プリミティブ型変数の値をそのまま渡す) 値の参照渡し(プリミティブ型変数の参照を渡す) 参照の値

    NOV1975
    NOV1975 2012/10/01
    参照の参照渡しで渡る参照とは参照の値なのか参照の参照の値なのか
  • 新人プログラマーに読ませて欲しいネーミングの大切さ - プログラマー幸福論

    Photo from Kıvanç Niş ネーミングについてまじめに長文を書いてみました。もし、あなたの会社にネーミングに疎い新人プログラマーがいたら読ませてやってください。 ちなみに、この記事はシステム開発のネーミングについて書いています。また、このブログの特性上、英語でのネーミングを想定していますが、日語のネーミングでも同様に考えることができると思います。 1. ネーミングの重要性 一般に、熟練のプログラマーほど、プログラミングにおける ネーミングに時間をかけます。それはなぜでしょうか。 あなたが付けたその変数名 data は、その時点では、自分のために付けた「目印的なもの」であったかもしれません。しかし、そのソースコードを引き継いだ担当者など多くの人が、その名前を見ることになります。 // データを取得する var data = getData(1); そしてその名前は、そのソー

    新人プログラマーに読ませて欲しいネーミングの大切さ - プログラマー幸福論
    NOV1975
    NOV1975 2012/09/27
    しかし新人プログラマーが配属されたのはABA10052というなぞの変数名を使用する魔窟であった…