タグ

Programmingに関するendo_5501のブックマーク (537)

  • プログラマの三大美徳について…その原典ではどう語られているのか - Magnolia Tech

    プログラミングPerl〈VOLUME1〉 作者:ウォール,ラリー,オーワント,ジョン,クリスチャンセン,トム発売日: 2002/09/01メディア: 単行 何度も読み返す技術書の話題で忘れてはいけないのがPerlの作者であるLarry Wallが書いた「Programming Perl」。 このPerlというプログラミング言語に関する解説書である共に、定期的にブログなどで話題になる「プログラマの三大美徳(無精、短気、傲慢)」に ついて解説されている原典でもある。 この三大美徳…意外と原典ではストレートには語られていない点も興味深い。三大美徳の中身は散々語られているので、ここでは原典でどのような流れで語られているのか調べた。 Perl自体の人気もだいぶ下がっているし、日語に訳されているのはPerl 5.6対応(20年前!)の第3版しかなく、2012年に出版された第4版は日語には翻訳

    プログラマの三大美徳について…その原典ではどう語られているのか - Magnolia Tech
    endo_5501
    endo_5501 2020/12/01
    偽りの無精, 偽りの傲慢, 偽りの短気
  • 西暦1年は閏年か? - プログラマーの脳みそ

    閏年(うるうどし)の話題。 Twitterで見かけた話題で「西暦1年は閏年かどうかぱっとわからん人おる?」という些か煽り気味のツイートを見かけたのだけども、反射的に「閏年じゃないに決まってるじゃん」とぱっと答えてしまわないだろうか。当にそうだろうか? そう単純な話なのだろうか? プログラミングを学んでカレンダーを扱うことを学ぶ際に置閏法についても簡単に触れられることがある。置閏法というのは閏年や閏月(太陰暦では1年が13ヵ月になるケースがあり追加の月を閏月と呼ぶ)をどのようなルールで挿入するかという話で、まさにアルゴリズムであるからプログラミングの話題と相性がいい。 置閏法 現代の西暦の置閏法(ちじゅんほう)は 西暦を 400 で割り切れる年は閏年 上記以外で西暦を 100 で割り切れる年は平年 上記以外で西暦を 4 で割り切れる年は閏年 上記以外は平年 といった手続きで閏年(つまり2月

    西暦1年は閏年か? - プログラマーの脳みそ
    endo_5501
    endo_5501 2020/10/30
    “ここで何が言いたいかというと「西暦を4で割りきれるなら閏年」というのはたまたまであるということ”
  • バージョン番号のソート

    B! 81 0 0 0 v8.10.1みたいなバージョン番号をソートしようとするとき、 単にsortコマンドとか使うとv8.2.1とv8.10.1で真ん中の2と10の1だけを 見て思ったのと逆にソートされてしまいます。 かといって単純に-nで数字として全体を見ることもできないのでちょっと工夫が必要です。 sortコマンド 区切ってソート sort -V git tagでの表示 sortコマンド v1.2.1 v1.10.1 v2.2.1 v2.2.2 v2.2.10 v10.2.1 みたいな内容のversions.txtというフィアルの中身をソートしたいとき、 期待するのは上の形になることです。 これをそのままsortコマンドとかに入れると $ sort versions.txt v1.10.1 v1.2.1 v10.2.1 v2.2.1 v2.2.10 v2.2.2 となります。 このま

    バージョン番号のソート
  • やねうら王、Large Page対応で10数%速くなった件 | やねうら王 公式サイト

    Windows上でメモリ確保にLarge Pageを使うとランダムアクセスが5%程度速くなるそうです。やねうら王の場合、ランダムアクセスはわりと支配的なのでTT(置換表)と、EvalHash(評価関数の値をcacheしておくメモリ領域)と評価関数テーブルをすべてLargePageに割り当てることで10数%高速化することがわかりました。 ここにきて、いまさら10数%も高速化するのか…と正直、驚いております。 Large Pageを使うC++のサンプルコード 置換表にLarge Pageを使うように変更。(やねうら王のGitHub) https://github.com/yaneurao/YaneuraOu/commit/f726457d03ccd3c51332b8cee8254a7d2a80dc69 Large Pageを使うC++のサンプルコードを探し求めてこのページに辿り着かれた方は、上

  • 無茶を聞いた時点で負け決定:ヒエログリフ -エンジニア版-:エンジニアライフ

    吉政忠志 さんのコラムを読んで、エンジニアの立場として似たような事例があったなと思い、コラムを書きました。吉政さんは「値引きには応じない」という姿勢ですが、私は「無茶な要求には応じない」という姿勢を通しています。安易に無茶を引き受けても炎上の勢いが増すだけです。無茶を乗り切ることで一時的な評価は上がりますが、しかし、無茶に答え続けることが求められてしまうので、結局は多くのものを失うことになります。 一般的には、無茶に応えることを「信頼」と表現する人を多く見かけます。お客さんの値引きに応じればこういう信頼を得ることはできるでしょう。しかし、吉政さんはコラムで「そういうお客様と付き合っても利益が出なくなる」と書いています。単純に、お金を払いたくない人の信頼を得てもビジネスとしては無益ということでしょう。信頼は、誰から得るかで大きく価値が変わるものだと思います。 同じことがプロジェクトに携わるエ

    無茶を聞いた時点で負け決定:ヒエログリフ -エンジニア版-:エンジニアライフ
    endo_5501
    endo_5501 2020/05/18
    “エンジニアであれば、応えても意味がない無茶ぶりより、プロジェクトを遂行できるだけのスキルの習得に回す方が賢い”
  • オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜 - Qiita

    オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜C++Haskellオブジェクト指向 オブジェクト指向とは何か?ということを真面目に調べていくと、オブジェクト指向には二種類ある、という話に突き当たる。sumim氏のQuora回答などを参照。 Smalltalkの設計者アラン・ケイによる、メッセージング重視のオブジェクト指向 C++の設計者ストラウストラップによる、クラス重視のオブジェクト指向 今回はこの後者のオブジェクト指向について、ストラウストラップの論文「「オブジェクト指向プログラミング」とは何か?」What is "Object-Oriented Programming"?(1991)の内容を(適宜行間を補いつつ)まとめてみる。 当然サンプルコードはC++(ほぼ原論文のコードのコピペです)。 ストラウストラップのオブジェクト指

    オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜 - Qiita
    endo_5501
    endo_5501 2020/05/14
    “オブジェクト指向プログラミングは抽象データ型の間に共通性がある場合は役に立つが、そうでないときは役に立たない”“役立つ領域としてインタラクティブな描画システム、役立たない領域として算術”
  • Zeal - DashにインスパイアされたWindows用のドキュメント閲覧ツール | ソフトアンテナ

    Macユーザーならば、超高速にプログラミング言語やライブラリのドキュメントを検索することができるお役立ちツール「Dash」の名前を聞いたことがある方も多いかもしれません。 Dash (Docs & Snippets) カテゴリ: 開発ツール 価格: 無料 プログラミング言語やライブラリの超高速ドキュメントビューアー。 日紹介する「Zeal」はそのDashにインスパイアされて作成されたWindows / Linux用のオフラインドキュメント検索ツールです。ショートカットを使った呼び出しや、複数のドキュメントの串刺し検索、オフライン環境での使用など、Dashの優れた特徴を引き継いでいます。また、Emacs、Sublime Text、Vimなど各種エディタへ統合することもできます。 使用方法 Windowsの場合バイナリをダウンロードするだけ…、といいたいところですがそれだけでは使うことができ

    Zeal - DashにインスパイアされたWindows用のドキュメント閲覧ツール | ソフトアンテナ
  • Microsoft、理解の容易なコード記述のためのプログラム言語 Bosque を公開

    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が最近リリースされ、重要な変...

    Microsoft、理解の容易なコード記述のためのプログラム言語 Bosque を公開
    endo_5501
    endo_5501 2019/08/20
    “Bosqueは、"正規化プログラミング"と呼ばれるプログラミングパラダイムの実現例である”
  • Sign in - Google Accounts

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    Sign in - Google Accounts
  • ソフトウェア設計の言語化スキルを磨くこと|qsona

    たとえば設計について議論するときや、コードレビューで指摘をするときに、「なぜその設計が良いと思うのか?」について言語化するのが上手だと、確実に良いことがあります。 言語化が上手にできるかが一つの壁なのではないか、と感じることもあります。後輩を育てたりチームをリードするような立場になると、特に必要性を感じるのではないかなと。 自分も、うまく言語化できたことですんなり議論を進められていると感じることは多いですし、逆に直感的な良さを言語化できなかったことで直感に反する方向に進んでしまい、結果よくなかったというような苦い経験もあります。 前提: ソフトウェア設計の良さは静的には決まらない良い設計・良いコードとは何なのか。という質問に一言で答えるなら、「保守性が高い」ことだと思います。つまり、今後の変更・拡張を、高速にバグが少なく行えるような状態が良い設計・良いコードです。(一般的にはこれで70%く

    ソフトウェア設計の言語化スキルを磨くこと|qsona
  • VR内でコードを読む 複雑な依存関係も3Dで見える化

    VR内でコードを読む 複雑な依存関係も3Dで見える化 3Dのネットワーク状の構造物としてプログラムのコードを視覚化し、さらにそれをVR内で眺めることができるツールを手がけるPrimitiveが、先日、Vive X fundにて開催されたピッチコンテストで発表を行いました。 「Primitive」によって、コードを読むという体験がこれまでのものと一新されるかもしれません。VR内に広がるいわばコードのネットワークの中へ潜り込みながら読むことができそうです。 3Dのネットワーク構造としてコード全容を展望 Primitiveは現在、統合開発環境であるVisual StudioやIntelliJ IDEA向けのプラグインとして開発されています。 プロダクトのコードをまるごと3Dの立体として描画することが可能となっており、コード同士の依存関係などがネットワーク構造として表現されるため、プロダクトのコー

    VR内でコードを読む 複雑な依存関係も3Dで見える化
  • 「サイゼリヤで1000円あれば最大何kcal摂れるのか」を自作CPU上で解いてみた

    サイゼリヤに1000円を持って事に言ったとき、どの料理を頼めば最大何kcalの事をすることができるかを、FPGAに構築した自作CPU上で計算しました。 自作CPU学校の演習課題としてFPGA上でCPU(プロセッサ)を作成しました。具体的には、PowerMedusaボードを利用し、このボード上にあるFPGAVerilogを用いてプロセッサとして動作させました。 5段パイプラインや簡易的な分岐予測(不成立)などが実装されています。 この演習では「SIMPLE」と呼ばれるアーキテクチャが予め与えられます。 SIMPLEアーキテクチャは16bit=1wordのワードマシンで、RISC的なISAを持っています1。基的にはこの仕様を満たすプロセッサを作成するのですが、必要に応じて自由に仕様を変更しても良いことになっています。私の班ではADDIやCMPIなどの即値演算命令を追加したほか、無条件分

    「サイゼリヤで1000円あれば最大何kcal摂れるのか」を自作CPU上で解いてみた
  • 次世代のプログラミングツール、未来のプログラミング言語の方向性について - YAMDAS現更新履歴

    Quara における「コンピュータプログラミングにおける最後のブレイクスルーってなんでしょう?」という質問に対するアラン・ケイの回答に触発された文章である(アラン・ケイって Quara で精力的に回答してんだね)。 アラン・ケイは上記の質問に対して、プログラミングツールの現状について嘆いている。他分野の工学分野、例えばコンピュータを使ったデザインやシミュレーションやテストであったり製造業であれば、それ用のモダンなツールがあるのに、プログラミングは1970年代から大きく進化していない。我々プログラマは他人のために素晴らしいツールを作ってきたが、自分たちのためのツールはそうでない。屋の子供のに穴が空いてるようなものだ、というわけだ。 この文章の著者であるマイク・ルキダス(O'Reilly Mediaのコンテンツ戦略担当副社長)は、ケイの回答に完全に同意はしてないようだが、我々は未だ「パンチ

    次世代のプログラミングツール、未来のプログラミング言語の方向性について - YAMDAS現更新履歴
  • DLLの配置場所を変更する(probing, codebase, developmentMode) - tekkの日記 C#,VB.NET

    .Net アプリケーションは DLL(アセンブリ)をロードする場合、Exe と 同じフォルダ、もしくは、グローバルアセンブリキャッシュ(GAC)を検索します。しかし、probing , codebase, developmentMode といった手法を使用すると検索範囲を拡張したり変更する事ができます。それぞれの手法には特性があり、どのような振る舞いをするのか、適切な利用シーンは何処なのか、検証してみました。 ■ probing プロービングはDLLの検索範囲をサブディレクトリまで拡張する手法です。アプリケーション構成ファイルに以下の様に設定すると DLL サブフォルダまで検索してくれます。 複数のサブディレクトリを指定する場合は、;(セミコロン)で区切ります。以下の指定だとlibサブディレクトリも対象にしてくれます。 アプリケーション構成ファイルは、プログラム名.exe.config と

    DLLの配置場所を変更する(probing, codebase, developmentMode) - tekkの日記 C#,VB.NET
  • A way to load DLL from central repository

  • 道路交通法には、免停基準に達しても永久に運転できるセキュリティホールがあるのではないか? - 2011-11-27 - 登 大遊@筑波大学大学院コンピュータサイエンス専攻の SoftEther VPN 日記

    私は運転免許証を持っており、また、自動車を運転する機会もあるので、安全運転のためにも、道路交通法について詳しくなろうと志し、この法律について熟読していました。 すると、すごく変な手順を踏んで道路交通法を以下のように活用することにより、何度も交通違反を重ねて免許停止処分や免許取消処分に該当するようになった運転者であっても、日国内で適法にかつ永久に運転することができるのではないか、ということに気付きました。 道路交通法において、以下のような変なことができるようになってしまっていることは、交通違反を繰り返した運転者が、来は免停や取消になるべきところ、工夫をすることにより免停や取消を免れることができてしまうことを意味します。 これは一種のセキュリティホールなのではないかと思い、将来このような工夫をしようとする人が増えることで交通違反の量が増え、日の道路における危険が増大してしまうことを避ける

    endo_5501
    endo_5501 2019/04/28
    やはり、責任者というか「管理」する人が都度切り替わるようなものはなんでもバグりやすいよね
  • Cello - もはや別物、C言語で高レベルプログラミングを実現するライブラリ | ソフトアンテナ

    C言語は機械語やアセンブリ言語といった低水準言語に近く、最近流行のPythonRubyといった高水準言語で利用できるさまざまな便利な機能を使用することができません。例えば文字列にも専用の型が存在せず、さまざまな落とし穴に注意しつつ慎重に使用する必要があるのです。 日紹介する「Cello」は、このなにかと不便なC言語で、高レベルプログラミングを実現するユニークなライブラリです。 Cellは以下の機能を実現するC言語用ライブラリです。 一般的なデータ構造 ポリモーフィック関数 インターフェイス/タイプクラス コンストラクタとデストラクタ オプションのガベージコレクション 例外 リフレクション 作者のDaniel Holden氏は、Ubisoft Montrealのアニメーション研究員で、C言語の可能性を追求するためのファンプロジェクトとしてCelloの開発を始めたと開発の動機を説明していま

    Cello - もはや別物、C言語で高レベルプログラミングを実現するライブラリ | ソフトアンテナ
  • リンカーによる DLL の遅延読み込み

    MSVC リンカーでは、DLL の遅延読み込みをサポートしています。 この機能により、DLL の遅延読み込みを実装するために、Windows SDK の関数 LoadLibrary と GetProcAddress を使用する必要がなくなります。 遅延読み込みを行わない場合、実行時に DLL を読み込む唯一の方法は、LoadLibrary と GetProcAddress を使用することです。オペレーティング システムでは、それが使用される実行可能ファイルまたは DLL が読み込まれるときに、DLL を読み込みます。 遅延読み込みを行う場合、DLL を暗黙的にリンクするときに、プログラムで DLL 内の関数が呼び出されるまでその DLL の読み込みを遅らせるオプションが、リンカーによって提供されます。 アプリケーションでは、/DELAYLOAD (遅延読み込みのインポート) リンカー オプ

    リンカーによる DLL の遅延読み込み
  • UTF-8のコードポイントはどうやって高速に数えるか - Qiita

    UTF-8文字列からコードポイント数を計算するアルゴリズムについて紹介します。コードポイント数カウントは、シンプルに書くのはそれほど難しくないものの、高効率な実装は意外にややこしいです。 内容は二立てです。 実践的な実装について、Ruby(CRuby)の内部実装(string.c)で使われているものを紹介します。 標準Cの範囲を超えて、SIMD命令(AVX/AVX2)を使った実装についても述べます 軽く検索する限りだと既知のアルゴリズムが見当たらなかったので、アドホックな実装をひねり出しましたが、そんなに効率は悪くなさそうです おまけで簡単な性能評価をやってみました。 なお、UTF-8文字列はバリデーション済み(不正なシーケンスでないことが分かっている)であるとします。 Rubyの内部実装だとどうやっているか まずは、それがコードポイントの先頭バイト(leading byte)かを判定す

    UTF-8のコードポイントはどうやって高速に数えるか - Qiita
  • 10xプログラマーという神話|zaq1tomo

    10xプログラマー、それは「一流のプログラマーは、普通のプログラマーの10倍の生産性を持つ」という、ソフトウェアエンジニアの世界における神話です。 「多くの人に使われるものを創れるようになりたい。」 そんな想いから、これまでGunosy、Mercari、LINEなどでエンジニアとして働いてきましたが、最近、自分の進むべき道を見つめ直す機会があり、「良いエンジニアとは何か」について考える時間がありました。 そんな中で、Redisの開発者である Salvatore Sanfilippo が書いた「The mythical 10x progrmmer」という記事に出会い、その内容が非常に参考になったため、翻訳させてほしいと人に申し出たところ、「Sure!」と快諾していただけたので、僭越ながらここで共有させていただきます。 Salvatore Sanfilippo(@antirez) - htt

    10xプログラマーという神話|zaq1tomo