タグ

プログラミングに関するokusa75のブックマーク (107)

  • 5年間コードを書き続けたエンジニアが、新人に読んでもらいたい11冊+αを紹介する|ハイクラス転職・求人情報サイト AMBI(アンビ)

    5年間コードを書き続けたエンジニアが、新人に読んでもらいたい11冊+αを紹介する 新人エンジニアのうちに読んでおくと役立つ名著やおすすめのを紹介。開発全般やコーディングなどの作法を学ぼう。 某社でサーバサイドエンジニアをしている @ikenyal と申します。開発言語は主にPHP。新卒入社から5年、エンジニアとして働いています。学生時代にもプログラミング、サーバ・ネットワーク構築や運用を経験しました。 これまで、社内外で新卒からベテランまで多くのエンジニアを見てきました。その中で、新人のうちに身につけておいた方が良いだろうと思うものは「お作法」と「基礎知識」です。 プログラミング言語やシステムの専門的な知識は後からでも勉強できます。一方で、さまざまな自己流の癖は時間が経つと身に染みついてしまい、指摘されても直すのが難しくなってしまいます。そのため、新人のときに良いお作法を勉強しておくこと

    5年間コードを書き続けたエンジニアが、新人に読んでもらいたい11冊+αを紹介する|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • プログラマが知るべき97のこと

    プログラマが知るべき97のこと大人気の書籍『プログラマが知るべき97のこと』のエッセイを無料で公開中!すべてのプログラマにおすすめのがウェブで読めるようになりました。 エッセイ一覧分別のある行動関数型プログラミングを学ぶことの重要性ユーザが何をするかを観察する(あなたはユーザではない)コーディング規約を自動化する美はシンプルさに宿るリファクタリングの際に注意すべきこと共有は慎重にボーイスカウト・ルール他人よりまず自分を疑うツールの選択は慎重にドメインの言葉を使ったコードコードは設計であるコードレイアウトの重要性コードレビューコードの論理的検証コメントについてのコメントコードに書けないことのみをコメントにする学び続ける姿勢誰にとっての「利便性」かすばやくデプロイ、こまめにデプロイ技術的例外とビジネス例外を明確に区別する1万時間の訓練ドメイン特化言語変更を恐れない見られて恥ず

    プログラマが知るべき97のこと
  • "Hello world!"

    このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。そういうことにしろください。 10年前、20代になったばかりの頃の僕は、今思えば当に最低な生活を送っていた。高校を中退し、実家とは疎遠で、友達もなく、金もなく、夢も希望もなく、ただバイト先と自宅を行き来するだけの毎日。いつも視界には霞がかかったようで、底の見えない空虚さだけが僕の心を支配していた。 それでも趣味らしいものはあった。オンボロマシンにRedHatを入れ、ダイヤルアップの細い回線で自宅サーバを立て、Perlでガラクタのようなプログラムを動かす。そんな子供じみた遊びだけど、プログラムを組んでいるときだけは空虚さを忘れ、画面の中に没頭できた。 ただ、そのときの僕はもうすでにいろんなものに打ちのめされていて、若者にありがちな全能感などというものは霧散していた。自分がプログラミングで何かを成すだとか、それを仕

    "Hello world!"
  • 人生に物語は要らない

    先日ホッテントリに上がっていた単著持ち増田のエントリを読んで、そういえば自分も増田が原因でを書いたんだったと思い出した。 数年前、初めて増田に文章を投稿したら2000ブクマ付いた。「文才がある」「物書きとしてっていける」とか言われたので、24万字の文章を書いてKindleで出版した。ぜんぜん売れなかった。人の言うことを安易に信じてはいけないと思った。 そのあとまたホームレスになったので(2年ぶり3回目)しばらく福島で除染作業員として働いた。除染と言うと何か特別なことをしているように聞こえるけど、実はただの土木工事である。肉体労働は久しぶりだったけど、小難しいことを考えず黙々と目の前の作業に打ち込んでいると、頭の中の不純物が取り除かれていく感じがした。 そうだ、僕は物書きになりたいなんて思っていたわけじゃない。そんなものは誰かから押し付けられた「物語」でしかない。いままでも「元ホームレス

    人生に物語は要らない
  • JavaScriptフレームワーク選定の議論 - Qiita

    相談内容 既存の管理ツールを新しく作り直すために新しいJSフレームワーク/言語使いたいのですが、何を選んだらよいでしょうか? ここで選んだものは今後新しく作る時にも使用していく予定のため、学習コストよりメンテナンスしやすいものを選びたいと考えています。 利用者は社内外で特定の権限を持った人のみであるため、サーバサイドレンダリングはしない予定です。 言語は型があるものを利用したいのですが、TypeScriptとFlowのどちらがよろしいでしょうか? 時間に余裕があれば、テストフレームワークやビルドツールについてもお聞きしたいです。 現在のページ/チーム jQueryなどで書かれている部分が多いですが、変更を加えることが難しくメンテナンスコストが高いです。 サーバサイドをやってる人が片手間で書くJavaScriptといった状況です。 今回新規で数ページを追加する必要があるため、何を利用すれば良

    JavaScriptフレームワーク選定の議論 - Qiita
    okusa75
    okusa75 2017/08/04
    見やすい。でも、「メンテナンスしやすいもの」ならJavaScriptは選ばないなぁ。今後長期にメンテナンスするならなおさら。
  • 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
  • 関数型プログラミング入門 | POSTD

    多くの関数型プログラミングに関する記事が教えてくれるのは、抽象的な関数型のテクニックです。つまり関数合成やパイプライン、高階関数などです。この記事では違います。ここでは、プログラマが毎日書く、命令型で非関数型のコードの例を示し、それを関数型の形式へ書き換えます。 最初のセクションでは、短いデータ変換のループを取り上げ、map関数やreduce関数に書き換えていきます。2つ目のセクションではより長いループを取り上げ、ユニットに分解し、それぞれのユニットを関数型に書き換えます。3つ目のセクションでは、連続した長いデータ変換のループを関数型のパイプラインに分解します。 ここではPythonでの例を取り扱います。というのも多くのプログラマはPythonを読むのは簡単だと思っているからです。多くの例では、mapやreduce、パイプラインなどの多くの言語に共通する機能を例示するため、Python的な

    関数型プログラミング入門 | POSTD
  • プログラミング初心者が中・上級者になるための近道

    初心者と中級者、上級者の違いとは何でしょうか? 初心者は、 知識が少ない 開発したソフトウェアの数が少ない 中級者・上級者はその逆で、 知識が多い 開発したソフトウェアの数が多い その結果生まれる実質的な差は、 「初心者はかんたんなものしか作れないけど、中級者・上級者は難しいものを作れる!」 ということです。ですから、初心者が中上級者になるには難しいソフトウェアを作るのに役立つ知識を身につければ良いわけです! 難しいソフトウェアとは、 ロジックが複雑で難しい 規模が大きい 性能要件が厳しい 納期が短い など、いろいろな難しさがあります。 これらのハードルに対抗する知識・技術について紹介します。 規模が大きいソフトウェアを作るための技術 規模が大きいソフトウェアを作るための技術には、以下のようなものがあります。 モジュール分割 アプリケーションアーキテクチャ フレームワーク プログラミング作

    プログラミング初心者が中・上級者になるための近道
  • Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス?

    Appleは21日、iOSのソフトウェアアップデート7.0.6をリリースした。 iOS 7.1が早ければ3月中旬にもリリースされるとみられていたが、SSL接続の検証に関して、半月以上も待つことができない重大なバグが見つかったためだ。 SSLとは、「ウェブサイトで入力する個人情報やクレジットカード情報などを暗号化し、安全に送受信する技術」(Symantec)だ。データを安全にやりとりするために利用されている非常に重要な技術となっている。 そして今回、クライアント(ユーザ側)とサーバ(ウェブサイト側)の間をSSL接続する際のプログラムに、「BASIC初心者でも一目で分かるようなミス」(Wired)が見つかり、修正されることになったようだ。ミスがあったのは、以下の部分。 Appleが公開しているソースコード 「goto fail;」が2行続けて記述されている箇所に注目してほしい。2行目の「got

    Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス?
    okusa75
    okusa75 2014/02/23
    if文は1行だけでも必ず{}を付けるように。
  • 学生プログラマ日本一はどんなアルゴリズムを使ったのか?精鋭たちの熱き対決「CODE VS 3.0」を実況中継 #codevs|CodeIQ MAGAZINE

    また、あの興奮が六木・ニコファーレにやってきた! 学生プログラマ日一の座を賭けた熾烈な戦い、「CODE VS 3.0(コードバーサス3.0)」の決勝トーナメント。その激戦の模様をレポートします。 by 馬場美由紀 (CodeIQ中の人) 「CODE VS 3.0」ついに決勝戦が開幕 「CODE VS(コードバーサス)」とは、相手の隙を衝くアルゴリズム活用力と、的確なコーディング技術を競い合うプログラミング・コンテストである。その決勝トーナメントが開催された六木・ニコファーレに降り立ったのは、全国から予選を勝ち抜いた学生プログラマ8名。 ざっくりとルールを解説すると、テーマとして与えられるのは、ある「ゲーム」。そのゲームを攻略する「最強のAI」作成が、挑戦者の使命である。 お題のゲームはコンテスト専用に作られた「爆弾ゲーム」。格子状の通路に敵キャラが徘徊、それを上手く配置した地雷設置方

    学生プログラマ日本一はどんなアルゴリズムを使ったのか?精鋭たちの熱き対決「CODE VS 3.0」を実況中継 #codevs|CodeIQ MAGAZINE
  • 計算機プログラムの構造と解釈 第二版

    [ 目次, 前節, 次節, 索引 ] 2014-03-06 更新 [ 目次, 前節, 次節, 索引 ]

  • オンラインで誰でもプログラミング学習ができるEdTechサービス総まとめ(2013年版):GREAT GEEKS:オルタナティブ・ブログ

    今年も早いもので残すところわずかとなりましたね。2013年に注目を浴びるようになったEdTechという言葉ですが、ITを活用した学びの可能性がどんどん大きくなってきており、以前よりも幅広い内容を学ぶことができるようになりました。そこで今日はプログラミング学習にフォーカスをあてて、国内外問わずプログラミングを勉強できるサービスをまとめました。 オンラインで誰でもプログラミング学習ができるサービス総まとめ ◆日のサービス 1.無料動画で勉強できる『ドットインストール』 ドットインストールは初心者向けプログラミング学習で、基的に全て無料で見放題のサービスです。ビデオコンテンツが1000以上あり、初心者でも挫折しにくいように数分ほどの動画に区切ってあります。私自身も日頃愛用しているサービスの1つで、HTMLCSSJavaScriptなどのweb言語からObjective-Cなどのアプリ開

    オンラインで誰でもプログラミング学習ができるEdTechサービス総まとめ(2013年版):GREAT GEEKS:オルタナティブ・ブログ
  • 現役灘高生のLisperがイベントに登壇、「中学生にもLispを広めたい!」

    「(プログラミングを始めたばかりの)中学1年生にLisperが増えるのを期待している」。2013年11月21日に開催されたプログラミング言語LISPに関するイベント「Mathematical Systems Lisp Meeting」で、灘高等学校2年生の中西航氏が「灘校パソコン研究部(NPCA)におけるLISPの活用について」と題して講演した(写真1)。

    現役灘高生のLisperがイベントに登壇、「中学生にもLispを広めたい!」
    okusa75
    okusa75 2013/11/25
    昔、LISPが動くポケコン持ってたなー。仕事じゃなくて言語に興味あるならPrologやればいいのに。
  • IIJ Research Laboratory

    ネットワークの計測と解析 インターネットの使われ方やネットワークの挙動を把握する事は、ネットワークを運用し、その技術開発を行う ために欠かせません。しかし、観測で得られるデータ量は膨大ですがノイズが多く、また、観測できるのは極めて限られた部分でしかありません。そこで、膨大なデータから意味のある情報を抽出したり、部分的な観測からより一般的な傾向を推測する事が必要となります。... インターネット基盤技術 速くて、安全で、信頼性が高く、使いやすく、など、インターネットサービスへの要求はますます高まっています。これらの要求に応えるために、インターネットの 基盤技術も日々進歩しています。いまやインターネットはつながるだけのサービスではなく、高度で複雑な機能を備えた社会基盤となりました。IIJ技術研究所は、インターネットの基盤として実現が期待される機能を提供するために、さまざまな技術課題に取り組んで

  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

    okusa75
    okusa75 2013/08/13
    こんなにメソッドチェーンを並べちゃうと例外処理で困りませんか?
  • Webサービス作るの難しすぎるよう... - 旧gaaamiiのブログ

    こちらの記事。盛り上がってますね。 今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 正直、「背伸びのしすぎ」としか言い様がない。要らない知識を取得するために必要な知識を修得するための時間を捨てているようにしか思えない。GETとPOSTの違いもわからない人が、ルーティングやらフォームの自動生成やら使えるわけがない。 こういうのってけっこう頻繁に盛り上がるようなものなのか、2008年にも、モバツイの開発者えふしんさんがはじめてWebプログラミングをするなら PHP? Ruby?という記事で似たようなことを書いてます。 Ruby on Railsが10分でWebアプリができた!的な話はあまり好きではない。フレームワークは、まだ行間を読めない初心者が簡単にWebアプリを作るためのものではない。 どちらも、初心者が基的な技術そっちのけでブラックボックス

    Webサービス作るの難しすぎるよう... - 旧gaaamiiのブログ
    okusa75
    okusa75 2013/07/29
    初心者が色んなことに手を出すとそりゃ失敗する。まず本を一冊読み込んで、自分で試してみてわかった気になることが大事。
  • 革命の日々! mallocの発音について

    すごい昔に glibc mallocの内部実装についての解説をGoogle Videoにアップロードしたことがあるんだけど(*)、そのときにmallocを「まろっく」と発音していたらすごい勢いでツッコミをもらった。エムアロック派とメイロック派の両方に怒られた。 ところで、先週 glibcのメンテナと一緒に事をする機会があり、glibcの今後の開発について相談をしたりしてたのだけど、がんばって「めいろっく」「めいろっく」言ってたら、「まろっくね」とやんわり否定されて、恥ずかしさマックスだった。はー、まともに英語が喋れるようになりたいわ。 (*)正確には「されたことがある」だけど。わたしはしてない。あの動画はアップロード者によって削除されてしまったので、もうインターネット上では見れない。知り合いに見られないのはいいことだが、自分がオリジナルをもってないので、たまにコピーをくれと言われると困っ

    okusa75
    okusa75 2013/04/24
    まろっく だな。めいろっく は始めて聞いた。何語読み?
  • メモリリークとは何か - kuenishi's blog

    メモリリークに悩まされている技術者は多いだろう。メモリリークが嫌でGCという技術が開発されたといっても過言ではないし、歴史的にはC++からJavaへシフトが起きた大きな理由のひとつといっていい。Unix系の簡単な定義でいえば、ヒープ領域を指すポインタ(アドレス)をロストしてしまえばそのメモリはもう漏れたといってよい。たとえばこういったコードだ。 struct { int i; char c; } spam; int main(){ void* p; int i; for(i=0; i<1024; ++i){ p = malloc(sizeof(struct spam)); } pause(); } このコードではpause(3)の時点で約5KBのメモリが漏れている。free(3)を使えばメモリをOSに返却できるが、アドレスが分からないので返却できない。 ところが、ここでいいたいのは、メモリ

    メモリリークとは何か - kuenishi's blog
    okusa75
    okusa75 2013/04/23
    これもリークって言うのか?うーん。不要なメモリではあるけど。mallocで毎回1MB固定長で確保してるようなものよね。
  • Windows 8のC++でプログラミングの常識がひっくり返った

    「C言語とC++がわかる」というムック(2013年4月2日発売)の作業で、Windows 8/RTで動く「Windowsストア アプリ」をC++で作った。元記事はVisual BasicとC#(シーシャープ)で作っていたので、それをC++で書き直すというわけだ。 これが想像をはるかに超えて難しく、土日に働き続けるのはもちろんのこと、1日の睡眠時間を2時間に削ったりして長時間取り組んでも、思うように進まなかった。印刷会社にデータを渡す日は近付くしプログラムは動かないしで、10年に1度クラスの大ピンチ。冷や汗をかき、涙目になりながら書き続けて何とか間に合わせたのだが、どこが最大の難所だったかというと、「順次処理を書いたつもりなのに順次処理してくれない」という、常識破りの大変化があったことだと思う。 手続き型のプログラミング言語でプログラムを書く場合、プログラマが と記述したら、コンピュータは

    Windows 8のC++でプログラミングの常識がひっくり返った
    okusa75
    okusa75 2013/04/04
    これは宣伝になっているのか・・?C言語でselectを使ったことすらないのか?
  • プログラミングは一朝一夕に達成できるものじゃない - カレーなる辛口Javaな加齢日記

    http://anond.hatelabo.jp/20130322031333 プログラミング出来る方法教える。 書いた人に悪意があったかどうかは知らないが,予想通り結果的に初心者を惑わせるだけの悪質な記事. まあこの手の奴は99%デマと考えてよい.このくらいの文章量では,プログラミングができるようになる方法を記述するには全然足りない. 一応ツッコミは入れておく. 世の中「プログラミング言語」を説くはごまんとあれど「プログラミング」を説くやブログはあまりない。 ほとんどのプログラミング言語は,多かれ少なかれプログラミングのやり方も含めて説明している. C実践プログラミング 第3版 作者: Steve Oualline,望月康司(監訳),谷口功出版社/メーカー: オライリー・ジャパン発売日: 1998/06/15メディア: 大型購入: 7人 クリック: 158回この商品を含むブログ

    プログラミングは一朝一夕に達成できるものじゃない - カレーなる辛口Javaな加齢日記