SQL勉強した感想

前提 SQLに苦手意識があり、where句とかgroup byとかはとりあえずわかるところからのスタート(havingの理解が怪しいレベル)。 Rのtidyverseは大体理解しているので、関数プログラミング的な考え方は問題ない リレーショナルDBで、クエリの書き方を習得した。…

どのようにしてプログラマはAIに仕事を奪われていくかの感想

https://yuheinakasaka.github.io/gialog-diary/articles/26 みて思ったことを書く まだエンジニアサイドのポジティブトークな感じする。 "既存システムへ追加・修正などの改修を入れる" むしろでAIを使ってバグフィックスするなんてものはいくらでも論文あ…

goroutineとchannelについて

適宜書き足し、修正するかも 時間があったのでgo言語の入門。結局のところ、並行処理が(go言語を採用する場合などの)キモ。 そうでなければJavaScriptとかPythonで良いのではないかと。 ただ、goroutineやchannelは他の言語にはみられないgo言語独特の仕様で…

QUICとhttp3の理解("curl --http3" + wiresharkで)

QUIC 下の図がわかりやすいと思う。 https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/ 参考url https://milestone-of-se.nesu…

“openssl s_client”コマンドでHTTPSの仕組みを理解する(TLS 1.3)

はじめに HTTPSがどのようなプロトコルなのかは”curl —trace”でも部分的には確認できるが、より詳細にはopenssl s_clientというコマンドを使うのがよい。そこで今回はこのコマンドを用いてHTTPSの仕組みを追っていくことにする。HTTPSがセキュアであるのはSS…

動画作成の作業工程

Final Cut Pro Xを引き続き使用。 サムネを作る canvaで 動画概要欄を作っておく 原稿を書く キャプチャ動画を撮る (必要なら素材を集める) キャプチャ動画に分割点を入れる 声を当てる(一番気を使うところ) 必要なら声に合わせて素材を配置する 当てた声を…

PowerShellのtips動画をYouTubeに上げています

www.youtube.com 上のやつです。「PowerShell一行自動化(Automation)ちゃんねる」という題で、PowerShellのtips動画(たまに考え方を発信した動画)をYouTubeに上げています。(このブログ経由での流入を期待です) YouTubeは今はエンタメが主流だと思うんですが…

VBA100本ノックをPowerShellで解いてみた感想

はじめに VBA100本ノック:マクロVBAの特訓|エクセルの神髄 をPowerShellで解いてみた。もともと左の問題集はVBAの練習問題として用意されたものだけど、VBAでは https://github.com/knknkn1162/vba100_knock で解き終わっており、PowershellでもExcelをCom…

excel vbaの操作をコマンドラインで

はじめに https://cstmize.hatenablog.jp/entry/2021/12/30/%E5%B9%B4%E6%9C%AB%E5%B9%B4%E5%A7%8B%E6%99%82%E9%96%93%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%A7excel_vba%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%26%E7%92%B0%E5%A2%83…

年末年始時間があるのでexcel vbaをやってみた&環境構築とバージョン管理

はじめに excel vbaをやっている。IDEから文法から色々古く不便な部分も多いのだけれど、excelは四半世紀たっても未だに使われているアプリケーションだ。使われているとはいえ、エンジニアにとっては、excelは触りたくない対象だと思う。データの加工やgrap…

よく聞くクラシックピアノ曲

ピアノ主体ですが、バイオリン曲もたまに聞くので入れてます。youtubeで100万回以上の曲はだいたいいいが、たまにクラシック界隈以外にバズって再生数バグってるのもあるのであんまり鵜呑みにしないこと。 ピアノ Trifonov plays Liszt's Transcendental Étu…

DXのまとめと自分なりの感想

DXのまとめと自分なりの感想です reference 2018.9 DXレポート ~ITシステム「2025年の崖」克服とDXの本格的な展開~ 2020.12 DXレポート2 中間とりまとめ 経済産業省のDX 概要 経済産業省の出しているDXレポートを主に参考にした。 コロナ前とコロナ後ではD…

CIで実機(Rapsberry Pi 3 Model b+, HiFive Unleashed board)のdebian imageを自動作成する

