へっぽこ社会人4年生がプログラミングを頑張る

へっぽこ社会人4年目がプログラミング系統を中心に書きたいことをつらつらと書きます

DojoCon Japan 2022 参加レポート Part 1

2022/11/28 に富山商工会議所で開催された DojoCon Japan 2022 に参加してきました。 3 年ぶりの現地開催ということで、全国各地の Dojo のチャンピオンやメンターがたくさん来場していました。 2019 年の参加レポート記事 同様に、今回の参加レポートも複数…

C の構造体へのポインタのキャストをちょっと理解する話

C

前回の記事 C のポインタへのキャストをちょっと理解する話 を書き終えた後、構造体へのポインタのキャストも同じように考えられるのではと思いました。 自分の理解が合っていることを確認するために、実際に簡易的なコードを書いて動かしてみました。 備忘…

C のポインタへのキャストをちょっと理解する話

C

マルチスレッドのプログラムの書き方を勉強するために、 C の pthreadsライブラリを使ったマルチスレッドプログラミングの参考書のサンプルコードを写経して動作を確認して勉強していました。 スレッドを作成する際に、 pthread_create() という関数を利用す…

DojoCon Japan 2019 参加レポート Part 3

DojoCon Japan 2019 参加レポート Part 2 に引き続き、DojoCon Japan 2019の参加レポートを書いていきます。参加から半年も経ってしまい、今更感が拭えないのですが、気にせず書いていこうと思います(笑) スーパー学生トーク CoderDojoなどで活躍する学生の…

DojoCon Japan 2019 参加レポート Part 2

DojoCon Japan 2019 参加レポート Part 1に引き続き、DojoCon Japan 2019の参加レポートを書いていきます。参加から日が経ってしまい、頭から抜けていることもありますが、当日のメモと自分の記憶を頼りに書き起こしていこうと思います。 プログラミングコン…

DojoCon Japan 2019 参加レポート Part 1

2019/12/21(土)に名城大学で開催された DooConJapan 2019 に参加してきました。2020年のプログラミング教育必修化にあたり、今回のDojoConでは、全国各地のCoderDojoの関係者だけでなく、先生方やプログラミング教育支援に携わる大学の方々まで、様々な分野…

Ubuntuでディスプレイのリフレッシュレートを変更する方法

自宅のモニタが寿命を迎え始めていたので、約5年使ってきたLGのモニタを買い替えることにしました。幸いにも、モニタを譲り受けることが出来たので、購入することなくモニタを交換出来ました。 モニタが4K対応なので、画面を広々使えるようになったと感じら…

LaravelでREST APIのJSONを柔軟に変形させたい

この記事は Web × PHP TechCafe Advent Calendar 2019 の12/15の記事です。 LaravelでモデルをREST APIのレスポンスとして返す際には、コントローラからモデルのCollectionやインスタンスを返すことで、レスポンスはJSON形式で返されます。しかし、モデルの…

Vue.jsで要素をドラッグ&ドロップで手軽に動かす方法

Vue.jsでドラッグ&ドロップで要素を動かしたいなと思い、HTML5のDrag and Drop APIの利用を考えましたが、移動元の要素の場所をドラッグ開始時(dragstart イベント)に保持して、ドロップ時(drop イベント)に要素を並び替える必要があり、少々実装が複雑です…

LaravelにVuetifyをインストールする方法

Laravelでは、デフォルトでVue.jsをサポートしており、バンドルツールのWebpackも簡単に使えます。ただ、流石にいい感じのUIコンポーネントを自前で1から作るのは大変なので、Vue.jsのフレームワークとして有名な Vuetify を採用してみることにしました。 Vu…

electoron-vueでデスクトップアプリケーションを作る

デスクトップアプリケーションを開発する手段はいくつかある(X Window System, JavaFX, Tkinterなど)と思いますが、普段JavaScriptでWebアプリケーションを作る人にとっては、HTMLとJavaScriptでデスクトップアプリケーションが作れるElectronが便利でしょう…

JavaScriptでの2重のビットNOT演算による小数点の切り捨て

