Oh!Super164 取り留めのない日記のような

2025/2/21 金曜日

emscripten #2

Filed under: プログラミング,備忘録 — pecos @ 23:51:23

ここを参考に、sshで直接コンテナに入れるように改良。vscodeにDWARF pluginを入れてリモートでコンテナに入りデバッグするとCのソースコードレベルでブレークポイントが効くようになった。

FROM ubuntu:24.04
RUN apt update \
 && apt -y upgrade \
 && apt clean && rm -rf /var/lib/apt/lists/*
RUN apt update \
 && apt -y install tzdata \
 && apt clean && rm -rf /var/lib/apt/lists/*
ENV TZ=Asia/Tokyo
RUN apt update \
 && apt -y install --no-install-recommends build-essential \
 && apt clean && rm -rf /var/lib/apt/lists/*
RUN apt update \
 && apt -y install git cmake wget python3 openssh-server vim \
 && apt clean && rm -rf /var/lib/apt/lists/*
# emscripten ##########################
ARG EMSDKDIR=/opt/emsdk
RUN git clone https://github.com/emscripten-core/emsdk.git ${EMSDKDIR}
RUN cd ${EMSDKDIR} \
 && ./emsdk install latest \
 && ./emsdk activate latest
RUN echo "source ${EMSDKDIR}/emsdk_env.sh" >> ~/.bash_profile
# sshd ################################
RUN mkdir -p /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
services:
  emsdk:
    build: ./
    extra_hosts:
      - "host.docker.internal:192.168.10.180"
    working_dir: /root/src
    tty: true
    stdin_open: true
    volumes:
      - ./src:/root/src
    ports:
      - 8080:8080
      - 2222:22
      - 9223:9223

2025/2/20 木曜日

emscripten

Filed under: プログラミング,備忘録 — pecos @ 1:48:27

wasmにソースのfull pathが入ってしまい、dockerでvolumeしてるlocalから拾ってくれない。javascriptはいけるんだが、コンテナ直にsshで入らないとダメか?
chromeの拡張機能に設定があるが効かない、、、

$ EMCC_DEBUG=1 emcc hello.c -o hello.html # default debug build
$ emcc -O0 -g3 -gsource-map hello.c -o hello.html # manual debug build
$ emcc -O0 -g -gsource-map -gseparate-dwarf=hello.debug.wasm -s \
  SEPARATE_DWARF_URL="file://~/source/docker_emscripten/src/hello.debug.wasm" \
  hello.c -o hello.html
$ emrun --no_browser --port 8080 .  # run http test server
{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Launch Chrome",
        "type": "chrome",
        "request": "launch",
        "url": "http://localhost:8080",
        "port": 9223,
        "runtimeArgs": [
            "--new-window",
            "--remote-debugging-port=9223"
        ],
        "runtimeExecutable": "canary",
        "webRoot": "${workspaceRoot}/src"
      }
}

2025/2/19 水曜日

吹雪

Filed under: 生活 — pecos @ 23:53:33

買い物帰り4Fの駐車場にて
やけに冷たい風が吹き込むなと思って外を見ると雪だった。今年はちょいちょいチラついてはいたが積ることもなく一時的なものだった。それでも視界が悪くなる程だったのでカメラで撮ってみたが全然降ってるように見えないな、、、
雪

Close

混ぜるな危険

Filed under: プログラミング — pecos @ 1:34:59

Linuxのkernel開発でRustも採用されていると聞いてはいたが
中の人たちにも混乱があるようだ。そもそもUNIXのkernel開発用に出来たような高級アセンブラのC言語と近代化されたネイティブコンパイラのRustでは軋轢も生まれようなもんだ。Rustも面白そうな仕様ではあるが、これまでどっぷりとCで書かれたkernelを置き換えるには時間掛かるだろうな。
少なくともSwiftよりは使い勝手良さそう

2025/2/16 日曜日

ブレークポイントで止まらない

Filed under: PC,備忘録 — admin @ 17:21:40

随分悩む、、、同じ症状で悩む人のサイトを発見
xdebugが”host.docker.internal”を引き当てられないらしく、”extra_hosts”を指定すると動いた

FROM php:8.2-apache

RUN pecl install xdebug && \
    docker-php-ext-enable xdebug

RUN touch /var/log/xdebug.log && chmod a+w /var/log/xdebug.log
services:
  web:
    build: ./
    extra_hosts:
      - "host.docker.internal:192.168.10.180"
    volumes:
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./src:/var/www/html
    ports:
      - 8080:80
[xdebug]
xdebug.client_host = host.docker.internal
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.remote_handler = "dbgp"
xdebug.client_port = 9003
xdebug.log="/var/log/xdebug.log"
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
               "/var/www/html": "${workspaceRoot}/src"
             }
         },

dockerでsystemctlを使う方法

Filed under: プログラミング,備忘録 — admin @ 17:01:54

PID=1が”init”になるようにする

FROM php:8.2-apache
COPY src/ /var/www/html/
RUN apt-get update
RUN apt-get  -y upgrade
RUN apt-get -y install \
        init \
        systemd \
        git \
        zip \
services:
  app:
    build:
      context: "."
    privileged: true
    command: /sbin/init
    ports:
      - 8080:80
    volumes:
      - ./src:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/php.ini

2025/2/12 水曜日

gcc 定義済みマクロ (pre-defined macro) 確認方法

Filed under: プログラミング,備忘録 — pecos @ 16:06:32
$ echo | gcc -dM -E -

2025/2/10 月曜日

寒波

Filed under: 生活 — pecos @ 0:14:46

土曜は最高気温が5℃未満、日曜の最低気温は-4.4℃
雪は積りはしなかったが粉雪が風で舞い、あられまで降って車にガンガン当たり冷え切っていたんだと実感する。寒いのでストーブという物理火力で暖をとる。遠赤外線の効果もあるのかエアコンに比べて断然暖かい。そういや子供の頃の冬ってこんな感じだったな、、、裏の用水は分厚い氷が張って、霜柱をザクザク踏みながら通学したもんだ。
これまでが暖冬過ぎたのかも

2025/2/8 土曜日

無限レジスタ

Filed under: プログラミング — admin @ 0:47:28

AIが勝手にコードを書いてくれる昨今、、、
gasでx64のアセンブラを使ってみる。gasは既定がAT&T記法なのだが、ちゃんとIntel記法も使える。前者はレジスタに”%”付けたり、オペランドの順序が逆だったりとMASMあがりには訳わかめ。x64では汎用レジスタが増えて、”r8″~”r15″と実に分かり易い名前になっている。加えて32bitモードではxmm0~7までだったMMXレジスタもxmm15まで増えている。かつて、AX/BX/CX/DX/DI/SIしか無かった16/32bit時代から比べると天国である。レジスタが増えたので、gccやvc++のABIも可能な限りレジスタ渡しになっており、少々の引数ならスタックすら使わない。
いつの間にかモダンになってたんだな>x86

2025/2/1 土曜日

ARM NEON

Filed under: PC — pecos @ 23:44:55

ARMのSIMD命令セット
我が家のロートル、RaspberryPi2にも搭載されている。この手の命令はgasやinline asm構文を使わなくてもCの関数として用意されている場合があるのだが、gccにもある。128bitレジスタが使えるので、実験的に実装。ちゃんとNEON命令にコンパイルされるのか見てみると見事に変換されている。
速くなったんだろうか?、、、心の問題かもしれないw

Powered by WordPress