タグ

ブックマーク / qiita.com (333)

  • コンパイラによるリンク時最適化(Link Time Optimization) - Qiita

    はじめに 一般に、コンパイラによる最適化は局所的であればあるほど効きやすい。例えば同じ関数内ならできる最適化が、グローバル変数がからむとできなくなったり、ファイルをまたぐとできなくなったりする。しかし、最近はリンク時最適化(Link Time Optimization, LTO)と呼ばれる、異なるオブジェクトファイル間にまたがる最適化ができるようになってきた。 ここではいくつかの例で、リンク時最適化として何ができるか紹介してみたいと思う。使うコンパイラは以下の通り。 g++ (Homebrew GCC 7.3.0_1) 7.3.0 clang++ Apple LLVM version 9.1.0 (clang-902.0.39.2) リンク時最適化の例 簡単なサンプルを示そう。 こんなコードを考える。 #include <cstdio> int func() { return 1; } i

    コンパイラによるリンク時最適化(Link Time Optimization) - Qiita
    higed
    higed 2024/05/04
  • Goプログラムがビルドされるまで (コンパイラーの仕組みを探る) - Qiita

    Goを使っているプログラマの中でコンパイラについて聞いたことある人もいるかも知れませんが、実際に何をしているか分からないかもしれません。 心配はGo無用。この記事で解説いたします。 コンパイルとは ただGoプログラムを書くだけでは実行はできません。 実行可能にするまでに手を加える必要があります。コンパイラがソースコードをコンピューターが理解できる形式に変換します。 コンパイルをするプログラムの名前がコンパイラです。 GCCやLLVMとか聞いたことありますか?これらもコンパイラです。 これらのコンパイラは長期に渡って、たくさんの貢献者によって開発されて来ました。 > go build main.go もちろん、Goでもコンパイルします。 このコマンドのように、Goプログラムをビルドするたびにコンパイルしているんです。 Goコンパイラについて Goは独自のコンパイラを開発しています。 (GCC

    Goプログラムがビルドされるまで (コンパイラーの仕組みを探る) - Qiita
    higed
    higed 2024/01/02
  • Kubernetes と cgroup v2 - Qiita

    はじめに Kubernetes は v1.25 で cgroup v2 サポートを GA しており、その後に cgroup v2 に関連する機能が追加されています。しかしまだ多くのディストリビューションで Kubernetes がデフォルトで cgroup v2 を使用しない設定のため、実際に利用している方は多くないと思います。PFN では2022年12月に Kubernetes バージョンを v1.25 にアップグレードするのと同じタイミングで cgroup v2 に切り替えています。 このエントリでは Kubernetescgroup v2 に関する機能である MemoryQoS フィーチャゲートと memory.oom.group の2つについて、機能概要と課題を共有します。なお、Kubernetes v1.28 時点での情報です。 そもそもの cgroup v2 について そ

    Kubernetes と cgroup v2 - Qiita
    higed
    higed 2023/12/07
  • 中途入社や部署異動で来た新メンバーを活躍しづらくするアンチパターン - Qiita

    1. はじめに ソフトウェア開発のチームに、新しいメンバーが入ってくることはよくあります。 以前に新卒社員がチーム入ってきた場合の育成方法を紹介しました(こちら)。 今回は、新卒社員ではなく、他の会社から中途入社か同じ会社の部署異動で来る新メンバーの話です。 (エンジニアが数百人などで規模が大きい会社の場合、部署が違うと仕事のやり方が全く変わる場合があるので、今回は中途入社と他の部署からの異動を同じように「新メンバー」として扱います) 会社や部署が変わると仕事のやり方が大きく変わるため、仕事のやり方に戸惑うことが多いと思います。 稿では、そのような「新メンバー」を活躍しづらくしてしまうアンチパターンとその対策を紹介します。 2. 中途入社や部署異動で来た新メンバーが適応することの困難さを理解する 中途入社や部署異動で来た新メンバーが組織に適応することは、新卒社員のそれとは別の難しさがあり

    中途入社や部署異動で来た新メンバーを活躍しづらくするアンチパターン - Qiita
    higed
    higed 2023/12/04
  • VSCodeでのGitの基本操作まとめ - Qiita

    はじめに 一年前に新人研修でGitを担当してTigの記事を書いたのですが,今年も同じくGitの研修を担当することになりました.新人さんたちにとってはターミナル環境はとっつきにくい人も多いようで,短い研修期間では操作自体に苦戦してしまい,Gitそのものを理解するというところに力を割けない人も少なくありませんでした. それを踏まえて今回はGUIで操作しやすい環境を検討したのですが,以下のポイントを踏まえてVSCodeを使うことに決めました. マルチプラットフォームで使える.(研修はWindows環境で行いますが,業務ではLinuxデスクトップ環境も使うので) Gitの基的な内容はVSCode上でGUI操作が可能. Gitの内容とあわせて,プログラミング用のテキストエディタの一例として,導入しやすそうなVSCodeを紹介. VSCodeを使ったGitの基的な操作を一通りまとめていきます. イ

    VSCodeでのGitの基本操作まとめ - Qiita
    higed
    higed 2023/11/13
  • Goやるなら知っておきたい「Composition over inheritance」 - Qiita

    Goを勉強している中で、「Composition over inheritance」という概念が出てきました。ちゃんと理解していなかったので、ここで改めて掘り下げます。 特に、普段 RubyRails を書いている初中級者の方は、Go を勉強する前におさらいしておくことをオススメします。なぜなら、Go では、Rubyで馴染みのある Inheritance(継承)ではなく、Composition(合成)のみが使われるからです。 「Composition over inheritance」とは 「Composition over inheritance」は、日語だと「継承より合成」と表現されます。 これは、オブジェクト思考プログラミングにおいて、親クラスやベースクラスを「継承」するよりも、「合成」によってコードを共通化・再利用する方が望ましい、という考え方です。 つまり、継承より合成の

    Goやるなら知っておきたい「Composition over inheritance」 - Qiita
    higed
    higed 2023/10/29
  • EC2が複数VPCにENIを足出しできるように!でもみんな戦々恐々としてるのはなぜ…? - Qiita

    AWSVPCに大きなアップデートが! 今週10/26、AWSにこんな機能アップデートが発表され大変話題になりました。 簡単に言うと 「EC2インスタンスから複数のVPCに対してENI(NIC)を足出しできるようになった」 という大きなアップデートでした。 みんな戦々恐々? しかし、Twitterのオンプレミス経験者たちは口を揃えて懸念を漏らしています。 「これ、クラウド初心者がオンプレからの移行で "監視セグメントVPC" みたいなものを作ってしまうんじゃなかろうか…」 今回のアプデを見て「ウッ…😅」と感じた方も、改めて何が問題なの?と聞かれると意外としっかり言語化できないかも知れません。これを機にAWSの代表的なサービスであるマネージド論理ネットワーク「VPC」の基をおさらいしてみましょう。 オンプレ時代の基を振り返る パブリッククラウド普及前のオンプレミス時代では、企業のシステ

    EC2が複数VPCにENIを足出しできるように!でもみんな戦々恐々としてるのはなぜ…? - Qiita
    higed
    higed 2023/10/29
  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

    はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    higed
    higed 2023/09/02
  • ソフトウェアはなぜバージョンアップしなければならないのか - Qiita

    はじめに 社内インフラの運用担当者にとってソフトウェアのバージョンアップは地味な割に大変な業務です。 特に社内のオンプレサーバで動いているようなソフトウェアの場合、バージョンアップに伴う諸々の調整をそのソフトウェアを利用している各部署と行う必要があります。 そんなときに「今は忙しいからバージョンアップを先送りしてほしい」「このバージョンはスキップしてもよいのでは?」なんて声が各部署から聞こえてきます。バージョンアップの価値を各部署に理解してもらうのは大変です。 この文章はそんな時になぜバージョンアップしなければならないのかを上司や各部署のマネージャに伝えるために書きます。 ソフトウェアの有効期限は2-5年 まず、第一に、ソフトウェアというものは無限に使えるわけではなく、一定の有効期限があり、それを過ぎると徐々に動かなくなってきます。俗にいう「何もしてないのに動かなくなった問題」です。 なぜ

    ソフトウェアはなぜバージョンアップしなければならないのか - Qiita
    higed
    higed 2023/07/30
  • コーディング時に知ってはおきたい CPU のキャッシュの特性 - Qiita

    Introduction 社長 > おーい、お前、そろそろ技術ブログ書いておいて。書かないと減給な。 メロスは激怒した。必ず、かの邪智暴虐の社長を除かなければならぬと決意した。メロスには何を書けば良いのかがわからぬ。メロスは、村のエンジニアである。コードを書き、コンピュータと遊んで暮して来た。けれども減給に対しては、人一倍に敏感であった。 ということがあったかどうかは定かではありませんが、私はチキンですので、戦うことはせずに減給されないために何かしらのテックブログを書きたいと思います。せめてもの社長への抵抗として、実務的にはあまり役にたたない知識を techblog として記したいと思います。 さて、私は正式にコンピューターサイエンスという学問を学んだことがありません。日頃から業務に当たる上で、コンピューターサイエンスを学んでおかないといけない痛感させられることがありました。大量データを処

    コーディング時に知ってはおきたい CPU のキャッシュの特性 - Qiita
    higed
    higed 2023/07/26
  • 【図解】Dockerの全体像を理解する -前編- - Qiita

    この記事は何か イメージやコンテナなどの基からdocker-compose、docker-machine, docker swarmなどのDocker周りの様々な概念の全体像を整理して、Dockerの仕組みを理解するための記事 前編では「コンテナ、イメージ、DockerHubでのイメージ共有」について書いて行きます。 対象読者 ・Dockerって何? ・Dockerちょっと勉強したけどDocker compose? Docker machine? Docker Swarm? 色々ありすぎて意味不明 という方 Dockerとは何か Docker社が提供する「コンテナ型仮想化技術」 を実現するプロダクト 仮想化? PCやサーバといったマシンにインストールされているOS(ホストOS)の上に、別のマシンを仮想的に立ち上げる事 簡単に言うと「パソコンの中に仮想パソコンを起動する」のが仮想化です。

    【図解】Dockerの全体像を理解する -前編- - Qiita
    higed
    higed 2023/07/04
  • 過去の自分に教えなければならないVSCodeのショートカット - Qiita

    以下はVitor Paladini ( Twitter / GitHub / dev.to ) によるVS Code shortcuts that I would teach myself if I had a time machine with limited fuelの日語訳です。 VS Code shortcuts that I would teach myself if I had a time machine with limited fuel 「やあ俺だ。黙って聞いてくれ。時間がないんだ。」 「待って待って、お前誰だ。どうやって部屋に入ってきた。あとどうして俺そっくりなんだ。」 「俺は未来のお前だ。ここまで来たのは、特別にVSCodeのショートカットを教えるためだ。さあいくぞ」 「正気か?ロト6の番号でも株式情報でもなく、わざわざVSCodeのショートカットを教えにやってきた

    過去の自分に教えなければならないVSCodeのショートカット - Qiita
    higed
    higed 2023/06/25
  • Go言語でプログラマーが進化する過程 - Qiita

    はじめに 「The Evolution of a Go Programmer」こちらの解説がおもしろかったので、コードごとに解説しようと思います。 下記のコードは階乗計算の異なる実装方法を示しています。 Junior Go programmer 初心者のGoプログラマーが書くことが多い、繰り返し文を用いた階乗計算の実装です。forループを使って階乗を計算し、その結果を返します。 package fac func Factorial(n int) int { res := 1 for i := 1; i <= n; i++ { res *= i } return res }

    Go言語でプログラマーが進化する過程 - Qiita
    higed
    higed 2023/04/22
  • Kubernetes Multi-Cluster Networkingの比較(2022年2月時点) - Qiita

    はじめに みなさん、こんにちは。 KubernetesをMulti-Clusterで利用することを考えたときに、課題の一つとしてCluster間のネットワークをどのように構成するのかが挙げられます。 稿では、主にKubernetesのMulti-Cluster Networkingの内、特にCluster間のEast-West通信の実現手法にフォーカスし、想定される要件に対して各手法の比較をまとめます。 ※尚、稿で述べてる見解は個人的見解であり、所属組織の公式見解ではありません。 Kubernetes Multi-Clusterのユースケース そもそも、KubernetesをMulti-Clusterで使用するユースケースとは何でしょうか? 私の経験上、下記な感じに分かれる所感です。 パターン ユースケース概要

    Kubernetes Multi-Cluster Networkingの比較(2022年2月時点) - Qiita
    higed
    higed 2023/04/09
  • 【すばやさ特化】Visual Studio Codeでスライド作成・発表まで行う - Qiita

    年に1~2回は社内でLTを行ってきていて、今年もプレゼンテーションを行う機会が訪れました。LTの発表は数分で終わりますが、時間がかかるのは準備の方です。LTの準備には、まず発表テーマと内容を決めて、構成を検討します。資料を探したり、読み込んだり、自分の考え意見などを整理します。そして、PowerPointで資料を作成します。 地味の時間がかかるのが、「資料作成」です。何回かLTをやってきて、今後もLTをする機会がありそうなので、今回は、準備が時短するにはどうすればいいのか検討しました。 検討結果の1つが「PowerPoint」ではなく、「Visual Studio Code」でスライドを作成し、そのまま発表してしまうことです。デザインを細かく指定するのは、PowerPointの方に分がありますが、資料作成の手軽さ・早さでは「Visual Studio Code」に分がありそうです。 今回の

    【すばやさ特化】Visual Studio Codeでスライド作成・発表まで行う - Qiita
    higed
    higed 2023/04/07
  • RSAの終わりの始まり - 暗号移行再び - Qiita

    前振り 全国の暗号を使うエンジニアの皆さんこんにちは。今日は暗号移行とRSA暗号の話をしたいと思います。まず暗号を利用している皆さんであればCRYPTRECの「電子政府推奨暗号リスト」のことはご存じですよね!(言い切るw) CRYPTRECから2022年7月(昨年夏)に暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準(PDF直リンク)が公開されました。この中では暗号のセキュリティ強度で各種暗号と鍵長が整理されています。セキュリティ強度はビットセキュリティと呼ばれるビットサイズ(共通鍵暗号の場合のビット長)で区分されます。暗号アルゴリズムが違ってもセキュリティ強度で比較ができるということですね。例えば現在一般的に良く使われているセキュリティ強度は112ビットセキュリティが多く、これにはデジタル署名であればRSA暗号の2048ビットやECDSAのP-224等が含まれます。今日は公開鍵暗

    RSAの終わりの始まり - 暗号移行再び - Qiita
    higed
    higed 2023/01/18
  • 名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita

    はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメのとして名前が挙がる名著です。しかしこのは古いです。POSIX でシェルが標準化される以前ので、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れたでも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古いはこれだけではありません。オライリーから出版されているも古いばかりです。いつ頃に(原書が)書かれたなのかを確認した方が良いでしょう。 ということでレビューというていで、古くなってしまった内容の訂正を行いたいと思います。新しく「入門UNIXシェルプログラミング

    名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita
    higed
    higed 2022/12/30
  • 技術顧問との1on1で見積もりには3種類あることを教えてもらった - Qiita

    はじめに 記事はモチベーションクラウドシリーズ Advent Calendar 2022の17日目になります。 自分は外部の技術顧問の方に月に一回のペースで1on1する機会をもらっています。 今回はその中で話したことを共有します。 ※公開するにあたって分かりやすさを重視して脚色しています。 見積もりに対する課題感 ぼく「約束は開発を遅らせるという記事を最近読んだのですが、その通りだと思ったのですよね。」 さて、チームの外に対して約束するために「この機能1ヶ月で出せるよね?」とプロダクトの人やマネージャーに聞かれたら。これは返事に悩む。「ラフで構わないから」って言われて伝えたら、それがコミットメントになってしまったのを過去に何度も見たことがある 約束してはいけないと言いたいわけではない。約束が必要な場合がほとんどだと思う。ただ、その約束は開発を遅くするんだなぁ。だから、約束せずに気楽に開発

    技術顧問との1on1で見積もりには3種類あることを教えてもらった - Qiita
    higed
    higed 2022/12/24
  • 成果を出すプログラマーが習得している「コードを書かない技術」 - Qiita

    はじめに 私がプログラマーとして働き始めて1年半がたちました。幸いなことに環境に恵まれ、私の身の回りには成果を出し続ける優秀なプログラマーがたくさんいます。 1年半彼らの仕事を観察して気づいたことは、成果を出すプログラマーは共通して 「コードを書かない努力をしている」 ということでした。 この記事では彼らが業務で行なっている、 「コードを書かないための思考、習慣」 についてまとめていきたいと思います。 前提 多くの人は「プログラマーはコードを書くことが仕事」だと考えています。この考えに基づくと、プログラマーが「コードを書かない努力をする」ということが、ひどくおかしなことに思えてしまうかもしれません。 そこでまず前提として3つの誤解を解くところから始めましょう。 [誤解1] プログラマー仕事は「コードを書くこと」である 私たちプログラマーの多くは会社から給料をもらいながらコードを書いていま

    成果を出すプログラマーが習得している「コードを書かない技術」 - Qiita
    higed
    higed 2022/12/01
  • 若手エンジニア育成において大切だと思うこと - Qiita

    先日以下のイベントにお声がけいただき、LT登壇をさせていただきました。 今回はエンジニアリングマネジメントという括りでもあり、我々ARIで行っている若手技術者育成の取組みをご紹介させていただきました。 登壇資料はこちらで公開しておりますが、サマリーや補足用にこちらの記事を用意しました。 我々が目指す理想の技術者像 ずばり「事業をエンジニアリングできる技術者」です。 ベストセラーとなった「事業をエンジニアリングする技術者たち」で紹介されている「フルサイクルエンジニア」の概念がまさに理想像です。 引用:https://techblog.cartaholdings.co.jp/entry/2019/02/04/171325 事業ドメインに関心を持ち、社会や顧客の課題を解決できること。 技術をビジネス価値を変換できる力の高い技術者を理想とし、そうした技術者を多く輩出できる組織を目指しています。 ち

    若手エンジニア育成において大切だと思うこと - Qiita
    higed
    higed 2022/11/29