タグ

programmingに関するalcusのブックマーク (146)

  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
  • Swiftのコードレビュー勘所 - 文字っぽいの。

    はじめに Swift with iOSなコードをレビューする時に僕が気をつけて見ているところをざっくりまとめました 今年からSwift始めます!って人が読めばクラッシュしやすいコードを書きにくくなるはず ロジック面についてもちゃんと確認しましょう 勘所 AnyObject使ってる 不適切に使われてる(型を消すとか)場合には絶対に直させる。型を消したい場合は protocol + typealias とかgenerics でなんとかできる場合が多い。というか AnyObject を使ってるコードでは、型を消す必要がない場合が多い。 配列にindex指定してアクセスしている let item = items[index] とか。基的にはindexなど使わずにアクセスするのが一番なので、書き直せないか確認する。 書き直せない場合はロジック自体の設計を変えられないか、もしくははみ出ない処理がちゃ

    Swiftのコードレビュー勘所 - 文字っぽいの。
  • ウンコード・マニア

    「なんだこの糞コードは!(怒)」「書いた奴出てこい!(怒)」 こんな声を聞いたり、叫んだりしたことはありませんか? ウンコードについて学ぶことによってウンコードを撲滅しましょう! とりあえず、趣のあるウンコード鑑賞から始めて下さい お知らせ 2013-06-27 profile image をTwitter API1.1に対応しました。Thanks for Profile Image API For Twitter 2013-06-16 Twitter API1.1に対応しました。 2012-12-05 職人ランキングを追加しました。 2012-11-21 レコメンド機能を追加しました。 Twitterアカウント @unkode_mania で更新情報をつぶやいてます 障害情報 2012-08-14 障害情報: 19:20 - 21:59 くらいの間、internal server err

  • 「なんだこの糞コードは!(怒)」「書いた奴出てこい!(怒)」と言いたくなるほどヒドいプログラムのソースコードを集めた「ウンコード・マニア」

    By nicola.albertini 「ウンコードとは、糞のようにヒドいプログラムのことです。クソースなどとも呼ばれます。ヒドいプログラムは、プログラマの健康を脅かします。 「ウンコードなんて今すぐ消してしまえばいい。」 と言いたいところですが、既存のヒドいコードのプロダクトが、利益を生んでるケースも多いことでしょう。 結局、ヒドいプログラムをメンテナンスしつづけているという不幸な人も多いはずです。ヒドいプログラムを書いてしまうプログラマが、このサイトでウンコードについて 勉強して、もっとプログラムに気を使うようになって、 引き継ぎをした人も健康でいられますように。なむなむ」ということで、プログラマのためのストレス解消サイトであり、なおかつ教育サイトでもあり、そして主に他の人が創作したウンコードを鑑賞するのが目的というサイトが「ウンコード・マニア」です。 ウンコード・マニア http:/

    「なんだこの糞コードは!(怒)」「書いた奴出てこい!(怒)」と言いたくなるほどヒドいプログラムのソースコードを集めた「ウンコード・マニア」
  • シンプルでわかりやすいコードを書くためにあなたがすべきこと - give IT a try

    はじめに 先日、とある知りあいのRubyプログラマからこんな相談を受けました。(内容はちょっとボカしてます) 社内のコードレビューでもっときれいなコードを書けるようになった方がいい、と言われました。 「きれいなコードを書けるようになれ」と言われても、具体的にどうすればいいかわかりません。 伊藤さんのアドバイスを聞きたいです。 この内容だけだとどんな問題があるのかわからないので、実際に指摘を受けたRailsアプリのコードを見せてもらいましたが、確かに「もうちょっと頑張りましょう」と思うような点がチラホラありました。 ただ、具体的にどうすればいいの、という答えは一言では言えません。 というわけで、今回のエントリではこの悩みを解決するのに参考になりそうな話をあれこれ書いてみようと思います。 (その前に)もくじ かなり長い記事になってしまったので、先に目次を載せておきます。 はじめに (その前に)

    シンプルでわかりやすいコードを書くためにあなたがすべきこと - give IT a try
  • C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita

    はじめに @takeokunn そういや私の昨日のツイートたどってみ、C++初心者(boost.asioが使えないとは言っていない)の人とQiitaでやりとりしてたから — yumetodo-C++erだけど化学科 (@yumetodo) 2016年5月3日 @yumetodo だからC++erの初心者は初心者じゃないんだよ!!!!!!!!!!!!! だからC++er嫌いなんだよ!!!!!!!! — たけてぃ (@takeokunn) 2016年5月3日 @takeokunn 当人も「そろそろ中級者かな」 と言ってた 因みに C初心者 < C++初学者 < C++入門者 < C++初心者 < C++規格書リーディング初心者 < C++中級者 < C++規格書リーディング中級者 < C++上級者 < C++規格書クラッカー — yumetodo-C++erだけど化学科 (@yumetodo)

    C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita
  • Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも

    ウソみたいな当の話。Ruby でファミコンエミュレータを書いてみました。 気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現すれば、実速が達成されることになりますね! 試してみたい人はこんなふうに実行してください。 $ gem install ffi $ git clone http://github.com/mame/optcarrot.git $ cd optcarrot $ bin/optcarrot examples/Lan_Master.nesSDL2 か SFML が適切にインストールされている必要があります。Debian/Ubuntu なら apt-get install libsdl2-dev で。 Ru

    Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも
  • シェルスクリプトの処理境界が鮮明になる「名前付きブロック記法」なるものを考えてみた

    シェルスクリプトは長くなると処理の境界が不鮮明になりがち。 コメントで処理の境界を表現する工夫はよく見かけるが、もっと良い方法はないか考えてみた。 :コマンド、&&演算子、複合コマンド()や{}を組み合わせて書くと、処理の境界線がはっきりする。

    シェルスクリプトの処理境界が鮮明になる「名前付きブロック記法」なるものを考えてみた
  • 長文日記

    長文日記
  • クソコードの測り方

    PHPBLT#3 で話した内容です。

    クソコードの測り方
  • Draperで驚くほどRailsコードがわかりや少なったよ! 

    Draperって何?Draperは、Model/Controller/View/Helperと異なる第4のレイヤを提供するGemです。 この第4のレイヤは、海外では「Presenter」として分類されています。(正確にもう少し細かい分類があるらしいですが割愛♪) このレイヤを作るメリットは、 model/viewに余計なロジックを書かなくてすむ Helperのメソッドが使われている場所が不明という事態を防ぐ 日ではPresenterレイヤでは、ActiveDecoratorというGemが有名です。ActiveDecoratorもほぼ同じことができます。 Draperの紹介Draperの説明ならRailsCastが一番わかり易かったです(説明は日語に翻訳されています、動画は英語です)↓ #####286 Draper - RailsCasts 1年前の記事ですので、実際に動かしてみると少

    Draperで驚くほどRailsコードがわかりや少なったよ! 
  • クラウドベースのアルゴリズムトレーディングサービス"Quantopian"を試してみる - Qiita

    この記事について Pythonでファイナンス関係の情報を探していたところ見つけた"Quantopian"が面白そうだったので試してみます。 Quantopian Quantopianとは クラウドベースのアルゴリズムトレーディングプラットフォームです。ユーザはブラウザで専用のIDE(開発環境)を使ってPythonライクなコードでトレーディングアルゴリズムを作成し、バックテストを行うことができます。Interactive Brokers証券に口座がある場合は、接続してリアルトレードを行うこともできるようです。 何がトレードできる? 2002年以降の米国株/ETFのデータを分足ベースで保持しているようです。 はじめよう アカウント登録 サイトにアクセスします。真っ赤です。右上のSign Upからメールアドレスで登録します。 ログイン直後 上部にメニューが並んでいます。 Capital -> L

    クラウドベースのアルゴリズムトレーディングサービス"Quantopian"を試してみる - Qiita
  • プログラマの友

    ここでは、プログラムに関する色々なことを書いていこうと思います。更新は少ないですが、できるだけ役に立つ情報を載せられたらいいと思っています。でも、性根がひねくれているので、変なことばっかり書くかも知れません。(^ ^; なにぶんロベールもまだ未熟者なので、内容に誤りがある可能性があります。もし誤りを見つけたら「あー、こいつバカなこと言ってるぜ」と傍観してないで、メールで知らせて下さい。

  • JUnitのテストメソッド名をどういう風につけたらいいかなー? - Mitsuyuki.Shiiba

    って話になって、チーム内で盛り上がった。例えばこんな感じのテストを書きたい時。 「ジュースを買う」メソッドに、お金とジュースの番号を入力したらそのジュースが返されて、在庫が一個減る。 メソッドはこんな感じかな? Juice buyJuice(int inputAmount, int juiceId) これでどう? buyJuice_shouldReturnJuice_whenInputAmountIs130Yen え?でもこれだと、なんかこう・・・在庫が減ってることとかは表せてなくない? えー、じゃあこういう感じ? buyJuice_shouldReturnSelectedJuiceAndOneLessInventory_whenInputAmountIs130YenAndSelectedIdIsValid いや、長いね・・・。 ふむ。。。全部をメソッド名に書かない方が幸せなんじゃない?

    JUnitのテストメソッド名をどういう風につけたらいいかなー? - Mitsuyuki.Shiiba
  • custom allocator難しすぎワロタ | やねうら王 公式サイト

    昨日の記事でx86用のコードでheapから(newで)確保されたメモリのアライメントが16バイト境界になってなくて大変だという話を書いたのだが、その続き。 std::stack<StateInfo>である。StateInfoはstructで、alignas(16)がついている(or メンバーの定義にalignas(16)がついているものがある)とする。 ここにpush()ときに内部的にヒープからメモリが割り当てられるようで、これもalignasを無視しやがるので、どうにかしたい。 しかし、std::stackのカスタムアロケーターを書くの、難しくてさっぱりわからん。std::stackって、内部的にはstd::dequeなんだっけ?てか、こんなalignasを無視するような糞コンテナ要らないんだけど…。調べる気にもならん…。 push()とtop()さえあればいいので、とりあえず以下のよう

  • x86環境用にアライメント合わせるのが壊滅的に難しい件 | やねうら王 公式サイト

    やねうら王miniをx86(32bit環境)でコンパイルが通るように作業してたのですが、どうもアライメントを合わせるのが壊滅的に難しいです。 SSE命令を使うときに16byte単位にアライメントが合っていないと実行時にエラーになるものがあります。_mm_store_si128()等です。 まあそれはそれで仕方ないのでアライメントを合わせようとBitboardなどのstructにalignas(16)をつけたわけです。 ところが、ヒープから割り当てたときにはこれがアライメントされていない可能性があるようです。 thread.cpp template<typename T> T* new_thread() { std::thread* th = new T(); *th = std::thread(&T::idle_loop, (T*)th); return (T*)th; } > sourc

  • Obj-C → Swift コンバータをオープンソースで公開しました!

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog どうも、ヤフーの佐野( @taketo1024 )です。先日引っ越しをしまして、張り切って自分でタンスを運んだりして今とても筋肉痛です。 皆さんは Objective-C から Swift への移行は進んでいますか?弊社ではまだ Obj-C で書かれているプロジェクトは多くあります。世に出ている iOS アプリも多くはまだ Obj-C で作られているんじゃないかと思います。 Swift もオープンソース化され、この先その進化のスピードはさらに増してくるはずです。そこでチーム内で開発を進めていた Obj-C → Swift コンバータ を大幅に改良しオープンソースで公開することにしました!この記事ではその導入と活用の方法を説明します

    Obj-C → Swift コンバータをオープンソースで公開しました!
  • 非公式PDF版SICP・新訳 - アスペ日記

    計算機プログラムの構造と解釈、通称SICPを一から翻訳し直しました。 ファイル: SICP非公式日語版 翻訳改訂版 リポジトリ: https://github.com/hiroshi-manabe/sicp-pdf また、今回の翻訳をするにあたって考えたことを別記事にまとめました。 腐った翻訳に対する態度について SICPはMITの有名なプログラミングの教科書です。詳しくはminghai氏の記事をご参照ください。 この翻訳改訂版は、minghai氏の非公式日語版(以降、minghai氏版)のあまりにも惨憺たる翻訳を見かねて、原著から翻訳をし直したものです。この翻訳を進めるにあたっては、minghai氏版の訳を置き換えていくというやり方で進めていきました。しかし、差分を取ればわかっていただけると思いますが、minghai氏版のテキストは痕跡をとどめていないはずです。この方式を採ったのは、

    非公式PDF版SICP・新訳 - アスペ日記
  • コンピュータが1秒間でプログラムを何回くらい実行できるのかをクイズ形式で確かめられるサービス「One second code」

    コンピュータがどれくらいの速度でプログラムを実行するのかを直感的に理解することは非常に難しいものです。そこで、コンピュータの速度を理解するために、単純なプログラムを1秒間に何回ループできるのかをクイズに答えながら学べるサービス「One second code」が、プログラマーによって作成されています。 One second code: Do YOU know how much your computer can do in a second? http://computers-are-fast.github.io/ これが最初のクイズ。以下の「sum.c」というプログラムが1秒間にどれくらいの数のプログラムをループできるかをクイズ形式で答えればOK。C言語で書かれたプログラムは「入力した数字までを1刻みで数え上げる」という単純なもの。 クイズは範囲で答える仕組みで、誤差10倍(10分の1倍

    コンピュータが1秒間でプログラムを何回くらい実行できるのかをクイズ形式で確かめられるサービス「One second code」
  • kati について - 兼雑記

    https://github.com/google/kati kati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやるのが少し大変で。 動機 kati は GNU make のクローンです。いずれ完全なコンパチになると嬉しいですが、なかなか難しいだろうと個人的には諦めています。用途に対して実用的ならば良いかなと。 動機としては、 Android platform のビルドシステムが、なかなかシュールな GNU make 黒魔術で構成されていて、 make が実際になんかしはじめるまでが遅かったので、そこを高速化したいというものでした。 ビルドシステムが遅いという時、まずだいたいヌルビルドとフルビルドの2点を考えます。ヌルビルドてのは生

    kati について - 兼雑記