タグ

Programmingに関するcpwのブックマーク (36)

  • Carbon | Create and share beautiful images of your source code

    Create and share beautiful images of your source code. Start typing or drop a file into the text area to get started.

    Carbon | Create and share beautiful images of your source code
    cpw
    cpw 2024/08/21
    たしかにきれいにしてくれる。いいな。
  • まるで詩のような日本語で書いたプログラム - 実際に動きます - Qiita

    はじめに 日語プログラミングの議論が続いていますが気分転換にこんな奇抜なプログラムはどうでしょうか。 経緯 木村 明さん 1 の傑作かつ芸術的な日語プログラムに「ポエム(Poem)」があります。 1986年に作られました。当時はPC-9801やFMRなどMS-DOS環境のPCが全盛で、このプログラムもPC-9801向けに書かれていました。プログラムは大変面白いのですが、そのような事情で現在では実際に動かすことはできず長いこと眠っていました。 一方で、Mindのほうは長らく開発していたGUI版が動き始め、Poemが使うグラフィック描画もできるようになったことから、Poem を実際に動かしてみたくなりました。9801グラフィックの互換処理を差し込むことでなんとか動かすことができました。動いたときは「ああ、こんなプログラムだったな」とちょっと感動しました。 公開について 氏の許可を得てソース

    まるで詩のような日本語で書いたプログラム - 実際に動きます - Qiita
    cpw
    cpw 2023/10/16
    ブラウザで動くようにしたら特定のサイトで流行りそう
  • How to recover from microservices

    I won't deny there may well be cases where a microservices-first architecture makes sense, but I think they're few and far in between. The vast majority of systems are much better served by starting and staying with a majestic monolith. The Prime Video case study that blew up the internet yesterday is but the latest illustration. Maybe once you reach the scale of Netflix or Amazon, there are areas

    How to recover from microservices
    cpw
    cpw 2023/05/06
    ちゃんと自分で考えないとダメだよねー
  • コーディングルールはマジでしっかり決めろって話

    どうも、フリーランスエンジニアの人です。 今まで関わったプロジェクトにおいてコーディングルールが曖昧だった環境で苦労したので、例に出しながら振り返ろうと思います。 ※ 記事に登場するコード例は実際に存在するコードではありませんがヤバさは忠実に再現しました。 2022/11/5 追記 曖昧かつ実態のズレた変数名 変数の命名というものはエンジニアによって少々偏った傾向が見られますが、その変数が指し示す実態と命名に大きなズレがなく、主旨が伝わればエンジニアリングにおいて大きな問題はないはずです。 ですが、世の中には曖昧かつ実態と一致しない変数名が書かれたプロダクトコードが存在します。 以下のコードをご覧ください。 ※ 今回はJSを例に出します // ユーザーのデータを取得 export const getUserData = async (id) => { const res = await

    コーディングルールはマジでしっかり決めろって話
    cpw
    cpw 2022/11/06
    コーディングルールをしっかり決めたら物凄い長大なドキュメントになるから非現実的。lintでできる範囲に留めておいて、あとは優秀なエンジニア集めてコードレビューで擦り合わせていけば変なことにはならないよ。
  • x + 0.25 - 0.25 = xが成り立たないxとは何か|Rui Ueyama

    スタンフォードのコンピュータサイエンスの授業で、ときどきこれは良問と思う問題がテストで出ることがある。僕の印象に残っているのは「xをfloatとするとき、x + 0.25 - 0.25 = xが成り立たないxを求めよ」というものだ。浮動小数点数を理解していないと、両辺が同じにならないケースがあるほうが不自然に思えるだろうから、この問題は浮動小数点数の奇妙さを結構うまく突いていると思う。この問題を元に浮動小数点数についてちょっと説明してみよう。 まずコンピュータ上での数について少し考えてみよう。コンピュータにおける数と、数学の整数や実数は、よく考えてみると全然違う。コンピュータは有限の記憶領域しか持っていないので、無数にある数を表すことが根的にできない。つまりコンピュータ上の数は「物の数になるべく似せた別の何か」だ。現実的には、例えば32ビットの数なら2^32パターンしか表せないので、そ

    x + 0.25 - 0.25 = xが成り立たないxとは何か|Rui Ueyama
  • 属人化を避ける - Qiita

    属人化の理由 個人の問題 手抜きやバグを隠す たとえば、仕様書外の動作を実装し、それをプロジェクトで利用する 解雇されないための保険的行動 チームの問題 マニュアルを作る文化の欠如 他人のタスクに対する無関心 他人の監査なしにプロジェクトを更新可能 どうやって属人化を避けるのか 間違った対策 ○○さん以外にもマニュアルなしで操作できる人間を育成 育成した人が全滅すればやっぱり同じ状況 全員がすべてのプロジェクトに精通するとかはムリ 正しい対策 モジュールごとに仕様書を用意 間違って使うことが難しい仕様とする 即ち、仕様書を読まなくてもある程度正確に使える お互いにコ��ドレビューさせる 具体的にはどうすれば良い? テスト・仕様書・利用例 テストは仕様書のベースとなる 仕様書を見れば、深い動作がわかるようになる 仕様書を読まなくても、利用例を見れば使える 全員がテストできる環境を作る 前提条件

    属人化を避ける - Qiita
    cpw
    cpw 2017/10/24
    少数精鋭なら属人化しても大丈夫。出来上がるシステムは直感的だしソース読めが通じる世界。大変効率が良い。ただ、そうでない人は全く活躍できなくなるし、できる人だけを雇うのは大変難しい。
  • 「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話(補足編) - 土屋つかさの技術ブログは今か無しか

    前回書いた「「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話( http://d.hatena.ne.jp/t_tutiya/20170519/1495197904 )」は土屋のブログ記事にしては珍しくはてブやコメント、twitterで反響を幾つか頂きました。その中の幾つかを紹介します。分かっているとは思うけど、サンプルコードはJavaScriptを意識してますがてきとーです。 案1:マジックナンバーを定数化する MAX_OPAQUE = 1.0f //定数宣言のつもり if (alpha < MAX_OPAQUE){ //処理A } "1.0f"に意図を設定すればコメントが不要なのではないか説。うーん、これはちょっと難しいかな……。"MAX_OPAQUE"が正しい変数名だとは思えませんが、どんな名前にすれば意図が説明できるのかちょっと思いつきません。また、数式が複雑

    「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話(補足編) - 土屋つかさの技術ブログは今か無しか
    cpw
    cpw 2017/05/21
    この記事には賛同しかねるなー。id:erukitiの書き方の方が明快。コメントはいろいろな理由で素直に実装していない箇所と難解な箇所にだけ使えばいいと思ってる。
  • 103139

    エミュレータを作ってみたいなぁという漠然とした思いがずっとあったので、ファミコンのエミュレータを書いている。スクリーンショットにあるような表示はできる。 ファミコンにした理由 エミュレータは作りたいが、よく知らない機械のエミュレータを作ってもつまらないので、多少は親しんだファミコンにした。 一番印象深いゲーム機は���ーパーファミコンだが、スーパーがついてないほうが簡単かな、と思ってファミコンにした。 買ったもの カートリッジからROMイメージを吸い出すために、吸い出し機をAmazonで購入した。 GAMEBANK-web.comオリジナル「FCダンパー」 / ファミコン ファミリーコンピュータ Famicom Kazzo DUMPER レトロゲーム 吸い出しツール [0217] 出版社/メーカー: GAMEBANK-web.comメディア: エレクトロニクスこの商品を含むブログを見る ゲーム

    103139
    cpw
    cpw 2016/09/05
  • 知っていてこだわらない、それがいいソフトウェアエンジニアの条件なんだと僕は思うんだ - assertInstanceOf('Engineer', $a_suenami)

    週末の午前中、カフェでアイスコーヒーを飲みながらふとポエムでも書いてみようかと思い立ってしまったので、ちょっと前からよく考えていることを書く。当に思いつきで書くので乱文になる可能性が高いけどご容赦いただきたい。そもそもブログを書くこと自体が相当久しぶりだ。 僕ももう 30 をすぎて、プログラマの世界ではさすがにもう若手とは呼べなくなり、教育っていうのはおこがましいけど、まあ自分より若い人たちの指導みたいなことをやらないといけない立場になってきたからこそ、「いいプログラマとはどういう人なんだろう。この人たちはどういうことを学べたら幸せだろう。」ということをよく考えるようになった。そういう話をする。 プログラマは手段のスペシャリストである 世の中には目的・手段論みたいな論調が存在する。 「それは手段だよね。目的をはき違えたらダメだよ。」という話はいたるところでよく耳にするんだけど、僕はこれを

    知っていてこだわらない、それがいいソフトウェアエンジニアの条件なんだと僕は思うんだ - assertInstanceOf('Engineer', $a_suenami)
    cpw
    cpw 2016/08/30
    ビジネスの現場においてある人が目的だと思っている KPI の達成だって究極的には利益を上げるための手段だし、その会社の存在そのものが営利とは別の何かを成し遂げるための手段かもしれない。
  • 発言広場 - 新入社員プログラマーですが周りについていけません

    まだ満足のいく回答を得られていないみたいなので二度目の回答を 一回目の回答で文系と書きましたが、それは世の中から法則性を見付け定式化できる能力があるかどうかという意味です Jiamari459さんは、RPGなどのコンピューターゲームはしますか? するとしてキャラクターのレベルが上がって強くなったとき、将来どれくらい強くなるか知りたいと思いますか? そして知りたいならどうやって知ろうとしますか? インターネットで検索するのが一番早くてスマートな問題解決方法かもしれません でも、私の場合なら幾つかのレベルのサンプルから計算式を推測します (武器のレベル+キャラクターの能力値)×技による倍率-敵のレベル+乱数 といった感じです こうして次のレベルの数値を予測しレベルを上げて計算式の正しさを証明していきます これは科学的手法そのもので、いわゆる理系と呼ばれる人達はこの能力が長けています 掛け算九九

    cpw
    cpw 2016/05/01
    今まで多くの同期が脱落してきた。自分より頭良い人ばかりなんだけど。でも今は仕事をバリバリこなしてる。配属後プログラミングがメインで求められるかそうでないかで転職するかを決めたらいいと思う。
  • 植山 類

    仕事を説明するときに「Google仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒に仕事している」というと、???という反応になることが多いので、こういう仕事をしているんだよということをちょっと説明してみます。...

    植山 類
    cpw
    cpw 2016/04/18
    こんな環境で働きたい
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
    cpw
    cpw 2016/04/07
    これはすごく興味深い。結局JavaAssistなんだなー。
  • 転職して7年が過ぎた

    これを一部でシェアしたのは2014年なので結構前ですが、エンジニアのキャリアパスを考えるにあたって参考になるかと思って公開します。あくまで個人的な体験談で会社の見解などとは関係ないということに注意してください。 -------- 入社日記念の無料マッサージクーポンのメールを受け取って気づいたんだけど、こないだで入社後7年が経過したらしい。僕は結構長い期間をここで過ごしたことになるんだなと思った。ちょっと以前のことを振り返ってみようと思う。言うまでもないけどこれは僕の書ける範囲での個人的な感想と体験談であって会社の見解等を表しているものではない。 きっかけ そもそも最初は2007年にGoogle Japanのリクルーターからメールをもらったのがきっかけだった。Google Japanの知り合いから紹介で誘いがきて、「お、これは引き抜きってことかな?」と思ってよろこんで話を聞きに行ったのだった

  • ニッポンはもうIT大国になれない

    ソフトウェア業界はドラゴンボールの世界と似ています。 「私の戦闘力は53万です」 というのはフリーザの有名なセリフなのですが、ソフトウェア産業でもまさに同じようなことが起きていて、戦闘力(=生産性)が桁外れの人がごろごろいるのです。 100人のプログラマが2週間かかって出来ないことをスーパープログラマが2時間であっさり解決とか普通にある世界です。 Google Code Jam とか Top Coder のアルゴリズム部門といったオンラインプログラミングコンテストに出場してみればわかると思います。(誰でも出場できます) 全世界一斉によーい・・ドン!と始まって、1問目の問題文を読み始めます。 すると・・三分の一も読むか読まないうちに、スコアボードにはすでにプログラムを提出して正解判定をもらっている人がちらほら出始めます。 なん・・だ・と・・?! あなた方は魔人ブウの団体様ですか?? なんとか

    ニッポンはもうIT大国になれない
    cpw
    cpw 2016/02/29
    システムは一度作ればコピーできる。でも日本語で作っても対象は1.2億人。英語で作ったら17.5億人。つまり同じシステムでも英語圏でやればその価値は10倍以上。そりゃ英語圏でやるよね。どうやっても大国にはなれないよ
  • PHP開発者 Rasmus Lerdorf氏インタビュー ~PHPは「利己的」な開発者の集まり | gihyo.jp

    2010年9月24日・25日に開催された「PHPカンファレンス2010」にあわせて、PHP開発者のRasmus Lerdorf氏が来日されました。日を訪れるのは2度目という氏に、PHPの現状とその根底にある思想についてお話を聞きました。 現在の仕事について 大垣:昨年 Yahoo! Inc.を退職されましたね。現在はどのような仕事をされているのでしょうか? Rasmus:WePayという起業したばかり小さな会社にいます。WePayはカリフォルニアにある、グループで支払いを行う処理を行うベンチャー会社です。 大垣:グループで支払いを行う、というのは、どういうことですか? Rasmus:グループで何かを買いたいときに、グループとしてお金を管理したいですよね。例えば、大学で学生が集まってプレゼントを買いたいという場合があります。どんなものでも構わないですが、10人が集まって共同でオンラインショ

    PHP開発者 Rasmus Lerdorf氏インタビュー ~PHPは「利己的」な開発者の集まり | gihyo.jp
  • 今夜わかる「スタック・オーバーフロー」の世界 - give IT a try

    はじめに プログラミングをやっている人であれば、スタック・オーバーフロー(Stack Overflow)を知らない人はいないと思います。 エラーメッセージをコピペしてググるとトップによく出てくる、このページのことです↓ Stack Overflow - Where Developers Learn, Share, & Build Careers また、ご存知の方も多いかもしれませんが、去年の12月からは日語版サイトも登場していて、現在は日語で質問と回答が投稿できるようになっています。 スタック・オーバーフロー とはいえ、ネットで見つけて回答を読むことはあっても、自分から質問したり回答したりする人はまだまだ少数派のような気がしています。 そこで、今回のエントリでは日語版サイトをメインターゲットにして、スタック・オーバーフローの使い方をまとめてみようと思います。 注:このエントリでは関数

    今夜わかる「スタック・オーバーフロー」の世界 - give IT a try
  • VMの検知について - 冬のソフトウェア海岸

    マルウェアを解析する際にはVMで解析を行うことが多いので、VMを検知してアンチデバッキングするマルウェアが存在する。それらが用いる手法についてまとめた。 1. TSCを用いる TSC(IA32_TIME_STAMP_COUNTER_MSR: TSC_MSR)とは、CPUクロックごとに加算される64bitのタイムスタンプカウンタであり、これを RDTSC(Read Time Stamp Counter)命令を使って読み出すことで、CPUクロックと同じ分解能を持つ精度のタイマを使うことができる。 CPUクロックに基づく相対時刻の計測 このタイマを用いて、VMとホストマシンで実行した時の時間差を確認することでVMを検知できる。以下のコードはwin上のgccで動作する。 # include <stdio.h> int main(void) { unsigned int time1 = 0; uns

    VMの検知について - 冬のソフトウェア海岸
  • 分散システム処理モデルに関する動向について(MapReduceからBorgまで)

    詳細については後述しますが、MapReduceの処理モデルは、上記の通り各区分ごとにそれぞれ単純化(限定)されたモデルであったと言えます。 また、MapReduceの関数プログラミングおよびグラフ的な特徴も合わせて以下に整理してみます。 関数プログラミング的な特徴 MapおよびReduceフェーズは、それぞれ関数型プログラミングのMapおよびReduce処理をモデル化したものです。MapReduceは、参照透過性がある純粋な関数処理と言えます。参照透過性とは入力により出力が一意に決まる性質のことです。言い換えればMapReduceの処理は、大域などの処理に影響する外部の環境は持たず、内部的にも静的な一時変数などの状態も持たないことを意味します。 純粋な関数処理は複数の処理が同時に実行されても他の並列に動作している処理の状態には左右されないため、この参照透過性は並列化に向いている性質がありま

    分散システム処理モデルに関する動向について(MapReduceからBorgまで)
  • これはすごい!3秒でプログラミングが始められるサービス17選 - paiza開発日誌

    Photo by Jason Cartwright こんにちは。谷口です。 プログラミングの勉強で「ちょっとあの開発言語の勉強をしてみたいな~」「実際にコードを書いて動かしてみたいな~」という時に、ハードルとなるのが「実行環境の作成」だと思います。 そんな時に役立つのが、書いたコードをブラウザ上で実行できる「オンライン実行環境サービス」です。 今回は、実行環境の手間を省いて「書いたコードをブラウザ上で実行できる無料サイト」を紹介します。 目次 ・複数言語対応系 ・ideone ・CodePad ・paiza.io ・repl.it ・Codecademy ・runnable ・Wandbox ・SourceLair ・JavaScript系 ・JSFiddle ・jsbin.com ・Codepen ・jsdo.itPHP系 ・PHPfiddle ・PHP Sandbox ・Write

    これはすごい!3秒でプログラミングが始められるサービス17選 - paiza開発日誌
  • TeXのアルゴリズムの再実装 - プログラミングの30年間を振り返る

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重��な変...

    TeXのアルゴリズムの再実装 - プログラミングの30年間を振り返る