プログラム解析入門 もしくはC/C++を安全に書くのが難しすぎる話 Last updated: Jul 30, 2022 Kinuko Yasuda <@kinu>
*scratch* バッファ S式の評価 直前のS式を評価 → C-j(結果は次行) カーソルの直前のS式を評価 → C-x C-e / eval-last-sexp(結果はミニバッファ) カーソルの位置か、そこ以前の行頭で始まるS式を評価 → M-C-x / eval-defun バッファ全体を評価 → M-x eval-buffer 選択範囲を評価 → M-x eval-region 各種定義の確認 関数定義の確認 → (symbol-function '関数名) interactiveじゃない関数をEval → M-: / eval-expression 入力履歴は M-: からの M-p / M-n で辿れる C-x M-: / C-x M-ESC で直前のコマンドを再実行 / repeat-complex-command 入力シンボルの補完 → M-Tab (emacs-list
これは、Haskell Advent Calendar 2021の2日目を埋めるために書いた記事です。実は単に僕が作った「関数プログラミングの入門」の資料の宣伝です。 ちなみに、僕の関数プログラミングの定義は「不変データプログラミング」であり、おそらく最も厳しい定義です。なので内容が分かれば、関数プログラミングに入門できた言ってもよいのではないかと思います。 関数プログラミングことはじめ 僕は毎年、岡山大学の三年生に向けて、2コマで関数プログラミングを教えています。その資料が、「Cプログラマーのための関数プログラミングことはじめ」です。岡山大学工学部情報系学科の学生は、C言語を習っているので、C言語に似た文法を独自に定義して、関数プログラミングを説明しています。 [入門]関数プログラミング [入門]関数プログラミングは、WEB+DB PRESS Vol.67に掲載された記事です。編集部のご
みなさんはC++の読み書きができますか? 自信がある方、いつ頃勉強しましたか?もし20世紀に勉強したのであれば、その知識は相当古いです。実質現在のModernC++(C++11以降のC++)とは概念上の互換性がないので脳のアップデートが必要です。 自信がない方、文法は知っているけどなんとなく使いこなせていない方、マサカリ屋にあーだこーだ言われて大混乱している方。必勝パターンを身につければもっと楽にコードを読み書きできるようになるかもしれません。 この文章の目的は、ModernC++におけるメンタルモデル(考え方)や必勝パターンをざっくりと導入することでみなさんが楽にModernC++を読み書きできるようなお手伝いをすることです。主要な内容としてはムーブセマンティクスと右辺値 とその次の章でだいたいA4換算で15ページくらい?ほかは正直流し読みしてもらえるような内容です。また、内容的にはその
はじめに 2021年4月20日、『基礎から学ぶ 組込みRust』(C&R研究所) を出版します。Rust の文法から組込み Rust でファームウェアを作成するところまでを、片手で持てる (多分!まだ持ったことないけど!) 1 冊の本にまとめた、喉から手が出るほど (私が) 求めていた書籍です。 先日、無事入稿を果たしたので、今の気持ちを徒然なるまま綴ったのが、このエントリです。 基礎から学ぶ 組込みRust 作者:中林 智之,井田 健太発売日: 2021/04/20メディア: 単行本(ソフトカバー) 一番始めに言いたいこととしては、今現在、「組込み Rust がプロダクションレディか?」、と問われると、「ほとんどのプロジェクトに対してそうではない」というのが私個人の見解です。セーフティクリティカルな分野では、機能安全をはじめとする認証の問題があり、そんなにおいそれとプログラミング言語変更
現代のプログラミング言語ではポインタは単なるアドレスではなく,provenanceを伴った参照として扱われています. 世界は既に変わっています. 概要 ポインタは単なるアドレスではありません. ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています. Provenanceを使うことで,最適化が効きやすくなったり,堅牢なプログラムを書きやすくなったりします. 追記: 次の英語記事を読むとprovenanceが必要な理由についてもっとよく知ることができます.クリックしよう!!!!(2020-12-15) https://www.ralfj.de/blog/2020/12/14/provenance.html ポインタはアドレスではない 次のCプログラムを見てみましょう. #include <stdio.h> #include <string.h> int main
新しいプログラミング言語に入門するためには、やはり手を動かすことが大事です。本を読んで体系的に学ぶのももちろん重要ですが、それは言語の魅力を知ってからでも遅くはありません。 しかし「Hello World」レベルだと簡単すぎて言語の違いを味わえず、ネットワークプログラミングのような高度なプログラミングはフレームワークの力が大きすぎて言語とフレームワークの狭間で立ち往生することになります。 そこで登場するのが「FizzBuzz」です。「FizzBuzz」は単純なプログラムでありながら、プログラムの真髄である「順次」、「分岐」、「繰り返し」があり、数値計算も学べる興味深い題材です。 その「FizzBuzz」を利用して「Rust」という言語を学んでみようのが本記事の趣旨です。「FizzBuzz」というシンプルなプログラムで「Rust」のような表現力が豊かな言語の機能をどこまで使い尽くせるのかは興
これは Linux Advent Calendar 2019の 15 日目の記事です。procfs について勉強したことをまとめます。 検証環境CentOS 8 を利用する。 ]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Tue Jun 4 09:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux procfs とは疑似ファイルシステムのひとつ。 ディスク上に実体は存在せず、メモリから情報を取得する。 カーネルだけが知っている情報 (例えばシステム全体のロードアベレージ/CPU負荷/メモリ利用状況や、プロセスごとの情報)が取得できる。
JJUG CCC 2019 Fall に行ってきました! 最近 Java のシステムをまたいじるようになって*1、 Java 欲が高まってきていたところにいろんなセッションを聞けてすごいテンション上がりました。 特に、「開け!ドメイン駆動設計の扉」がちょうどこれから一部のシステムをリプレースするにあたって導入したいけど「DDD、さっぱりわからん」と思っていたところだったのでとても助かりました。 また、マニアックな話も多数あってやっぱり JJUG CCC 最高!という気持ちです。 「CLR の ValueType を起点に Project Valhala を覗いてみる」とか「オレ流OpenJDK「の」開発環境」とか、普段の JJUG では聞けない、でもとても知りたかった内容でした。こういうの、もっと聞きたい! そして、懇親会で話しかけてくださった方、ありがとうございました! すごく楽しかった
個人的に、一番面白いデータ構造であり探索アルゴリズムです。 ここで言うグラフは円グラフや、棒グラフのことではないです。プログラミングで扱うのは、図のように、点と線を繋げたものです。 ズバリ、人と人の繋がりを表現できます。 今回もJavascriptで実装します。 グラフ理論は、SNSだったり、レコメンドだったり、地図の経路だったり ルーティングだったり、点と点の繋がりを可視化します。繋がりを表現するデータ構造です。 巨大なインターネットもそうです。 そいう意味で、すごく身近なアルゴリズムですよ。 グラフの基本は次の2点で構成されています。 ・ノード:node(vertex) - 点(人、物、場所) ・エッジ:edge - 辺(繋がり、経路) 上の図を見ると一目瞭然ですね。ノードを人だとしたら、エッジが関係性です。まずは、これだけ理解できれば大丈夫です。 ちなみに、方向がない辺を無向グラ
この記事はいったい...? この記事は「Native C++ と C#ライブラリを CLI を使わずにどうしても連携させたい!!」という, とてもニッチな思いに応えるためのものです. 普通の人には必要のない技術情報です. どうするの? 【DllExport】を利用して, .NETライブラリをC++から呼び出せるようにしてあげます. なんてすばらしいアプリケーションなんだぁ~. 最新版をダウンロードしておいてください. How to 1. C#で .NET Framework ライブラリを作成します まず, VisualStudioを起動して, 【新しいプロジェクトの作成...】を押下します. 【Visual C#】→【クラス ライブラリ (.NET Framework)】→【OK】の順に押下します. 必要であれば, プロジェクト名やソリューション名も変更します. 以下のようなコードを記述し
おはようございます。 歳をとってからプログラミングするのは難しいという人がいる。 若い人でも、歳をとっても興味があるかどうかだけだと思う。 日本は駄目だという意見を書く人がいるのは、自分がやるとよいことをやっていないだけということに気が付いてないのかもしれない。日本が駄目だという暇があったら、日本が駄目じゃないという事例を作ればいいだけ。 日本のプログラマが世界で戦える16分野・事例。仮説(53) データサイエンティストの気づき『勉強だけして仕事に役立てない人。大嫌い』それ自分かもってなった。 65歳からのプログラミングは、社会の中の、ただ一人の人でもいいから役立つソフトウェアを書こうと思っているかどうかだけかも。その一人が、自分でもいいかも。他人が書いたプログラムを利用して、課題を報告するのも社会貢献だと思う。もし、自分がプログラマだと人にいいたければ、自分のためだけでもいいので、一年に
あけましておめでとうございます。今年もよろしくおねがいします。艮鮟鱇です。 さてつい先程、友人から「冬休みに言語処理系ちょっと書いてみたいんだけどいい資料ない?」(意訳)と言われました。新しい年も始まりましたし、これを機にコンパイラ・インタプリタを書き始める人も少なくないこともないかもしれません。 ということで私が把握している言語処理系開発のための資料を以下に一覧します。上から順に見ていって、自分に合うものを探して頂ければと思います。私がよく知っているものを並べたので、全体的にCコンパイラよりです。「自分が開発するときに見るやつが載ってない!」という方は是非コメントをくださるか、 Twitterで雑にリプライをお願いします。 低レイヤを知りたい人のためのCコンパイラ作成入門セキュキャン2018 Cコンパイラ開発ゼミの講師の一人、Rui UeyamaさんのCコンパイラ作成入門資料です。タイト
はじめに 表題通りですが、Rui Ueyama氏の「低レイヤを知りたい人のための Cコンパイラ作成入門」というPDF本を読んでCコンパイラ的なものを作り始めましたよ、というダラっとした内容です。 はじめに 発端 とりあえず書いてみる 別のコンパイラ入門書をよんでみる 次にどうする? 書くぞ、書くぞ、書くぞ リポジトリー 便利な資料 セキュリティキャンプの参加者のリポジトリー オンラインコンパイラGodbolt セキュリティキャンプ講師のスライド C言語規格のドラフト 書籍 Compilers: Principles, Techniques, and Tools 2nd By Alfred V. Aho Intel® 64 and IA-32 Architectures Software Developer Manuals 発端 ツイッター等で知ったのですが、セキュリティキャンプというイベン
This document summarizes a microservices meetup hosted by @mosa_siru. Key points include: 1. @mosa_siru is an engineer at DeNA and CTO of Gunosy. 2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway. 3. Challenges discussed were managing 30 microservices, ensur
そこで加法準同型暗号と完全準同型暗号の中間の暗号(somewhat準同型暗号 あるいはleveled準同型暗号)が研究されています。somewhat準同型暗号は暗号文同士の演算回数に制約を設けることで効率のよい処理を目指します。 今回提案した暗号は足し算は任意回、乗算は1回だけ可能なL2準同型暗号と呼ばれるクラスに属します。 乗算が1回しか出来なくても、複数の暗号文の平均値や分散、内積、最小二乗法などができます。うまく使えばなかなか便利な暗号です。 加法準同型暗号を使った例としては加法準同型暗号を用いて暗号化したまま画像のエッジ検出をするも参照ください。 なお、加法性を使うだけでも $Enc(x) + Enc(x) = Enc(2x)$, $Enc(2x) + Enc(x) = Enc(3x)$,... なので適当な整数$n$に対して$nEnc(x) = Enc(nx)$を計算できることに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く