並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 298件

新着順 人気順

gcc オプションの検索結果1 - 40 件 / 298件

  • Linuxカーネルで学ぶC言語のマクロ - 覚書

    はじめに 本記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

      Linuxカーネルで学ぶC言語のマクロ - 覚書
    • Ubuntu 22.04 LTS サーバ構築手順書

      0 issue "letsencrypt.org" 0 issuewild "letsencrypt.org" 0 iodef "mailto:yourmail@example.jp" §OS再インストール さくらVPSのコントロールパネルから、OSを再インストールするサーバを選ぶ。 www99999ui.vs.sakura.ne.jp §OSのインストール操作 Ubuntu 22.04 LTS を選ぶ。 OSインストール時のパケットフィルタ(ポート制限)を無効にして、ファイアウォールは手動で設定することにする。 初期ユーザのパスワードに使える文字が制限されているので、ここでは簡単なパスワードにしておき、後ですぐに複雑なパスワードに変更する。 公開鍵認証できるように公開鍵を登録しておく。 §秘密鍵と公開鍵の作成 クライアントマシン側で生成した公開鍵を ~/.ssh/authorized_k

        Ubuntu 22.04 LTS サーバ構築手順書
      • CentOS 8 と CentOS 7 の違い、yum やミドルウェアにも要注意 - サーバー構築と設定 ~初心者にも分かりやすく解説~

        2019年9月24日に CentOS 8 がリリースされます。 RedHat Enterprise Linux 8 の情報を元に、CentOS 8 で想定される変更点をまとめました。 PHP や MySQL といったミドルウェアのバージョン変更や、 サービスの追加・削除など数多くの変更が入ることになります。 RHEL 8・CentOS 8 に PHP 7.3 をインストールする(remi 使用) 2020-07-07 CentOS 8 のリリースは2019年9月24日 CentOS 8 はリリース前の状態で、現在コミュニティによる開発が行われています。 2019年7月時点では、ベースとなる「RHEL 8」のパッチ開発と検証作業が進行中です。 前回バージョンアップ時は、「RHEL 7」の27日後に「CentOS 7」がリリースされましたが、 今回の進捗を踏まえると 2019年8月~9月 頃の

          CentOS 8 と CentOS 7 の違い、yum やミドルウェアにも要注意 - サーバー構築と設定 ~初心者にも分かりやすく解説~
        • Go コンパイラのコードを読んでみよう - kosui

          はじめに 本記事は、 DeNA Advent Calendar 2020 の 11 日目の記事です。 突然ですが、「コンパイラのコードを読んでみよう」なんて言われても、「どうせ巨大で難解で複雑なロジックを理解しないと読めないんでしょ?」と思いませんか。 コンパイラの構造を理解しようとしても聞いたことのないような専門用語がずらりと並び、コードを読もうとしたらそれらをすべて完全に理解してないと一行も理解できないんじゃないか...。Go のコンパイラ gc のソースコードを読むまでは、私もそう思っていました。 しかし、あまりにも暇な休日のある日、思い立って gc のコードを読んでみました。すると、「コンパイル」という難解な響きの処理も、一つひとつを小さなタスクに分解することで、少しずつ読み進めることができると分かったのです! 何よりも感動したことは、 gc そのものが全て Go で書かれていて、

            Go コンパイラのコードを読んでみよう - kosui
          • 浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記

            お近づきになりたい人向けシリーズです。 いろいろなトピックを詰め込みましたが、「これら全部を知らないといけない」のようなつもりではなく、いろいろなことを知るきっかけになったらいいなという気持ちなので、あまり身構えずにちょっとずつ読んでもらえたらうれしい気がします。 まえがき 予備知識 規格 用語 精度という語について 記法 表現について 有限値の表現について エンコードについて 丸めについて よくある誤差や勘違いの例 0.1 = 1 / 10? 0.1 + 0.2 = 0.3? 整数の誤差 Rump’s Example 基本的な誤差評価 用語に関して 実数の丸め 有理数の丸め 基本演算の丸め 差について 複数回の演算 補題たち 桁落ちについて Re: Rump’s example 融合積和 数学関数に関する式の計算 誤差の削減に関して 総和計算 数学関数の精度について 比較演算について 雑

              浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記
            • リンカ

              ついに、リンカの説明をするときが来た。 ここに至るまでに、何度「リンカのところで説明する」と書いただろうか? ここまで読んできた人ならば、 リンカというものが、なにやら色々やっているんだな、というのはわかってきたのではないかと思う。 筆者が常々思っていることのひとつに、「C言語に関する書籍は、リンカの説明をおざなりにしすぎだ」というのがある。 多くのC言語の書籍は、 コンパイラがソースコードをアセンブリコードに変換します アセンブラがアセンブリコードを機械語に変換します リンカが機械語をリンクして実行ファイルが作られます と、いう解説がなされがちである。この説明を見たら、多くの人が、「え、リンクってなんですか?」と、思うに違いない。 アセンブラには、「人間が読めるニーモニックを、機械が読める機械語に変換する」みたいな、最低限の説明が付くものの、 リンカの説明は「リンクをします」のひとことだ

              • マイクロソフト、「Teams」に対する一連の機能強化を発表

                印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます Microsoftは米国時間5月31日、「Microsoft Teams」に対する一連の機能強化を発表した。これには、動画品質の向上や、チャット時における返信候補表示機能の多言語化、チームのタスク管理を支援する新たな「Updates」アプリが含まれている。 また、Teamsアプリがついに「Microsoft Store」に登場した。このため、個人向けや職場向け、学校向けのアカウントを有する「Windows 10」ユーザーは同ストアからのインストールが可能になる。 MicrosoftはTeamsに関する今回のアップデートで、動画の品質を向上させるために、画像をスムーズにする効果を有した「ソフトフォーカス」フィルターと、光量が不足している場

                  マイクロソフト、「Teams」に対する一連の機能強化を発表
                • シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ

                  こんにちは! エンジニアリンググループ マルチデバイスチーム 新卒1年目の小林です。 エムスリーでは、2週間に1度、Tech Talkという社内LT会(現在はリモートで)が開催されています。これは、とある回の発表テーマリストです。 Tech Talkのとある回の発表テーマリスト このように、最近エムスリーでは文字列が流行っている(?)ようなので、その勢いに乗って私も文字列照合アルゴリズムについて書きたいと思います!(業務とは全然関係ない話です) Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさん出ていると思うので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明し、速度比較を行った結果についてご紹介します。 文字列照合アルゴリズムとは テキストとパターンという文字列が与えられたときに、中に出現す

                    シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ
                  • 【2020年】CTF Web問題の攻撃手法まとめ - こんとろーるしーこんとろーるぶい

                    はじめに 対象イベント 読み方、使い方 Remote Code Execution(RCE) 親ディレクトリ指定によるopen_basedirのバイパス PHP-FPMのTCPソケット接続によるopen_basedirとdisable_functionsのバイパス JavaのRuntime.execでシェルを実行 Cross-Site Scripting(XSS) nginx環境でHTTPステータスコードが操作できる場合にCSPヘッダーを無効化 GoogleのClosureLibraryサニタイザーのXSS脆弱性 WebのProxy機能を介したService Workerの登録 括弧を使わないXSS /記号を使用せずに遷移先URLを指定 SOME(Same Origin Method Execution)を利用してdocument.writeを順次実行 SQL Injection MySQ

                      【2020年】CTF Web問題の攻撃手法まとめ - こんとろーるしーこんとろーるぶい
                    • 【競プロ】新人SEがAtCoderを始めて水色になった【色変記事】 - Qiita

                      AtCoderで水色になりました。いわゆる色変記事です。 本記事では以下の4点について書きます。 競プロをしていて良かったこと・できるようになったこと 勉強したこと・改善案 レート推移や目標ラインの話 環境やマクロの紹介 最初に自己紹介すると、自分は情報系出身のSEで、現在は2年目です。 今年の頭に競プロをはじめ、先日水色になりました。 「プログラミング未経験から~」「50歳を超えて~」みたいな少数派ではないですし、「たったN回で達成!」「M年の苦闘の末に」みたいなドラマもありません。 普通に勉強しているエンジニアが競プロを半年間そこそこ頑張ったみたいな記事です。 バッググラウンドや参加回数については③で詳しく書きます。 なお、競技プログラミングについてザックリ知っている前提で書きます。 「競プロってなに?」「水色ってどのあたりなの?」という場合は が良くまとまっています。 ① 競プロをし

                        【競プロ】新人SEがAtCoderを始めて水色になった【色変記事】 - Qiita
                      • Intel CPUとAMD CPUの混在による問題に直面した話 | 開発ブログ | Elastic Infra

                        チーフエンジニアの加辺です。 今日は珍しいトラブルに出会ったので紹介します。 起こった問題 ある環境ではEC2によりサーバを運用しており、アプリケーションをデプロイサーバでビルドし、その成果物をアプリケーションサーバへコピーすることでデプロイとしていました。 ここで新規サーバを作成していたところ、一部のアプリケーションサーバで見慣れないエラーが発生し、アプリケーションが起動しないという事象が確認されました。調べたところ、デプロイサーバはt3、アプリケーションサーバはt3aファミリーが利用されていることがわかり、アプリケーションサーバをt3ファミリーへ変更したところ、問題が発生しなくなることが分かりました。 さて、これはどのような機序によるものでしょうか。 調査 記事タイトルで答えをほとんど書いてしまっていますし、t3, t3aを知っていれば明らかですが、これはIntelとAMDの違いです。

                          Intel CPUとAMD CPUの混在による問題に直面した話 | 開発ブログ | Elastic Infra
                        • C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium

                          発端はuchan_nos氏によるこのツイートでした。 C言語で、本当にメモリの0番地にデータを書きたいときはどうすりゃええの?— うー@技術書典8 Day1う31 BitNOS (@uchan_nos) 2020年2月12日 それに対する私のリプライ: uint8_t *p = 1; p--; *p = v;— hikalium (@hikalium) 2020年2月12日 私はこれで話が終わると思っていたのだが、どうやらそうではなかったらしく、色々な視点からの意見が加わりながら、話は混沌を極めたのでした…。 ということで、ここに私のこのツイートに対しての見解とか、わかったことをまとめておこうと思います。 私のリプライの背景について uchanさんが求める「0番地にデータを書きたい」という課題設定を、私はこのように解釈しました。 C言語において、整数0をポインタに変換すると、それはNULL

                            C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium
                          • 追悼 Bram Moolenaar ~Vimへの情熱と貢献を振り返る | gihyo.jp

                            Bram Moolenaar the Creator of Vim 2023年8月5日、悲しい知らせが入ってきました。長年、多くのエンジニアに愛され今もなお使われ続けているテキストエディタVimの作者Bram Moolenaar氏が同月3日に亡くなったという知らせです。ショックでしばらく信じることができませんでした。 筆者は長年Vimを使い、Vimに多くのコントリビュートを行ったり、その都度Bram氏と対話したり議論したりしてきました。そのBram氏が突然、この世界からいなくなってしまったことをしばらく受け入れられなかったからです。 本記事では追悼の意味を込め、Bram氏がどのようにVimの開発を始め、Vimがどのように広まっていったのか、また長年Vimを追い続けてきた筆者から見たBram氏の人物像を筆者の思いを交えて解説していきます。 Vimの歴史 Bram氏についてお話しする前に、まず

                              追悼 Bram Moolenaar ~Vimへの情熱と貢献を振り返る | gihyo.jp
                            • RISC-V OSを作ろう (1) ~ブート処理 - VA Linux エンジニアブログ

                              はじめに 環境の用意 ブートプログラムを作る 動かしてみる コンパイル QEMU上で起動 GDBで制御 最後に おまけ 執筆者 : 高橋 浩和 はじめに RISC-VはMIPSアーキテクチャの流れを汲む正統派?のRISC CPUです。命令セットはシンプルですが、既存のメジャーなCPUのアーキテクチャと大きな違いがあるわけではありません。 Linux上で利用できるRISC-Vツール群も揃ってきたので、それらを使ってRISC-V用の小さなOSを実装してみようと思います。 最初は欲張らずに単純な実装を目指すことにします。 シングルコアのみサポート 64bitモードを使用 マルチタスキングを実現 タイムシェアリングスケジューリングを実装 割り込みネストは無し 保護機能は使わない 既存のBIOSやbootプログラムは利用せず、リセットエントリから全て作成する qemuの仮想マシン上で動作させる。ター

                                RISC-V OSを作ろう (1) ~ブート処理 - VA Linux エンジニアブログ
                              • vmlinuxのヒミツ - VA Linux エンジニアブログ

                                1. vmlinuzの怪 2. vmlinuxの入手 3. ELFファイル 4. ELFセクション 5. セクションの意味 6. Linuxのセクションとldscript 7. .cpuidle.textセクション 8. おわりに 執筆者 : 箕浦 真 1. vmlinuzの怪 Linux (カーネル) のファイル名といえば、/boot/vmlinuz-<version>だ。なんでlinux-<version>とかじゃないのだろうか。 vmの方は、これはおそらくBSD Unixのカーネルvmunixに倣ったものだろう。ベル研究所のResearch Unixを、VAXのハードウェアを生かして仮想記憶 (Virtual Memory) 機能を大幅に強化したため、vmunixとした。 zの方は、これは圧縮されていることを表す。なぜZで圧縮なのかはよくわからないが、圧縮の意味なのだ *1。 現在一

                                  vmlinuxのヒミツ - VA Linux エンジニアブログ
                                • Go 製 UI ツールキット Fyne で始めるクロスプラットフォーム GUI アプリケーション開発 · Yutaka 🍊 Kato

                                  こうやって分類すると、fyne というのはいったい何者なのだと思いませんか? そう思ったわたしは実際に試用してみて気に入り、社内で使う簡単な GUI アプリの開発に採用、ほんの一瞬で目的通りのアプリを実際に作れてしまいました。 作ったアプリはのちほど紹介しますが、まずは基本的な使い方と多くの人が遭遇するであろうハマりポイントをいくつか紹介したいと思います。 ただし、現状 Go の GUI 領域はまだまだ発展途上です。Fyne においてもデータバインディングやアニメーション機能が未提供だったりと GUI ツールキットとしては大穴があいているのも事実。限界を承知の上で、過度に期待せずに読んでいただけたらと思います。 はじめかた 既に Go 言語の開発環境は整っている前提で始めたいと思います。整っていない方は Getting Started してください。 では早速コードから。”Hello, w

                                    Go 製 UI ツールキット Fyne で始めるクロスプラットフォーム GUI アプリケーション開発 · Yutaka 🍊 Kato
                                  • データベースライブラリTkrzwの初版リリース - 豪鬼メモ

                                    データベースライブラリであるTkrzwの初版をリリースした。Kyoto Cabinetの正式な後継製品である。本家のサイトはここである。設計目標の通り、高速かつ堅牢で多目的に使える実装になったと思っている。私の下手な英文を読ませるのも忍びないので、ここに概要を書いておこう。 ダウンロードとインストール このディレクトリにソースファイルのパッケージが置いてあるので、ダウンロードする。あとは典型的なインストール手順を踏襲すればよい。 $ tar zxvf tkrzw-0.9.1.tar.gz $ cd tkrzw-0.9.1 $ ./configure $ make $ make check $ sudo make install自分の環境でもテストをしたいという人は以下のコマンドを実行してもよいし、しなくてもよい。テストケースはGoogle Testを使って書かれているので、予めそれをインス

                                      データベースライブラリTkrzwの初版リリース - 豪鬼メモ
                                    • ARM に存在する JavaScript 専用命令「FJCVTZS」を追う(ついでに V8 をビルドする)

                                      前回の記事では、JavaScript の実行エンジン V8 の JIT 出力コードを読んでみました。記事は M1 Mac 上で動かした結果でしたので、ARM アーキテクチャのアセンブラを読むことになりました。 さてそんな ARM アーキテクチャですが、最近の ARM には FJCVTZS という JavaScript 専用の機械語命令があるのをご存知でしょうか?CPU に、特定の言語(それもコンパイラを持たない JavaScript)専用の命令があると知ったとき、私は大いに驚きました(過去にも Jazelle みたいなものはありましたが) 今回は、この FJCVTZS 命令について、実際にどれだけ効果があるのか、V8 をビルドしながら調べてみましょう。 FJCVTZS 命令とは? FJCVTZS 命令は、Arm v8.3 から導入された JSCVT 命令の一つで、JavaScript の言

                                      • 開発者から見た V 言語とその(誇大)広告について

                                        V 言語について 一時期話題になった V 言語ですが、みなさまは覚えているでしょうか。 Go にインスパイアされたシンプルな構文、NoGC かつ Rust のような難しさもないメモリ管理。小さいバイナリサイズと高速なコンパイル、ホットリロードなど、様々な目玉機能を謳って登場した言語でした。 発表するが公開しない。バイナリは公開するがオープンソースにはしないなど、期待感をあおる情報の出し方をしたのもあって、当初こそそれなりに話題になりましたが、今となっては誰も話題にしなくなった感は否めません。 ところで、会社が消滅して無職になった私は数か月前から V 言語の開発に参加しており、執筆時点では全体で 23番目、直近1か月で 7番目の Contributor です。 私が知る限り、アクティブに活動している日本人の開発者はほとんどいません。 そこで、コミュニティにも慣れ V 言語のことが少しづつわか

                                          開発者から見た V 言語とその(誇大)広告について
                                        • GitHubでC++プロジェクトを開発する際にやっておきたい設定 - Qiita

                                          この記事について 簡単な電卓アプリ開発を例に、以下を行います GitHub上でのIssueテンプレート、マイルストーン、Projects(カンバンボード)の設定 GitHub Flowを例にした簡単な開発の流れの説明 CMakeを用いた、C++プロジェクトの用意 GoogleTestを用いたUnit Testの導入 GitHub Actionsを用いた、CI/CDの導入 クロスプラットフォーム (Windows, Linux, MacOS, Linux(ARM)) GitHub Actionsを用いた、コードの静的解析 この記事では、開発の方法論はおまけとして、それを支えるためのツールの設定方法に重点を置きます 1人でやる個人開発~数名規模での開発は本記事の内容でカバーできると思います。もっと複雑になると別の仕組みが必要になってきそうです 本記事の設定を全てやる必要はなく、必要そうな項目を

                                            GitHubでC++プロジェクトを開発する際にやっておきたい設定 - Qiita
                                          • Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社

                                            概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rewriting the Ruby parser | Rails at Scale 原文公開日: 2023/06/12 原著者: Kevin Newton サイト: Rails at Scale | The Ruby and Rails Infrastructure team at Shopify exists to help ensure that Ruby and Rails are 100-year tools that will continue to merit being our toolchain of choice. 日本語タイトルは内容に即したものにしました。 なお、本記事では「パーサー」(parser: 構文解析器)はカタカナで、lexer(字句解析器)は英ママで表記します。 参考: 構文解析 - Wikip

                                              Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社
                                            • Amazon ECS タスクのイベントとログを時系列で出す tracer を作った - KAYAC engineers' blog

                                              SREチームの藤原です。KAYAC Advent Calendar 2021 4日目の記事です。 早速ですが Amazon ECS をお使いの皆様、何か新しく起動したい ECS タスクがあって、タスク定義を書き起こして(もしくはマネージメントコンソールで定義して)、一発で起動に成功できますか?? ……なかなかこれが難しいんですよね。 ということで、とある ECS タスクに関連するイベントとログを全部時系列で出力するツールを書きました。どうぞご利用ください。 github.com 以下はそこに至るまでの背景です。 ECS タスクが立たない。なぜだ! 自分は Amazon ECS を業務で使い始めて早4年になります。新規プロダクトはもちろん、かつて EC2 で動いていたワークロードもほぼ全て ECS に移行しました。 ECS デプロイツール ecspresso の開発者でもあるため、日々機能ア

                                                Amazon ECS タスクのイベントとログを時系列で出す tracer を作った - KAYAC engineers' blog
                                              • 富士通C++コンパイラの最適化機能の改善について

                                                watanabe-chiba-report.md 2.4 富士通C++コンパイラの最適化機能の改善について 東京大学物性研究所 物質設計評価施設 渡辺宙志 富士通株式会社 次世代テクニカルコンピューティング開発本部 千葉修一 ※ 本稿はメニーコア時代のアプリ性能検討WG 成果報告書にて公開された内容を整形したものです。 2.4.1 はじめに HPC分野においては、FortranないしC/C++言語が広く使われている。Fortran、C言語、C++言語のいずれも活発に仕様が改定され、現在も発展し続けている言語ではあるが、数値計算向けの「普段使いの言語」としては、おそらくPythonやJuliaなどの方が広く使われていると思われる。特にPythonは、昨今の機械学習ブームの牽引役として広く使われているようである。今後、PythonやJuliaといった言語によるスパコン利用も増えていくと思われる

                                                  富士通C++コンパイラの最適化機能の改善について
                                                • SQLiteを分散データベースに変えるmvSQLite | DevelopersIO

                                                  Introduction 先日Githubに公開されたmvSQLiteですが、 「SQLite互換のスケーラブルなデータベース」とのことで話題になってます。 mvSQLiteの特徴は、SQLiteのストレージレイヤーをFoundationDBに分離しているところです。 これにより、DynamoDBのように際限のないスケーラビリティ、point-in-timeでの読み取り、 そしてRDBの厳密な一貫性を提供します。 作成者曰く、mvSQLiteの目標は 「SQLiteを分散データベースに変えること」 とのことです。 FoundationDBとは FoundationDBは大量の構造化データを処理するために設計された分散データベースです。 2015年にAppleが買収したことでもニュースになりました。 データをソート済みのKeyValueデータとして保管し、 すべての操作にACIDトランザクシ

                                                    SQLiteを分散データベースに変えるmvSQLite | DevelopersIO
                                                  • 大容量ファイルのSCP転送を高速にする方法 (ver.2019) - 元RX-7乗りの適当な日々

                                                    9年ほど前にこういうエントリを書いたのですが、まだそれなりに見られているようなので、最近はどうなのかなーと、再検証・再計測してみたエントリーです。 ↑の過去エントリにも記載しているのですが、SSH/SCP では暗号化方式(強度)によってファイル転送のスループットが変わります。 もちろん、オープンなネットワークでやるにはセキュリティがー、とか、インターナルでやるなら、そもそも netcat (nc) でいいやんー、とか、そもそも大量にファイル数あるなら、事前に固めてしまえー、とか色々あると思うのですが、本エントリではあくまで暗号化方式 の違いでスループットがどう変化するのか、それはどのくらいスループットが出るのか、を確認したログとなります。 ベンチマークで利用した環境 Google Compute Engine (GCE) の インスタンス (n1-highcpu-4) を2台準備しました

                                                      大容量ファイルのSCP転送を高速にする方法 (ver.2019) - 元RX-7乗りの適当な日々
                                                    • 20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita

                                                      はじめに ちょっと前に20年物のC言語で作られたシステムのテストを色々改善しようとしてみたので、この時に得たちょっとした知見を書いていこうと思います。 ※注意 記事を書くために自分のパソコンで当時を思い出しながら環境を作っているので、実際、実務でやった環境やバージョンとは違います。 また、この記事にはいくつかコードがでてきますが、すべて記事を書くために考えた疑似的な例にすぎません。 単体テスト用のテストコードの作成 20年も動いているシステムだと、もはや誰にも意味はわからんが、既存の挙動を変えてはいけない箇所がいくつもあります。 そういう箇所に手を入れざるを得ないときに、有効な方法として以下のような方法があります。 まず、既存のコードに対するテストコードを記載します。そして全て合格することを確認してから、少しづつ機能を拡張していきます。 これにより、新規機能追加が既存の機能を壊していないこ

                                                        20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita
                                                      • Apple M1のサポートする命令など - Qiita

                                                        1. Intel 64 CPU互換レイヤー「Rosetta 2」でサポートする命令等 Intelが出している MacCPUID と言うユーティリティはIntel Macに採用されているCPUの機能などを調べるユーティリティであるが、Rosetta環境で使用すると、ソフト側から見た仮想Intel64ハードウェアの機能を調べることができる。 https://software.intel.com/content/www/us/en/develop/download/download-maccpuid.html これが実行したところであるが、ベンダーストリングこそ "VirtualApple" となっているものの、CPUはWestmere世代のプロセッサ互換として認識されている。 また、CPUの機能はWestmere世代の第1世代(32nm版)Core i*シリーズと同等である。 AESやPCLM

                                                          Apple M1のサポートする命令など - Qiita
                                                        • Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog

                                                          Development Division/Repro Team/Feature 1 Unit の Watsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり 以前、同僚が Ruby on Rails で JSON を返す REST API を作成した際、JSON のエンコード部分のパフォーマンス計測をしていました。JSON のエンコード方法は JSON.generate、ActiveSupport::JSON.encode、Oj gem を利用する方法など色々ありますが、私としては Oj gemの ほうがパフォーマンス的にいいだろうからそちらを利用したほうが良いのではと思っておりました。 計測結果を拝見したら確

                                                            Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog
                                                          • HERP における Nix 活用

                                                            HERP における開発では Nix が広く活用されている.Nix は非常に便利な代物なのだが,ドキュメントの貧弱さ,急峻な学習曲線,企業における採用事例の乏しさなどが相まって,広く普及しているとは言い難く,ましてや国内企業での採用事例を耳にする機会はほとんどない.しかし,Nix の利便性は,複数人での開発においてこそ,その本領が発揮されると考えている.この記事は,HERP における活用事例の紹介を通じて,Nix の利便性ならびに企業での活用可能性について紹介することを目的としている. Nix とは# Nix は "the purely functional package manager" と銘打たれたパケッジマネジャーである.GNU Linux および macOS 上で利用できる. ビルド# Nix は the purely functional "package manager" なの

                                                              HERP における Nix 活用
                                                            • Linux perfで快適に計測するためのtips - Qiita

                                                              これがあるのとないのとでは分かりやすさが全然違うので、perfを使う時は常に入れておくようにすると便利です。 2. --call-graph は fp 以外で使う 上記の問題を解決すると perf record + perf report では何が呼ばれているかおおむね分かることが多いのですが、call graphを出すために perf record -g をすると [unknown] というのが出てきてしまうことがあります。(以降の計測結果はRack::Utils::HeaderHashを使ったRuby VMのベンチをRubyのmasterで走らせたものです) Samples: 38K of event 'cycles:ppp', Event count (approx.): 271180000 Children Self Command Shared Object Symbol - 1

                                                                Linux perfで快適に計測するためのtips - Qiita
                                                              • 「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”

                                                                Blue Whale Systems株式会社の植山類氏は、「LLVM lld」「mold」が解決したプログラムのビルドの問題を例に、“大きな問題”を解決することについて話しました。全3回。 1個の本質的な問題を解いてしまうほうが細かいことを考えるよりも簡単 植山類氏:では始めます。本日、機会をいただいて講演をすることになった植山と申します。この講演の内容は「大きな問題のほうが小さな問題より解くのは簡単だ」というタイトルです。 どういう趣旨かというと、常に簡単だというわけではないのですが、いろいろな場面で、1個の本質的な問題をドッカンと解いてしまうほうが、いろいろな細かいことを考えるよりも簡単なことが多いという話です。 そういうソリューションが往々にして見逃されがちということがけっこうあって、そういうことにどうやって挑戦していくのかという気持ちの話を、僕がそういう大きな問題を解決した経験を踏

                                                                  「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”
                                                                • unameコマンドから始めるデバッグ&カーネルハック入門 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

                                                                  この記事はLinux Advent Calendar 2019の1日目の記事です。 はじめに 環境 おことわり uname(1) uname(1)が出力する内容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch おまけ RHEL 8.1 CentOS 8 まとめ はじめに 本記事ではLinuxサーバのホスト名、Linuxカーネルのバージョン、cpuアーキテクチャなどのシステム情報を表示するuname(1)を利用してLinux環境でのデバッグとカーネルハックについて説明していきます。本記事ではコマンドやツールの使い方の説明ではなくて、それらを使ってどのようにデバッグするのかというところを説明します。 環境 ディストリビューションにはFedora 31(x86_64)を利用します。動作環境はQEMUやlibvirt、Oracle

                                                                    unameコマンドから始めるデバッグ&カーネルハック入門 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
                                                                  • Ansible の SSH の通信をデバッグする - 赤帽エンジニアブログ

                                                                    レッドハットの杉村です。Ansible のテクニカルサポートをしています。 今回は以前のお問い合わせいただいた事例から、SSH (Secure Shell Protocol) について一つ紹介しようと思います。Ansible は Linux サーバを制御対象とするときは SSH で接続して処理を実行しますので、SSH の通信についてのトラブルは問題に直結します。 RHEL 8.6 + Ansible Core 2.13 で確認しています。 Ansible の基本的な動作原理 まずは Ansible はどうやって動いているのかというのを軽く振り返ってみます。 Ansible が動作するサーバをコントロールノード、制御対象をマネージドノードと呼びます。流れを大まかに説明しますと、この図のようになります。 ① YAMLで書かれたプレイブックからタスクごとに小さなプログラムを生成する ② ①で生成

                                                                      Ansible の SSH の通信をデバッグする - 赤帽エンジニアブログ
                                                                    • PostgreSQL Isolation について

                                                                      トランザクションのACID特性のうち、Isolation(隔離性)について整理する。 検証環境検証には、PostgreSQL 10.5を独自ビルドしたものを利用する。 (gdbでデバッグできるように最適化オプションを無効にした) 参考 PostgreSQL 9.4.4をソースコードからインストールする # select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 10.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row) #

                                                                        PostgreSQL Isolation について
                                                                      • RHEL/CentOSから標準より新しいパッケージをインストールするためのレポジトリ4選(AppStream /RHECL/EPEL/IUS) | DevelopersIO

                                                                        RHEL/CentOSから標準より新しいパッケージをインストールするためのレポジトリ4選(AppStream /RHECL/EPEL/IUS) RedHatは同じバージョンのパッケージが10年間保証されるため、安定運用に向いています。ただし、システムによっては、より新しいバージョンを利用したいことがあります。 そのようなパッケージを提供するレポジトリとして、Red Hat Software Collections(RHSCL)/EPEL/IUSを紹介します。 Red Hat Enterprise Linux (以下RHEL)/CentOS のパッケージは基本的に10年メンテナンスされるため、枯れて安定している一方で、より新しいバージョン・ソフトウェアを利用したいために、レポジトリを追加することがあります。 そのような目的に使えるレポジトリとして、以下の4つを紹介します。 AppStream

                                                                          RHEL/CentOSから標準より新しいパッケージをインストールするためのレポジトリ4選(AppStream /RHECL/EPEL/IUS) | DevelopersIO
                                                                        • GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER

                                                                          今回は、表題の通り x86/x86-64 の GNU/Linux でシステムコールをアセンブラから呼んでみる。 システムコールは、OS (ディストリビューション) のコアとなるカーネルがユーザ空間のプログラムに向けて提供しているインターフェースのこと。 なお、アセンブラの実装に関しては以下の二つを試した。 NASM (Netwide Assembler) GAS (GNU Assembler) アセンブラには INTEL 記法と AT&T 記法という二つのシンタックスがある。 NASM はデフォルトで INTEL 記法を、GAS はデフォルトで AT&T 記法を使うことになる。 使った環境は次の通り。 $ uname -sr Linux 4.15.0-65-generic $ nasm -v NASM version 2.13.02 $ as -v GNU assembler versio

                                                                            GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER
                                                                          • Node.js Docker baseイメージには alpine < distroless < ubuntu+slim 構成がよさそう

                                                                            Node.js Docker baseイメージには alpine < distroless < ubuntu+slim 構成がよさそう はじめに この記事は、DockerCon 2022 で発表された Bret Fisher の "Node.js Rocks in Docker, DockerCon 2022 Edition" を参考にしています。 base イメージの選択肢に関する話は、動画の前半一部分だけですが、他にも Node.js で Dockerfile を書く時のベストプラクティスが数多くまとまっているので、是非チェックしてみてください。 node:alpine イメージを使わない base イメージサイズを小さく保ちたい、という点で気軽に利用される事が多い alpine イメージですが、Official の README には下記の記載があります。 This variant

                                                                              Node.js Docker baseイメージには alpine < distroless < ubuntu+slim 構成がよさそう
                                                                            • Amazon Linux 2023がGAされました | DevelopersIO

                                                                              抜粋 : Release cadence - Amazon Linux 2023 メジャーリリースとマイナーリリースの内容は以下AWS公式ドキュメントに記載されています。メジャーリリース時には互換性があるか十分に検証した上でアップデートしましょう。 Major version release— Includes new features and improvements in security and performance across the stack. The improvements might include major changes to the kernel, toolchain, Glib C, OpenSSL, and any other system libraries and utilities. Major releases of Amazon Linux ar

                                                                                Amazon Linux 2023がGAされました | DevelopersIO
                                                                              • 2019年、fat gemをやめる - 2019-11-22 - ククログ

                                                                                fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bit版Ruby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ

                                                                                  2019年、fat gemをやめる - 2019-11-22 - ククログ
                                                                                • Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた |ハイクラス転職・求人情報サイト AMBI(アンビ)

                                                                                  Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた 2021年12月25日にリリースされたばかりのRuby 3.1では、どのような機能がどういった経緯で採用されているのでしょう。リリースマネージャーのnaruseさんと、フルタイムコミッターのmameさん、ko1さんに詳しくうかがいました。 プログラミング言語Rubyでは2013年の2.1.0以降、毎年クリスマス(12月25日)にメジャーバージョンアップが行われています。2021年も無事にバージョン3.1.0がリリースされました。 ▶ Ruby 3.1.0 リリース Ruby 3.1は、言語機能の面では全体的に穏やかなリリースにも見えますが、新しい方式のJIT(just in time)コンパイラ、標準の新デバッガー、事前アナウンスでも好評だったエラーメッセージの改善な

                                                                                    Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた |ハイクラス転職・求人情報サイト AMBI(アンビ)