Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
»ArchiveList (Tag for "c" )
«Prev ||1 ·2 ·3 ·4 ·5 ·... ||Next»
2023/03/05

オープニングフライトと模擬空中給油 ( 2023 小牧基地オープンベース )

aichi  jsdf  航空祭  小牧基地  C-130  KC-767  F-2  prototype 
C-130H (45-1074, 85-1079, 75-1078) オープニングフライト - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )KC-767J (87-3601) - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )
KC-767J (87-3602) と F-2A (63-8501) による模擬空中給油 - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )F-2A (63-8501) 機動飛行 - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )
C-130H (45-1074, 85-1079, 75-1078) ブレイク - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )KC-767J (87-3601) と C-130H による模擬空中給油 - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )
KC-767J (87-3601) 着陸 - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )C-130H (85-1079) コンバットブレイク - オープニングフライトと模擬空中給油  ( 2023 小牧基地オープンベース )

    at 08:50 |
    2023/03/05

    エンジンいろいろ ( 2023 小牧基地オープンベース )

    aichi  jsdf  航空祭  小牧基地  UH-60  KC-767  CH-47  C-130 
    GE CF6-80C2 エンジン(KC-767用) - エンジンいろいろ ( 2023 小牧基地オープンベース )RR T56-A-15 エンジン(C-130H用) - エンジンいろいろ ( 2023 小牧基地オープンベース )
    Kawasaki-Honeywell T55-K-712 (CH-47J用) - エンジンいろいろ ( 2023 小牧基地オープンベース )GE/IHI T700-IHI-401C (UH-60J用) - エンジンいろいろ ( 2023 小牧基地オープンベース )

      at 08:01 |
      2023/03/05

      2023 小牧基地オープンベース

      aichi  jsdf  航空祭  小牧基地  US-2  C-130  KC-767 
      検温ブース設営中 - 2023 小牧基地オープンベース開場前のエプロン - 2023 小牧基地オープンベース
      ブルーインパルス前 - 2023 小牧基地オープンベース人出 - 2023 小牧基地オープンベース
      「小」「牧」「基」「地」 - 2023 小牧基地オープンベース重物量傘 - 2023 小牧基地オープンベース
      KC-767 のフライングブーム - 2023 小牧基地オープンベースKC-767 フライングブーム - 2023 小牧基地オープンベース
      海自の US-2(9906) - 2023 小牧基地オープンベースUS-2(9906)の装備品 - 2023 小牧基地オープンベース

        at 06:11 |
        2023/03/03

        TeraTerm の背景色をお手軽に変更できる TTXCommandLineOptKai を TeraTerm5 対応に

        teraterm  c 
        TTXCommandLineOptKai v2.0 - TeraTerm の背景色をお手軽に変更できる TTXCommandLineOptKai を TeraTerm5 対応に

        以前、作成した TeraTerm の背景色をお手軽に変更できるTTXCommandLineOptKai プラグインTeraTerm 5.x 系の API 変更で動かなくなってしまっていたのでバージョンアップしてみました。

        前回と同様、ビルド済みの.dll は GitHub にアップロードしてあります。

        例えば、このプラグインを入れた状態でuser@host.example.com /BG=M のようなホスト名に対して接続すると、背景は画像のような感じになります。


          at 18:31 |
          2022/11/12

          美保基地南地区展示場と掩体壕

          F-4  C-1  YS-11  tottori  airport  旧軍施設  jsdf  美保基地 
          F-4(17-8439) - 美保基地南地区展示場と掩体壕 YS-11(02-1158) - 美保基地南地区展示場と掩体壕
          C-1(38-1003) - 美保基地南地区展示場と掩体壕 旧軍の掩体壕 - 美保基地南地区展示場と掩体壕

            at 14:14 |
            2022/10/06

            gcc で配列の境界外アクセスをチェックする

            c  programming 

            gcc で練習用のプログラムをコンパイルしていろいろ試していたら、配列の境界外アクセスでも意外と SIGSEGV しないパターンが多いことに気づきました。

            test.c

            #include <stdio.h>int main(void){ int a[10] = {1,2,3}; int b[2] = {4,5}; printf("a[0] %p\n", &a[0]); printf("b[2] %p\n", &b[2]); b[2] = 9; // a[0] アドレスと同じなので、a[0]への代入になる for(int i = 0; i < 3; i++){ printf("a[%d] = %d\n",i,a[i]); }}

            例えば、上記のプログラムを実行するとa[0]9 になってしまいます。

            $ gcc test.c$ ./a.outa[0] 0x7fffd1363e80b[2] 0x7fffd1363e80a[0] = 9a[1] = 2a[2] = 3

            初学者だとこういう間違いが非常に多いので、コンパイラの設定でチェックできる方法がないか調べてみたところ、最近の gcc にはAddressSanitizer*1 という仕組みが入っているようです。

            仕組みについては USENIX ATC'12 で発表された論文と GitHub のリポジトリがあります。

            上記と同じプログラムをサニタイザありでコンパイルして実行すると、こんな感じでruntime error が出るようになります。

            $ gcc -g -fsanitize=bounds test.c$ ./a.outa[0] 0x7ffdff286da0b[2] 0x7ffdff286da0test.c:9:3: runtime error: index 2 out of bounds for type 'int [2]'a[0] = 9a[1] = 2a[2] = 3

            at 07:57 |
            2022/05/21

            3 年ぶりの横田基地フレンドシップフェスティバル 2022

            tokyo  横田基地  usforces  F-35  U-680  F-16  P-8  C-5  V-22 
             - 3 年ぶりの横田基地フレンドシップフェスティバル 2022 - 3 年ぶりの横田基地フレンドシップフェスティバル 2022
             - 3 年ぶりの横田基地フレンドシップフェスティバル 2022 - 3 年ぶりの横田基地フレンドシップフェスティバル 2022
             - 3 年ぶりの横田基地フレンドシップフェスティバル 2022 - 3 年ぶりの横田基地フレンドシップフェスティバル 2022
             - 3 年ぶりの横田基地フレンドシップフェスティバル 2022 - 3 年ぶりの横田基地フレンドシップフェスティバル 2022

              at 15:08 |
              2021/12/19

              scanf() で整数を 1 バイト分だけ読み取る

              c 

              最近の gcc はチェックが厳しくなっているのでscanf() を使って int の値を char に書込むと*** stack smashing detected *** というエラーが出るようです。

              例えば10 進の値を char に代入するようなプログラムは C 言語の入門などでよく出てきます。

              test.c

              #include <stdio.h>int main(void){ char c; printf("文字コード: "); scanf("%d", &c); printf("文字コード%dの文字は'%c'です\n",c,c); return 0;}

              コンパイルすると警告が出る

              これを単純にコンパイルすると、以下のように警告が出ます
              これを見て驚くのは、最近の gcc はエラーや警告メッセージがかなり丁寧になっているということ。

              これをきちんと読めば、scanf() に含まれる書式指定%d は可変長引数部分のint * に対応していなければならないのに対して、実際の可変長引数部分の型はchar * になっているので、型があっていないというのがきちんと分かります。

              これを修正するための候補として%hhd も挙げられていますね。

              $ gcc --versiongcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0Copyright (C) 2019 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.$ gcc test.ctest.c: In function ‘main’:test.c:6:10: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=] 6 | scanf("%d", &c); | ~^ ~~ | | | | | char * | int * | %hhd

              とりあえず無理やり実行してみる

              とりあえずコンパイル自身はされているので、警告を無視して実行してみます。
              結果は表示されますが、実行時エラーが出て正常終了しません

              $ ./a.out文字コード: 100文字コード100の文字は'd'です *** stack smashing detected ***: terminatedAborted

              実行時のエラーの原因は char (1B) の領域に無理やり int (4B) 分のデータを書込んでしまうからですね。
              要はバッファーオーバーフローです。

              このバッファオーバーフローが gcc の stack protector*1 によって検知されていることになります。
              実行結果が表示されてしまっているのは、stack protector が関数の実行後(今回の場合はmain()の実行終了時 )にバッファオーバーフローを検出しているためです。

              書式を修正してみる

              gcc の警告のアドバイスに従って書式を%hhdにしてみるとコンパイルの警告、実行時エラー共に解消しました。

              サイズ的には%d→4B、%hd→2B、%hhd→1B となるようなので、h は half のh でしょうか(llongl だと分かるのですが)。

              test.c

              #include <stdio.h>int main(void){ char c; printf("文字コード: "); scanf("%hhd", &c); printf("文字コード%dの文字は'%c'です\n",c,c); return 0;}
              $ gcc test.c$ ./a.out文字コード: 100文字コード100の文字は'd'です

              ちなみに調べてみたらh 接頭辞は C99 から使えるようになっていたようです。


              at 15:22 |
              2021/01/17

              C 言語で cwd を取得する

              c 

              C で cwd を表示するプログラムが書きたくなって調べてみたのでメモ。
              やり方はいろいろあるようなのですが、Linux / Windows 両対応させたいので POSIX に含まれているgetcwd()*1 を使ってみました。
              C はアプリを書くために普段あまり使っていないので、やっぱりちょっと面倒な感じがしますね。

              #include <stdio.h>#ifdef _WIN32#include <stdlib.h>#include <direct.h>#define PATH_MAX _MAX_PATH#elif defined __linux__#include <linux/limits.h>#endifint main() { char path[PATH_MAX]; getcwd(path, PATH_MAX); puts(path); return 0;}

              at 13:54 |
              2020/11/07

              TIOBE Index で Python が初の 2 位に

              python  java  c 

              プログラミング言語の人気ランキングとしてよく使われているTIOBE IndexPython が始めて 2 位になっていました

              C と Java が 1, 2 位を明け渡すのは TIOBE Index 至上初とのこと。
              Java は Oracle の JRE/JDK ライセンス変更以降、退潮傾向が続いているので中長期的にはしょうがないかなという感じもします。

              JavaとCの2大人気に異変、Pythonが2位にーーTIOBE Index | OSDN Magazine

              オランダTIOBE Softwareが発表した最新のプログラミング言語ランキング「TIOBE Index for November 2020」で、Pythonが過去最高位の2位となった。約20年前にTIOBE Indexの作成を開始以来初めてJavaとCが揃って上位2位に入らないという結果となった。


                at 17:05 |
                «Prev ||1 ·2 ·3 ·4 ·5 ·... ||Next»
                »ArchiveList (Tag for "c" )
                Copyright © 2004-2023 by CLES All Rights Reserved.
                サイト内検索
                検索ワードランキング
                貸金庫 審査
                銀行で貸金庫を借りてみた
                Photo
                ポスチャーフィット部品検査着ポテトなど生レモン尽くしスカッシュ正常に受付が完了しました財産債務調書バレット食道2024 年度 基盤研究(C)(一般) blog.cles.jpCelestica Seastone DX010ポスチャーフィットの割れ母子健康手帳 省令様式アーロンチェアのワイヤー新型コロナワクチン接種証明書アプリ冥銭
                へぇが多いエントリ
                閲覧数が多いエントリ
                1 .アーロンチェアのポスチャーフィットを修理(99660)
                2 .年次の人間ドックへ(99077)
                3 .福岡銀がデマの投稿者への刑事告訴を検討中(99066)
                4 .三菱鉛筆がラミーを買収(98676)
                5 .2023 年分の確定申告完了!(1つめ)(98645)
                最新のエントリ
                cles::blogについて
                誰が書いてる?
                最近行った場所
                サイトポリシー
                タグ一覧
                検索ワードランキング

                カテゴリ別エントリ
                Referrers

                  Powered by CLES
                  Nucleus CMS v3.31SP3/w memcached
                  21374330(W:4955 Y:1545 T:0149)
                  cles::blogのはてなブックマーク数
                  benchmark


                  [8]ページ先頭

                  ©2009-2025 Movatter.jp