タグ

programmingに関するteitei_tkのブックマーク (33)

  • AtCoderで水色になるまでにやった事とかをまとめる - shibh308’s diary

    こんにちは。3/17のABC091で無事水色になる事ができたので、今までにやってきた事と水色になるために必要だと感じた事をまとめようと思います。 この記事に載っている内容はあくまで個人の意見なので、あくまで参考程度にお願いします。 また、私自身が水色最底辺の人間なので知識が浅く、いくつか間違っている点があるかもしれません。ご容赦ください。 自分語り 塚@shibh308です。執筆時点でのレートは1215で、今までのレート推移はこんな感じ(下画像参照)です。 競技プログラミング格的にやり始めたきっかけは去年の12月ごろ、JOI予選で300点爆死をキメたのがきっかけでした。当時はアルゴリズムについての知識が全くなかったので、200点問題ですら解けるか怪しいようなレベルだったと記憶しています。 当時のコードはこんな感じですね。この時はB問題を時間いっぱい使ってやっと解けたみたいな状態でした

    AtCoderで水色になるまでにやった事とかをまとめる - shibh308’s diary
  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

  • メモ化 - Wikipedia

    メモ化(英: memoization)とは、プログラムの高速化のための最適化技法の一種であり、サブルーチン呼び出しの結果を後で再利用するために保持し、そのサブルーチン(関数)の呼び出し毎の再計算を防ぐ手法である。メモ化は構文解析などでも使われる(必ずしも高速化のためだけとは限らない)。キャッシュはより広範な用語であり、メモ化はキャッシュの限定的な形態を指す用語である。 概要[編集] メモ化という用語は1968年にドナルド・ミッキーがラテン語の memorandum(覚えておく)から作った造語である[1]。memorization(記憶、暗記)は同根語であってよく似ているが、メモ化という言葉は情報工学では特別な意味を持つ。 メモ化された関数は、以前の呼び出しの際の結果をそのときの引数と共に記憶しておき、後で同じ引数で呼び出されたとき、計算せずにその格納されている結果を返す。メモ化可能な関数は

  • It is too hard for me to 社会復帰 - Line 1: Error: Invalid Blog('by Esehara' )

    これはつらぽよ Advent カレンダー13日目の筈でした。 正直なことをいうと、僕の素行は余りにも良くはなかった。少なくとも、職歴は大きな穴が開いているところが幾つかあるし、やっと掴んだ職歴についても、一年続くのがやっとで、なかなか長続きすることはなかった。 経歴的に言うと、元々僕は製工場でアルバイトを一年間ほど続けていた。何のを製していたのかと言えば、アルバイト雑誌とか、あるいは風俗案内用の小冊子とか、そのあたりを製していた。もしかしたら、貴方がアルバイトを探そうと思って手に取った、無料で配布されている冊子だ。恐らくそういう類のは、背表紙がホッチキスで止められていると思うけれども、あのホッチキスが止められる前の、裁断された紙を重ねて機械に放りこむということをやっていた。この作業は若干面白くて、紙を揃えて入れなければならないのは当然なのだが、この紙を一枚ずつ取り出すために、紙の

    It is too hard for me to 社会復帰 - Line 1: Error: Invalid Blog('by Esehara' )
  • WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD

    Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。

    WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD
  • 突如見知らぬ言語に出会ってしまった俺達は

    YAPC Hachioji 2016の資料です

    突如見知らぬ言語に出会ってしまった俺達は
  • Pythonのメモリ使用量を減らすポイント - Qiita

    今回は、iXce’s blog » Blog Archive » Optimizing memory usage in Python: a case study という記事を見つけて興味深かったので紹介したいと思います。何も説明書いてないところがあるので、詳しく知りたい人は元記事を読んでほしいです。 動機 プレーンテキストをGコードに変換するプログラムを書いている 3.8MB (14万Gコード) のファイルを読み込むと、244MBもメモリを使ってしまう だからメモリ使用量を減らしたい やったこと プロファイル どこがメモリをたくさん使ってるのか調べるためにHeapyを使う $ pip install guppy で入れられる。 するとこんな感じの結果が出力される。 Partition of a set of 225737 objects. Total size = 115386656 by

    Pythonのメモリ使用量を減らすポイント - Qiita
  • TDDを諦める

    この記事は,TDDに見切りをつけたある大学教授の経験と,Uncle Bobの反論を要約したものだ。 ソフトウェア工学の大学教授を退官したIan Simmerville氏には,“Software Engineering, 10th edition”を含む数冊の著書がある。同書の第8章はすべてソフトウェアテストに関する内容であり,特に8.2章ではTDDを取り上げている。それらの章で紹介された考え方を何度も引き合いに出しながら,Sommerville氏は先日の記事に,“TDDはソフトウェア工学の大きな進歩です。いくつかのクラスのシステムにおいては,それが有効であることが明らかです。”と述べて,次のような“TDDフレンドリ”なシステムの一覧を紹介している。 階層化アーキテクチャ 合意された成功基準を持ち,それに準拠したテストに基づいて構築されるシステム。 自身のコントロールを越えてシステムと対話す

    TDDを諦める
  • NPMとleft-pad : 私たちはプログラミングのやり方を忘れてしまったのか? | POSTD

    さあ開発者のみなさん、真面目な話の時間です。読者の皆様はおそらくすでにお気づきでしょうが、今週、ReactやBabelやその他大量の有名なNPMパッケージ群が壊れました。そしてその原因は少々驚くようなものでした。 ReactやBabel、その他のパッケージが依存する、left-padというシンプルなNPMパッケージがあります。この記事を書いている現段階で、このパッケージは GitHub上で11 star となっています。このパッケージは全体で 11行のシンプルな行があり、文字列の左を詰める基的な関数が実装されている というものです。上記のリンクが消えた場合に備えて、コード全体をいかに掲載しておきます。 module.exports = leftpad; function leftpad (str, len, ch) { str = String(str); var i = -1; if

    NPMとleft-pad : 私たちはプログラミングのやり方を忘れてしまったのか? | POSTD
  • Stack Overflow Developer Survey 2016 Results

    Overview Developer Profile I. Geography II. Developer Occupations III. Programmers, Engineers, and Developers IV. Age V. Experience VI. Gender VII. Diversity VIII. Education Technology I. Most Popular Technologies II. Most Loved, Dreaded, and Wanted III. Top Tech on Stack Overflow IV. Trending Tech on Stack Overflow V. Top Paying Tech VI. Correlated Technologies VII. Development Environments VIII.

    Stack Overflow Developer Survey 2016 Results
  • Reactive Porn - steps to phantasien

    Rebuild.fm に出させてもらいました。ありがたいことです。 さっそく録音を聞き直す。自分の声を聞くのは辛い・・・のはさておき、 リアクティブプログラミングの話は我ながら主張がよくわからない。 反省のため何が言いたかったのかを考え直したい。 たぶん趣旨は二つあった: A. RxJava や RxAndroid はなかなかいいやつだ。 B. リアクティブプログラミングは一つのはっきりした概念ではない。 A については試してもらえばわかるはず。ReactiveX のサイトからぽつぽつ資料を読めば済む。ここでは B を補足してみる。 X 指向は Y みたいなもの リアクティブプログラミングとは何だろう。どうもつかみどころがない。私は腑に落ちるまでけっこう時間がかかった。 このわかりにくさには大きく二つ理由があると思う。一つはプログラミングの概念をコードなしに説明する一般的な難しさ。オブジェ

  • Reactive Manifestoではないほうの本当のReactive Programming? - xuwei-k's blog

    タイトルにわざとReactive Manifestoを入れたのは、まずこちらのtogetterご覧ください pokarimさんのReactive Manifestoに関する印象 あと、タイトルの最後に、はてなマーク入れたのは、自分がReactive Programmingに詳しくなく、色々自信ないからです。 間違いあったらツッコミください さて、Reactive Programmingとはそもそもなんなのか?厳密に定義できるのか?は、詳細に議論できるほどの知識を持ち合わせていないので逃げます(おい まずは、話のとっかかりとして、上記のtogetterの主役となってるpokarimさんの過去の記事(4年近く前!) を結構長めに引用してみます。(はてぶが600以上ついてる・・・) なぜリアクティブプログラミングは重要か。 まず次のような定義を行います。 a = 1 b = a * 3 そしてa

    Reactive Manifestoではないほうの本当のReactive Programming? - xuwei-k's blog
  • フレームワーク使うな的な話を見て - Write and Run

    最初からフレームワークの使い方だけを勉強するようなことをするな、って話らしいね。納得はするけど、俺だったらそんな助言はしないなぁ、と思ったので書こうと思った次第。(このブログ、この手のスピリチュアルエンジニアリングの話多い気がする) 思い出そう プログラミングを始めた時の自分を。 初めて画面に HELLO が表示された時、俺は 10 PRINT "HELLO" の意味なんて知らなかった。CPU がどうやって動いているのかも、そもそも CPU の存在すらも噂程度の知識でしか認識していなかった。メモリというものもあるらしい。ハードディスクというものもあるらしい。メモリとハードディスクの違いってなんなんだろう……。 その後 インタプリタの存在も簡単な実装も知って、CPU やメモリの存在や、動きも知った。なるほど、こうやって動いていたのか。なんだ、簡単じゃないか、はじめからこれを知っていれば簡単だ

    フレームワーク使うな的な話を見て - Write and Run
  • 次世代標準非同期I/Oフレームワーク asyncio (Tulip) - methaneのブログ

    Python Advent Calendar 2013 の4日目です。 Python 3.4 で標準ライブラリに追加される asyncio を触ってみます。 なお、 Tulip とは asyncio のリファレンス実装のプロジェクト名です。 背景 Python はよく非同期 I/O プログラミングに使われます。 Twisted, Tornado, gevent, eventlet, pyuv などのフレームワークがあります。 これらのフレームワークの問題点として、ライブラリの再利用性の低さが挙げられます。 たとえば Twisted 用に書かれた XMPP ライブラリは、そのままでは Tornado で 利用することができません。 この問題の解決策として、良くイベントループの乗り入れが行われます。 GUIアプリケーションに組み込む場合などを考えて、多くのフレームワークが最初から イベントルー

    次世代標準非同期I/Oフレームワーク asyncio (Tulip) - methaneのブログ
  • pathlibはファイル操作の新標準! - None is None is None

    Python Advent Calendar 2013の13日目です。 Python 3.4ではasyncio functools.singledispatchなど画期的なライブラリがいくつも追加されています。それはアドベンドカレンダーで皆さんが紹介されている通りです。 そして!その中で最も重要で画期的と言えるのがpathlibなのです! 11.1. pathlib ― Object-oriented filesystem paths ― Python v3.4.0b1 documentation まずは、主な使用例を御覧ください パスの結合(演算子オーバーロードだ!) >>> from pathlib import Path >>> p = Path('/etc') >>> q = p / 'init.d' / 'reboot' >>> q PosixPath('/etc/init.d/

    pathlibはファイル操作の新標準! - None is None is None
  • JavaTechnology Slot Online | Cara Daftar bermain Slot Online

    Dapatkan Peluang Menang Slot Online Lebih Besar Di Bandar Teraman Karena banyaknya pilihan situs judi di internet. Penting bagi seorang pemula khususnya untuk memilih sebuah bandar judi terpercaya. Karena berbagai

    JavaTechnology Slot Online | Cara Daftar bermain Slot Online
  • Private Presentation

    Private content!This content has been marked as private by the uploader.

    Private Presentation
  • プログラミング言語における正規表現リテラルの必要性について

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

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Backbone.js

    Simo Ahava - Tag Management Solutions – Best. Data. Ever. MKTFEST 2014Marketing Festival

    Backbone.js