タグ

ブックマーク / kaworu.jpn.org (9)

  • pthread mutex lockとAtomic型修飾子の比較 - C言語入門

    mutex のロックは、コストが高い、ということでしたが、アトミックを使ったほうが、今回の単純なケースでは、速い、ということが解りました。 また、_Atomicを利用した場合のほうが、ソースコードも簡単になります。 pthread_mutex_lockを使うと pthread_mutex_unlock の呼び出しも必要になり、コードが汚くなってしまいます。 ヘッダファイル サンプルコードの意味 2つのスレッドを同時に実行します。 片方の1つのスレッドは、グローバル変数 shared_data をインクリメントし続けます。 もう1つのスレッドは、グローバル変数 shared_data をデクリメントし続けます。 最終的に 0 になることを期待します。 ロックなしのコードは、アトミックに処理できないので、結果は不定です(0かもしれないし、0以外かもしれない)。 pthread_test1_no

    iww
    iww 2024/06/02
    アトミック
  • C言語でCSVの文字列をsscanfで読み込む方法

    このドキュメントの内容は、以下の通りです。 はじめに 時代遅れの関数について C言語でCSVを読む方法を考える ライブラリでCSVをパースできないのか C言語関連の記事 はじめに CSVという言葉を耳にしたことがある方は多いのではないでしょうか? CSV とは、カンマ セパレータ バリューのことで、それぞれの単語の頭文字からCSVと略して呼ばれています。CSVは、名前の通り、バリュー(値)が、「カンマ」で区切られて格納されたファイルのことを言います。ファイル名の拡張子は .csv です。 学校やオフィスで、CSVファイルを扱ったことがある方がいらっしゃると思います。Windows のパソコンで Office を利用されている方は Excel で、表として扱っているのではないでしょうか?CSVの親戚にTSV(タブセパレータバリュー)というタブで区切った形式のファイルもあります。 CSVやTS

    iww
    iww 2017/03/03
  • github.com の証明書はSANだがwgetが非対応のようだ

    wget がSSL証明書のSAN に対応していないのが問題なようです。curlは対応していて問題ないです。しかしながら、CentOSに入っているca-bundle.crtが古いのも問題なようです。 $ wget https://raw.github.com/foo/bar.. --2013-11-28 08:34:26-- https://raw.github.com/foo/bar.. raw.github.com をDNSに問いあわせています... 103.245.222.133 raw.github.com|103.245.222.133|:443 に接続しています... 接続しました。 エラー: raw.github.com の証明書(発行者: `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance

    iww
    iww 2014/06/10
  • gcoreコマンドで実行中のプロセスのコアイメージを取得する方法

    このドキュメントの内容は、以下の通りです。 はじめに コアファイルとは 実行中のコアファイルの取得方法 gcoreのインストール gcoreの使い方 gdbは動作中プロセスをアタッチ可能 gdbからgcoreを実行する方法 まとめ はじめに オペレーティングシステムでは、さまざまなプログラムが実行されています。実行中のプログラムのことをプロセスと呼びます。 ソフトウェアを開発している場合には、プログラムが異常終了した場合には、調査を行い、原因を特定して、問題を解決しなければなりません。 プログラムが異常終了をしない場合であっても、なんらかの不具合があれば、やはり、調査を行い、原因を特定と問題解決が要求されます。 プログラムの状態を知るためには、プログラムが利用しているメモリの内容を知る必要があります。メモリの内容を取得し、デバッガなので中身を解析することになります。 ここでは、Linux

  • C++ デフォルト引数はプロトタイプ宣言だけにする default argument given for parameter

    このドキュメントの内容は、以下の通りです。 はじめに デフォルト引数とは サンプルコード コンパイルするとデフォルト引数でエラーが出る 何が悪いのか? 2020年の環境では まとめ はじめに C++言語 は、精力的に新しい機能が実装され、GNU GCCやClangなどの新しいバージョンが次々とリリースされます。次々と新しいプログラミング言語が開発され、便利なスクリプト言語が次々と登場していますが、C言語やC++言語は、いまでも根強い人気があるように思います。組み込み系で使われていたり、やはり実行速度が速い、といったメリットがあるからなのではないか、と思っています。 GNUGCCの 古い g++(コンパイラ) でコンパイルするときは、問題にならなかったけど、いつの間にかエラーになってコンパイルできなくなってしまった、というお話です。 どういうわけか、古いコンパイラを使わないといけない環境に長

  • MySQLでクエリキャッシュする方法

    このドキュメントの内容は、以下の通りです。 はじめに クエリキャッシュの設定が 0 の場合 クエリキャッシュの設定の確認方法 キャッシュサイズの設定 キャッシュのステータス my.cnfでの設定 クエリキャッシュでのSELECTのオプション はじめに MySQLのクエリキャッシュとは、SELECTステートメントのテキストを結果と合わせ格納します。 後で同じクエリを受け取ったときに、クエリの解析と実行をせずに、 クエリキャッシュから結果を取り出し、クライアントに返します。 同じクエリが何度も実行される環境では、クエリキャッシュが役に立ち、パフォーマンスが向上します。 クエリキャッシュの設定が 0 の場合 query_cache_size が 0 の場合は、 クエリキャッシュを無効になります。 query_cache_size=0 クエリキャッシュの設定の確認方法 クエリキャッシュの確かめ方を

  • showmountで過去にマウントされた情報が残る

    showmountコマンドでリモートNFSマウントの情報を表示することができます。 CentOSで発生した現象ですが、CentOSでnfsdを起動して、そのnfsをnfsマウントし、マウントしたマシンからアンマウントしたあとで、showmountコマンドを実行すると、なぜか、まだ、マウントしている状態になっていることがあります。 /var/lib/nfs/rmtab に情報が残っていることが原因のようです。 [root@c1]# cat /var/lib/nfs/rmtab 192.168.0.0/255.255.255.0:/cdrom:0x00000004 192.168.0.201:192.168.0.0/255.255.255.0:0x00000005 192.168.0.0/255.255.255.0:/home:0x0000000b 192.168.0.202:192.168.

    iww
    iww 2011/08/01
    /var/lib/nfs/rmtab を削除すると良いらしい
  • PHP mail関数でX-Authentication-Warningが付加される

    PHPのメール送信関数 mail()関数の第4引数を使い、-fでevelope-fromを指定した場合に、 メールのヘッダにX-Authentication-Warningに付加されてしまいます。 下記のヘッダの例では、sample.jpのホストでユーザbarが-fを使って foo@example.com を指定しました、と書いてあります。 X-Authentication-Warning: sample.jp: bar set sender to foo@example.com using -f ユーザbarがsendmailに-f オプションをつけてメールを送信しているが、信用できませんといった意味合いです。 上記のヘッダ X-Authentication-Warningを消すためには、 sendmailに信頼してもらえばよいのです。 sendmailの設定ファイル submit.cf

  • Linux/Unixのセキュリティ sudo vi/lessなどを禁止するときの対応策 sudo edit, sudo -e

    セキュリティのためsudoコマンドを利用して、オペレーションを することがあると思います。このときにsudoersで実行可能な コマンドを限定することで、さらに安全になります。 そこで、出てくるのが、 sudo vi や sudo less がしたいとか 言われたりします。 sudo viを許可するとどうなりますか? viコマンドは、外部コマンドを実行することができるため、 sudo viで起動したroot権限を持つviは、root権限でコマンドを 実行することができます。viからコマンドが起動されるため、 sudoコマンドの設定の影響を受けません。 ようするに、何もかも許しているのとなんら変わりません。 lessも同様にコマンドを実行することができます。 sudo less file で実行したlessコマンドからcshを起動すれば、 root権限のシェルが起動されます。 このような任意

  • 1