タグ

ブックマーク / qiita.com (16)

  • Goで、mapをrangeでイテレーションすると、取り出す順番は実行ごとに異なる罠 - Qiita

    はじめに タイトルどおりですが、気をつけましょうという話です。 不思議な現象だと思ったので簡単な記事にしました。 理由までは、わかってません。 ご存じの方は、教えて頂けると幸いです。 ソースを見ると乱数が使われているようです。 https://golang.org/src/runtime/hashmap.go?h=map#L231 詳しくはコメントを参照。 実験環境 go version go1.4.2 darwin/amd64 (つまりMac OS Xです) 実行コマンド go run main.go 実験 例えば、他の言語で言うsetみたいなのをしたかったとします。 package main import ( "fmt" ) func main() { set := map[int] bool{} set[175] = true set[119] = true set[450] = t

    Goで、mapをrangeでイテレーションすると、取り出す順番は実行ごとに異なる罠 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2020/05/12
    この手のはわざと乱数を入れてユニットテスト(いやそれだけではなくプロダクションコードで)でmapの中身とリストをorderedでチェックするミスが起きないようにしてるんだと思いますが。
  • メンバーに恨まれそうな3つのコードレビュー施策を徹底したら、逆にメンバーが爆速で成長した話 - Qiita

    ある程度経験を積んだレビュワーがやりがちな失敗は、 指摘しやすいコーディング規約違反だけ指摘している というもの。 コードレビューで指摘するべき欠陥とは、必ずしも規約違反だけではなく、 仕様考慮もれや機能的なバグ、非機能的なセキュリティやパフォーマンス上の問題点も含まれる。 一つ関数に対して複数の視点でソースチェックをしないといけないが、 人間は同時に複数のことは考えられない。 そこでどうすればいいかと情報をあさっていたところ、 われらがIPAがセキュアプログラミング講座というWEBページで、 四回に分けてレビューすることを提唱していた。 1回目はどこに何があるか、 2回目は可読性が確保されているか、規約にのっとっているか 3回目は機能性 4回目はセキュリティ といった具合である。 IPAの講座では4回目はセキュリティに限定しているが、 担当していたプロダクトは、非機能面はセキュリティはも

    メンバーに恨まれそうな3つのコードレビュー施策を徹底したら、逆にメンバーが爆速で成長した話 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2020/02/17
    よくレビューで大きすぎるチェンジは差し戻して分けてもらいます。関数ごとの動作はユニットテストでカバーされているべき。4回レビューするのは面白い、自動的にlintが走ってくれるとなお楽
  • Mercurial入門 - Qiita

    ゲーム「バイオハザード」シリーズでは,ゲーム中に現れるアイテム「タイプライター」を使ってプレイデータをセーブ(保存)できる.タイプライターは一般的には セーブポイント と呼ばれるシステムで,それまでのプレイ内容をセーブしておき,あとでそこから再開できるようにするためのシステムだ. Image courtesy of 4Gamer バイオハザードではタイプライターのある場所でしかプレイデータをセーブできず,またセーブ回数も持っているインクリボンの個数までという制限があった.一方で,普段お使いのコンピュータシステムなら どこでも,無制限に,プレイデータ(作業内容)をセーブできる. このようなシステムをバージョン管理システム (Version Control System) と呼び,略してVCSと言う.VCSには様々な種類があるが,現在主流なのはGit稿で解説するMercurial である

    Mercurial入門 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2019/10/16
    最近のmercurialにはevolveというプラグインがあってrebaseできる(しかもrebadeが前のコミットをちゃんとobsoleteしたりされたコミットの子がorphanになったりする)ので便利。gitよりややこしいけど。
  • 2019年にわざわざ学ばなくてもいいプログラミング言語 - Qiita

    以下はStudy of Programming Languages Not to Learn in 2019の日語訳です。 日語紹介記事としては2019年にわざわざ学ばなくてもいいプログラミング言語というのがありますが、概要だけしか書いてないので、具体的にどういう理由で選択されたかが全くわかりません。 調査対象は以下の20言語で、それ以外は調査対象外です。 ・C ・C# ・Clojure ・CoffeeScript ・Dart ・Elixir ・Elm ・Erlang ・Go ・Haskell ・Kotlin ・Lua ・Objective-C ・Perl ・R ・RubyRustScalaSwiftTypeScript PythonJavaScriptJavaは除外と明記されているのですが、なぜC++PHP、Visual Basicあたりが入ってないのかはよくわ

    2019年にわざわざ学ばなくてもいいプログラミング言語 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2019/04/19
    マジレスだけどC++は今のところ一部でマスト言語だからね…
  • ズンドコキヨシ with はじめてのHaskell - Qiita

    ズンドコキヨシとは? 流行ってるらしい http://qiita.com/shunsugai@github/items/971a15461de29563bf90 ランダムで ズン と ドコ を出力し ズン4回以上のあとドコが来たら キ・ヨ・シ! を出力して終了 という勉強にはもってこいの教材 Haskellを勉強しながら書いてみる Haskell なくね? ってことで、HaskellをWebで勉強しながら 書いてみる モナドってなにーーーー アクションってなにーーーー import System.IO import System.Random zun:: Int -> [Int] -> String zun cnt (0:ran) = "ズン" ++ zun (cnt+1) ran zun cnt (r:ran) | cnt > 3 = "ドコキ・ヨ・シ!" | otherwise = "

    ズンドコキヨシ with はじめてのHaskell - Qiita
    xxxxxeeeee
    xxxxxeeeee 2016/03/25
    再帰で++はdeoptimizationに近いのでやめるべきだと思う。
  • httpsだからというだけで安全?調べたら怖くなってきたSSLの話!? - Qiita

    課題 サイトをを立ち上げるときに当然のごとくSSL証明書をベンダーから購入して設置していたが、いざセキュリティ診断等でチェックしてもらうとSSLについての指摘を何件か受けてみた。なんでだろうと思いながらも、さらに最適なSSL設定は?と聞かれてそういえばあまり昔から手を入れたことなかったなと思い調べてみた SSL通信が確立するまでの概要フロー SSL通信について再度おさらい Nginxを元にしたSSLの設定 nginxのHTTPS サーバの設定を参考に、たった2行だけどSSLを考えてみる。書き方は違えどもapacheも概念は一緒のはず。

    httpsだからというだけで安全?調べたら怖くなってきたSSLの話!? - Qiita
    xxxxxeeeee
    xxxxxeeeee 2015/09/16
    怖い人がコメントしてくれてて助かる
  • Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita

    注:記事の内容はJavaで公式にドキュメントされているものではなく筆者の見解です。とはいえクラスを設計する上で有用な指針たり得ると思われるので公開したものです。 おさらい - 検査例外と非検査例外 Javaの例外クラスには「catchしないとコンパイルエラーになる」検査例外(チェック例外、checked exception)とそうでない非検査例外(非チェック例外、unchecked exception)があります。 検査例外は最近は嫌われる傾向がありC#では採用されていませんしAltJava言語も軒並み不採用、さらにはJavaの新しめのライブラリにも非検査例外しか投げないものが出てきていますが、適切に使えば安全なプログラミングのための強力な武器であり、検査例外の有意義さについては @irxground さんの Javaの検査例外の存在意義 をご覧ください。 例外クラスを自作する場合、検査

    Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2015/09/04
    Haskellの戻り値と例外の関係もこれに近い気がするなぁ、検査例外がEitherやMaybeで返る型で、非検査例外が例外。
  • IT業界で横行する恥ずかしい英語発音 - Qiita

    プログラマやデザイナと話してるとしょっちゅう変な英語発音に出くわします。 例えばheightを「ヘイト」と発音したり。 そういう時、私は心では「ヘイトじゃないよハイトだよ!」と呟きつつ、口では「そうですね、ではヘイトは80pxにしましょう!」なんて言ってるのであります。 まあ、所詮我々が話しているのは英語ではなく、日語の中に出てきた英単語をカタカナで発音しているに過ぎないですし、テレビのテロップでmainをメーンと表記する時代ですので正解などは無いと思っています。 ですから、何でもかんでも正しい英語っぽく発音するべきなどとは思っていませんが、やはり「こいつ適当にスペルを日語読みしてるだけだろ!」ってのが明らかな場合は、聞いているこっちが恥ずかしくなってしまうものです。 というわけで、この業界で横行してる妙な発音をまとめてみました。 間違って発音すると恥ずかしい英語 これらは間違って発音

    IT業界で横行する恥ずかしい英語発音 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2015/06/16
    カタカナで英語の発音を書くなぁああ!というけれども外国人用の辞書では子供用辞書以外あまり発音記号は書いていないそうな、どうやって表現しているんだろう
  • 『関数型プログラミングに目覚めた!』のレビュー(Day-1) - Qiita

    var plus = function(a, b) { return a + b; }; var s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] .reduce(plus); console.log(s); が対比されています。 [0,1,2,...,9]はダサいか? 書に対する感想として幾つか見かけたものに、「関数型コードの[0,1,2,...,9]という配列リテラルベタ書きの方が命令型コードよりダサいではないか!」というものがありました(0〜999まで足せと言われたらどうするつもりなのか!)。しかし、まさに0〜999まで足すにはどうしたらいいのだろう、という問いを書の登場人物自身が問い(p. 45)、配列リテラルではなくrange関数を使って配列[0..999]を生成するコード例が示されます(p. 109)3。ですので、何度も繰り返されるコード例[0,1,2,

    『関数型プログラミングに目覚めた!』のレビュー(Day-1) - Qiita
    xxxxxeeeee
    xxxxxeeeee 2015/05/11
    毛の壁に対して攻撃的ではない率直な意見ほど厳しいものはない
  • 関数型言語のウソとホント - Qiita

    追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいHを読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあるいは関数型プログラミング言語を理解するもっとも確実な方法は、Haskellをあなたのマシンにインストールして何かまとまったアプリケーションを書いてみることです。Haskellでアプリケーションが書けたら、自分は関数型プログラミングを理解しているし使えると胸

    関数型言語のウソとホント - Qiita
    xxxxxeeeee
    xxxxxeeeee 2015/01/06
    monad便利だからC++にもコンパイル時展開とかでいいからモナド欲しい(実のところコンセプトと無制限な演算子オーバーロードで何とかなりそう)/久しぶりに来たらユーザー資格が取り消されて〜クソワロタ
  • Swiftの関数はファーストクラスである--とは限らない - Qiita

    ここQiitaには初投稿の弾です。 Swiftにおいて、関数はファーストクラス、つまり関数は第一級関数であることはすでに皆さんご存知のとおりです。つまり、 func f(x:XType)->RType { var result:RType // .... return result }

    Swiftの関数はファーストクラスである--とは限らない - Qiita
    xxxxxeeeee
    xxxxxeeeee 2014/09/04
    C++でも関数テンプレートの引数の型は自明にわかるはずで書かなくていい、Haskellを引き合いに出すほど頭いい機能ではなくて型推論ってのはlet束縛した不定な型のなにかが後のコンテキストとかで一意に決まることじゃ
  • https://qiita.com/kenokabe/items/13ea8d2da6adce1b3b9a

    xxxxxeeeee
    xxxxxeeeee 2014/07/15
    関数名をシンボル名にするんだからC言語で関数内関数が作れないとかましてラムダが作れないとか割と自明だと思っていた/Swift褒めたいのわかるけどマジで関数型好きならHaskellとかOcamlとかあるじゃん?
  • DDoS攻撃されたらそこで試合終了!? レンサバから利用停止を宣告される前にできる8つの対策 - Qiita

    もしも運用しているサーバにDDoS攻撃をされて、大量のトラフィックを理由にホスティング業者から、そのサーバの利用停止を唐突に宣告されたらどうしますか? なにか対策を考えていますか? by woodleywonderworks. CC BY 2.0 「ファイアウォールでそういった攻撃を防いでいるから大丈夫」「まさか契約上そんな一方的なことができるはずない」と思うかもしれません。私もそのような認識でした。しかし、実際にDDoS攻撃を受けてみると業者の対応は次のようでした。 ホスティング業者は味方をしてくれない ホスティング業者は技術的に的はずれな対策を講じる ホスティング業者は利用規約を拡大解釈し、サービス停止を迫ってくる この3点を信じられない方のために、「付録:DDoS攻撃を受けた時のGMOクラウドPublicと私のやりとり」をこの記事の最後に書いたので、現実のホスティング業者の対応が実際

    DDoS攻撃されたらそこで試合終了!? レンサバから利用停止を宣告される前にできる8つの対策 - Qiita
    xxxxxeeeee
    xxxxxeeeee 2014/05/21
    やっぱりGMO()
  • 一部Cコンパイラを使ったcabal-installのビルドでコケる(e.g. hlint, ghc-mod, text) - Qiita

    一部Cコンパイラを使ったcabal-installのビルドでコケる(e.g. hlint, ghc-mod, text)HaskellMacghc # 検証用に強制インストールオプションつけただけ $ cabal install --reinstall --force-reinstalls text -v3 … *** C pre-processor: '/usr/bin/gcc' '-E' '-undef' '-traditional' '-m64' '-fno-stack-protector' '-m64' '-I' 'dist/build' '-I' 'dist/build/autogen' '-I' 'dist/build' '-I' '/usr/local/Cellar/ghc/7.6.3/lib/ghc-7.6.3/bytestring-0.10.0.2/include' '-

    一部Cコンパイラを使ったcabal-installのビルドでコケる(e.g. hlint, ghc-mod, text) - Qiita
    xxxxxeeeee
    xxxxxeeeee 2013/11/20
    これ思う、プリプロセス時の処理が違うらしくてこける
  • VirtualBoxでNAT + Host-Only Network環境を構築する - Qiita

    Debian系のディストリビューションで綺麗にはまってしまったのでメモ。 Redhat系が予期に計らってくれるおかげで3週間ほどずっとはまっていました…。 OSを5回くらいインストールし直しました。 0.前提 VirtualBox + UNIX系OSでローカル環境にサーバを構築したい。 無駄なマシンパワーを使いたくないので、GUIはインストールしない。 外部ネットワークに接続したい(インターネットを使いたい)。 ポートフォワーディングは使わない。 1.ネットワーク構成 ゲストはホストのNICを利用してNATで外部ネットワークに接続する。 ホストオンリーネットワークでゲストにSSHで接続する。 ホストオンリーネットワーク側のゲストのIPアドレスは固定する。 2.OSインストール インストール手順自体はVirtualBox 4.0でCentOS 6.0を動かしてみたよ。 - 大人になったら肺呼

    VirtualBoxでNAT + Host-Only Network環境を構築する - Qiita
    xxxxxeeeee
    xxxxxeeeee 2013/07/17
    デフォルトゲートウェイなんだから片方で当然なのでは
  • zsh で0埋め連番リネーム - Qiita

    zmv で「${(l:e::s1::s2:)param}」を利用する。eは全体の長さ、s1は埋める文字、s2はparam左に挿入する文字列であり、s1とs2はオプションである(s1省略時はスペース埋め、s2はs1がある時のみ使用可能)。 zsh で以下を評価すればだいたいの挙動がわかると思う。 n=1 echo ${(l:10:)$((n))} echo ${(l:10::0:)$((n))} echo ${(l:10::0::5:)$((n))} さて、0埋め連番リネームだが、これをzmvの第2引数に使えばいい。jpgファイルを1から始まる3桁0埋めしたいなら以下のようにできる。ファイル名を辞書順で並べた上から、001.jpg、002.jpg、…… というファイル名にリネームされる。

    zsh で0埋め連番リネーム - Qiita
    xxxxxeeeee
    xxxxxeeeee 2013/02/01
    zsh最強伝説である。一生使いこなせない機能がたくさん。
  • 1