JavaScriptを使って、Canvas上にお絵かきをするツールを作ろうと思い、 情報収集をしていた時に、こんなコードが目に飛び込んできました。 var rect = evt.target.getBoundingClientRect(); var x = ~~(evt.clientX - rect.left); var y = ~~(evt.clientY - …

FreeBSD 11.2-RELEASEにアップデートしたらNVIDIAのドライバが動かなくなった話

これまで、FreeBSD 11.1を使っていたのですが、FreeBSD 11.2がリリースされていたので、アップデートすることにしました。 freebsd-updateコマンドでアップグレードをインストールし、再起動して残りのアップデートのインストールを完了させるつもりでした。…

X WindowでSlimのログイン画面がループした話

デスクトップ環境のFreeBSDを利用しているのですが、しばらく使ってたら、Firefoxで新しいタブを開くと、 なぜかページがクラッシュしたとの表記が出てくるように。 Firefoxを一旦閉じて、起動し直そうとしても一向に立ち上がらなかったので、Chromiumを開こ…

enchant.jsを使ってバカゲーを作ってみた

クリスマスということで、ちょっとしたネタとしてバカゲーを作りたいなぁと思い立ち、JavaScriptでゲームを作ることにしました。 当初、JavaScriptの標準ライブラリとjQueryだけを使って、DOM操作で作ろうとしたのですが、早々に折れました。 JavaScriptでゲ…

Apacheの環境変数PATHの変更方法

時々、Webサーバからシェルのコマンドを呼び出したくなることがあります。 例えば、GraphVizでグラフを自動生成してWebページに貼り付けたい場合、 内部的にはdotコマンドが実行されます。 おそらく、現実的にはPerlのGraphVizモジュールを利用するなど、 外…

FreeBSDのファイルシステムの修復についての備忘録的なもの

自作PCのHDDにFreeBSDを入れて、デスクトップ環境を構築してぼちぼちと使っていました。 特に問題なく動作していたのですが、ある日、起動したらこんなメッセージが表示されました。 error 32 lba 106366 error 32 lba 475711486 No /boot/loader FreeBSD/x8…

システムコールで遊んでみる その4

今回は、システムコールforkやwaitなどについて書いていこうと思います。 forkを呼び出すことで、 子プロセスの生成が出来ます。 また、waitを呼び出すことで、 親プロセスが子プロセスの終了を待ちます。 以下にプログラム例を示します。 #include <stdio.h> #includ</stdio.h>…

PerlでGraphVizのグラフを生成する

前回、GraphVizを使ったグラフの生成方法について書きました。 今回はdot言語ではなく、Perlでプログラムを記述してグラフを生成します。 ディレクトリの内容物を再帰的に取得してグラフ化したり、CGIプログラムに応用するなど、使い方は様々だと思います。 …

GraphVizを使って簡単にグラフを生成する

以下のようなグラフを作りたい時、GraphVizが便利なんです。 ディレクトリ構造をGraphVizを用いて表現 GraphVizはdot言語に記述されたコードからグラフを生成します。上のグラフを生成するためのコードは以下の通りです。 graph g { "public_html" [ shape =…

FreeBSDのPerlやbashのパスについて

Mac OSXやLinuxなどでbashやPerlのスクリプトを記述する際に、 スクリプトファイルの先頭の行に #!/bin/bash や、#!/usr/bin/perl のように記述します。 これは、bashが/bin/bashに、 Perlが/usr/bin/perlに存在する環境であれば正常に動きます。 ところで、…

Raspberry Pi のWi-Fi設定についての備忘録的なもの

自宅のネットワーク環境を一新したので、自分のRaspberry Piのネットワーク設定も変更したのですが、以前の環境で固定IPの実験をしていたので、DHCPに一旦直すのに手こずってました。 そこで、備忘録的な感じで、Raspberry PiでのWi-Fiの設定について書いて…

Cの構造体へのポインタのキャストを考える

C

Cでソケットプログラミングをする時なんかに、 構造体struct sockaddr_inを bindやaccept, connectなどの関数に渡す際に、 struct sockaddr*にキャストして渡します。 正直、僕にとっては、構造体へのポインタのキャストって、 イメージしづらい と感じます…

Perlでファイルを逆順に読む

Perlでファイルを下から1行ずつ扱いたい時、File::ReadBackwardsモジュールが便利なんです。 まあ、頻繁に逆順で読むのか、というと、そうではないのですが、いざ逆順に読みたいという時には便利です。 標準ライブラリではないはずなので、CPANからインスト…

PHPのGDを齧ってみる

PHP

PHPの独学に用いた参考書の中に、GDで画像操作が出来るというのを知ったのですが、色々応用して使ってみたいと思うようになったので、ちらっと齧ってみることにします。 以下はテキストフォームから文字列を受け取り、画像として出力するプログラムです。 入…

JavaScriptの即時関数内でarguments.calleeプロパティを使って再帰する

JavaScriptでプログラムを組んでいて、使い捨ての関数を再帰的に呼び出したいと思い、即時関数とarguments.calleeプロパティを使うことにしました。 arguments.calleeプロパティはJavaScriptの参考書で読んだことあるので知っていたんですが、いつ、どこで即…

JavaScriptのメソッドで自身のクラスの他のメソッドを呼び出したい

タイトルが長ったらしいですが、実際に自分が詰まったので、このタイトルで書くことにしました。 例えば、Hogeクラス内に、hogeメソッド、hogehogeメソッド、piyopiyoメソッドを定義し、hogeメソッドから3秒カウントダウンする間にhogehogeメソッドを呼び出…

システムコールで遊んでみる その3

今回はlseekというシステムコールについて、適当に書いていこうと思います。 lseekは、ファイルポインタを指定の位置に動かします。 プログラム例を以下に示します。 #include <fcntl.h> #include <unistd.h> int main(int argc, char **argv) { int fd; char buf[65536]; if(ar</unistd.h></fcntl.h>…

UNIX ファイルディスクリプタに触れてみる その2

UNIX ファイルディスクリプタに触れてみる その1では、 標準入力、 標準出力、 標準エラーについて書きました。 今回は、リダイレクションについて書こうと思います。 また、3以上のファイルディスクリプタについても軽く触れようと思います。 リダイレクト…

UNIX ファイルディスクリプタに触れてみる その1

システムコールで遊んでみる その1 やシステムコールで遊んでみる その2でも出てきていますが、UNIXシェルから見ていくことにしましょう。 ファイルディスクリプタ(file descriptor)はファイル記述子とも呼ばれます。 Cのヘッダファイルunistd.hでは標準入力…