動機 linux kernelの設定やboot partitionのカスタマイズ等で実機用のimage(sdcardに焼くimage)を柔軟に作成したい。できればCIでcommitごとに自動で完成品のimageが所定の場所(e.g) AWS S3など)にuploadされてほしい。 今回は、aarch64(Rapsberry Pi 3 Mode…

Atcoder Problemsにある"Boot camp for Beginners"のmediumを100問完了した

はじめに Atcoder Problemsには、実はtrainingという物があって、easy, medium, hardの問題が100問設置されている。 場所は、https://kenkoooo.com/atcoder/#/training (おそらくloginする必要がある) 手始めに、mediumの問題を100問全て解いた。 最近は htt…

逆累積和の実装のコツ

累積和は競技プログラミングでは当たり前のようによく出てくるが、配列の逆順からの累積和(逆累積和ということにする)もたまーに出る。少しややこしいのでメモ。 逆累積和は練習問題に上げた問題の他に全方位木DPでも登場したりするので、まぁまぁ重要である…

ABC 169 C - Multiplication 3 にみる浮動小数点の取り扱い方

ABC 169 C - Multiplication 3の問題。 いいねが結構ついている記事 https://qiita.com/mod_poppo/items/910b5fb9303baf864bf7 を見たが、一番シンプルな実装が書かれていない。 int get_int2(int *a1, int *a2) { scanf("%d.%d", a1, a2); return 0; } 単純…

Aizu Online Judge(AOJ)の「データの集合とクエリ処理(DSL)」のコースを制覇した。

AOJの「データの集合とクエリ処理(DSL)」のコースをC言語で制覇した。 DSL全制覇! 問題 解答例 DSL_1_A 互いに素な集合 Union Find木 DSL_1_B 重み付きUnion Find木 重み付きUnion Find木 DSL_2_A Range Minimum Query(RMQ) セグメント木 DSL_2_B Range Sum…

しゃくとり法の実装のコツ

The Smallest Window I から考える。 int sum = 0; int left; int right = 0; for(left = 0; left < num; left++) { for(; right < num; right++) { if(sum >= limit) break; sum += arr[right]; } if(sum < limit) continue; #ifdef DEBUG printf("%d: [%d,…

セグメント木/遅延評価セグメント木の実装のコツ

はじめに セグメント木と遅延評価セグメント木を自分がどうやって空で実装しているのかをメモする。C言語での実装。 セグメント木が実装できれば、大体の場面で平衡二分探索木を実装する必要性がなくなり、競技プログラミング等で解ける問題の幅がぐっと広が…

permutationの実装例

調べてもまとまったものがないので。どちらも辞書順で並ぶ。C言語で実装する。 C++のnext_permutationのような実装 [1,2,4,3]の場合、2の後は逆順なので、2が繰り上がって3になる([1,3,*,*])。後は、*の部分の数字を昇順の数列で埋めれば良い。 ステップとし…

初中級者が解くべき過去問精選 100 問を全問解いてみた

e869120さんの初中級者が解くべき過去問精選 100 問をC言語で全問解いてみた。 他の人に対するアドバイス的な感想は note.com にかいた。 ここで書くのは、もう少し個人寄りの感想&分析。 木に関する問題(特に全ての点で答えを導出するような問題) は苦手だ…

qemu-riscv64-static + chroot + debootstrapでriscv環境を動作させる

chrootでriscv環境を動かす chroot + qemu-aarch64-staticでaarch64のバイナリがx86_64のPC上で動くことを最近知った。どうやるかというと # qemu-user-static(qemu-riscv64-static) is required for second stage debootstrap. see https://www.debian.org/…

今年の感想

去年の感想(http://cstmize.hatenablog.jp/entry/2018/12/28/%E4%BB%8A%E5%B9%B4%E3%81%AE%E8%87%AA%E5%88%86%E3%81%AE%E6%84%9F%E6%83%B3) を見比べてみて、自身でも興味深く読んでいる。 FPGA(引き続き) .. △ コンパイラ実装 これは、GitHub - esumii/min-…

OpenSBIの内部実装(boot~linux kernelを実行するまで)

はじめに OpenSBIとはRISC-V向けに提供されたSBI(Supervisor Binary Interface)仕様の実装で、M-modeでの挙動が実装されている(linux kernelはS-modeとU-modeでの挙動が実装されている)。前回の記事でlinux kernel(v5.3.6)の下でOpenSBIを導入した手順を書い…

<RISC-V版> QEMU+OpenSBI(boot loader)でlinux kernelの起動

はじめに 他のサイトでもいろいろな構成でbuildされているが、今回は、OpenSBIというBoot Loaderを用いて、linux kernel(v5.3.6)を動かしてみた。 /sbin/init以下で動作させるためのスクリプトも用意する必要があるが、これはbusyboxというユーザーランドで…

RISC-Vとx86のsystem callの内部実装の違い(xv6を例に)

はじめに xv6-publicとxv6-riscvはUNIX v6を下敷きに、それぞれx86 versionとRISC-V versionに移植された教育用のOSである。 前回、RISC-Vのprivilege modeの遷移について書いたが、本記事では前回よりも少し具体的に、system callがx86 versionとRISC-V ver…

RISC-Vにおけるprivilege modeの遷移(xv6-riscvを例にして)

はじめに xv6-riscvは、本ブログでも何度か記事にしたことのあるMITの教育用のOSであるxv6(x86 version)のRISC-V versionである(2019/9/11に登場したっぽい)。x86(32bit)のとは違い、RV64(64bit)のOSである。 本記事では、RISC-Vのprivilegeとmode遷移につい…

mmapにおけるMAP_PRIVATEの挙動

はじめに mmap(2)とはmemory mappingを新規に作成するsystem callである。 #include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); mmap(2)は下図(Reference[1]のch.49より引用)のようにmapping typeとprivate/shared</sys/mman.h>…

"Understanding the Linux Kernel 3rd.ed."(邦訳:詳解 Linuxカーネル 第3版)だいたい読んだ

これを大体完走した1。バージョンが古すぎとよく言われる本だが、大規模なコードでもまるで技術書を読むのと同じ感覚でコードリーディングできるようになったと感じる。 ソースコードリーディングするとき、関数の頭から順に読むのでなく、お尻から使用され…

Linux KernelにおけるCopy On Write(CoW)の仕組み(概要編)

はじめに Copy On Write(CoW)とは書き込みが実際に起こるまで、複数のプロセスが同じ物理メモリを共有し続ける方法である。もっと端的に言うと、書き込みが発生したら、そこで初めて該当のpageのみ遅延複製する1。Linuxでは、以下の2つの場面2で用いられる:…