タグ

ブックマーク / qiita.com (451)

  • Rust言語で簡単なcatコマンドを実装してみた - Qiita

    2015年には1.0が公開される予定のRust言語の勉強のために、Unixコマンドを簡略化してRustで実装してみた。 すでに、uutils/coreutilsプロジェクトでcatコマンドは実装されていますが、今回はふつうのlinuxプログラミングというのサンプルコードを参考にしました。 ※ コードはここのレポジトリに公開するので、「もっとこう書けるよ」みたいなのがあれば、プルリクお願いします。 C言語でのcat #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> static void do_cat(const char *path); static void die(const char *s

    Rust言語で簡単なcatコマンドを実装してみた - Qiita
    akanehara
    akanehara 2017/09/05
  • git logのフォーマットを指定する - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    git logのフォーマットを指定する - Qiita
    akanehara
    akanehara 2017/08/25
  • Pythonで音響信号処理 - Qiita

    Python その2 Advent Calendar 2015の13日目の記事です。 普段の仕事として主に音響信号処理のアルゴリズム開発やDSP実装などを行っているのですが、アルゴリズムを構築する際は最初にPythonを使ってアルゴリズムの検討を行い、その結果を踏まえてCやC++PC上で動作するリアルタイムモデルを作成するという流れで行っています。音響信号処理に関するまとまった日語記事は意外に存在しないため、ここではPythonで音響信号処理を行う方法およびこれまでに仕事等で使って来たノウハウなどを適当にまとめようと思います。 目次 Pythonで音響信号処理をするモチベーション オーディオファイルの読み書き リアルタイムにオーディオ処理を行いたい 周波数応答を表示したい デジタルフィルタを設計したい 零点、極と係数配列b, aを変換したい デジタルフィルタを時系列信号に適用したい 群

    Pythonで音響信号処理 - Qiita
  • numpyでスペクトログラムによる音楽信号の可視化 - Qiita

    この記事はeeic Advent Calendar 2016 9日目の記事 その1 です。 去年はコード進行に関する記事を書かせてもらったのですが、あんまり情報系っぽくないですし、 【eeic向けアンケート】eeicアボベンドカレンダーの記事を考えてるんですが、どっちの方がいいか意見聞きたいです — なまおじ (@namaozi) 2016年11月8日 アンケートでは音楽プログラムの話の方が優勢だったので今回は音楽情報処理の話題で書きます。 この記事でやりたいこと スペクトログラムをpythonで実装してみる話 数学・プログラミング分からない人でも読めるようにしたい できるだけ定性的で音楽的な話を入れたい eeicと音楽情報処理について 内輪向けなので興味ない方は飛ばしてください>< 実は上記の実装は神ライブラリを使えば3行くらいで書けてしまうのですが、せっかくなので極力高度なライ

    numpyでスペクトログラムによる音楽信号の可視化 - Qiita
    akanehara
    akanehara 2017/08/18
  • GitHub English Challenge Cheat Sheet - Qiita

    GitHub上の実際のコミットメッセージやIssueのやりとりをみて、チートシート作りました。 共通的なこと コミットメッセージやIssueのタイトルは、主語省略し、1文で書き行末ピリオドは付けない 動詞は現在形・過去形のどちらも同じくらいの頻度で見られるが、どちらかに揃える。 コミットメッセージを書く Japanese English

    GitHub English Challenge Cheat Sheet - Qiita
    akanehara
    akanehara 2017/07/27
  • 「追跡ブランチ」って言うのやめましょう - Qiita

    TL;DR 突然ですがクイズです。「追跡ブランチ (tracking branch)」という言葉の使い方で正しいのはどれだと思いますか? origin/master はリモートリポジトリの master を追跡する追跡ブランチである origin/master はローカルの master に追跡される追跡ブランチである ローカルの master は origin/master を追跡する追跡ブランチである 現在の正解は多分3番です。過去には1番でした。 分からなかった方、分かったけど他人に「追跡ブランチ」と言って伝わるか不安な方。大丈夫です。正確な用語1で言い換えることにしましょう。 origin/master はリモートリポジトリの master を追跡するリモート追跡ブランチ (remote-tracking branch)である origin/master はローカルの master

    「追跡ブランチ」って言うのやめましょう - Qiita
    akanehara
    akanehara 2017/07/27
  • 音楽アプリのための音声解析入門 - Qiita

    Courseraで受講したAudio Signal Processing for Music Applicationsの内容のまとめです。単純にトラックを再生するだけではなく、一歩踏み込んだものを作りたい、というときの入り口になる・・・と思います。 音声解析の目的 音声解析とは、ざっくりいえば「聞こえてくる音声がどんな周波数の音で構成されているか」を明らかにすることです。これをスペクトル解析といいます。 これを明らかにすると、以下のようなことができるようになります。 音の構成から、特徴づけを行う(楽器・発話者の特定、音楽のジャンルの推定など) 目的の周波数以外の音を除外する(フィルタリング) 音の合成によって目的のサウンドを構成する(シンセサイザーなど) 上記の点にもある通り、分解(解析)が上手くできれば、その逆の合成によって音を作り出すこともできるようになります。つまり、音楽解析は全体と

    音楽アプリのための音声解析入門 - Qiita
  • Linuxのパッケージをアップデートしたあとrestartが必要なプロセスを見つける方法 - Qiita

    はじめに 脆弱性対応のためのアップデート作業というものは頻繁に発生するものですが、番運用しているシステムではサービスへの影響を最小限にしたいものです。 アップデートした後、出来ることなら必要なプロセスだけリスタートさせることで済ませたいのですが、どのプロセスをリスタートすれば良いのか、そもそもOS再起動しないと反映されないものなのか、判断が付かない場合が少なくありません。 そのような場合のため、再起動が必要なプロセスを見つけたり、OS再起動が必要かどうかアドバイスしてくれるコマンドがあります。 Redhat系 「yum-utils」パッケージに入っている「needs-restarting」コマンドを使います。 # needs-restarting -h Usage: needs-restarting: Report a list of process ids of programs th

    Linuxのパッケージをアップデートしたあとrestartが必要なプロセスを見つける方法 - Qiita
    akanehara
    akanehara 2017/06/27
  • Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv - Qiita

    Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv Pythonvirtualenvpyenv 追記 2017/01/29 突っ込み記事を書いていただきました。ありがとうございます。 Pythonの仮想環境構築 2017.01版 コメント欄で@shibukawaさんも述べられていますが、virtualenvとvenvはほぼ同じなので、実質はpyenv or virtualenv(venv)の2択だけど、virtualenvが既にデファクトスタンダードとして地位を確立しているとのこと。 記事内ではpyenv推しをしていますが、virtualenvを使うことにします。僕はライトPythonユーザなので周辺環境はできるだけデファクトに乗っかって楽をしたいので。 はじめに Pyt

    Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv - Qiita
    akanehara
    akanehara 2017/06/14
  • Webアプリケーション開発者から見た、MVCとMVP、そしてMVVMの違い - Qiita

    RubyOnRailsを触れる過程でMVCという概念を学び その後、他のフレームワークでMVCやMVP、MVVMというものを知ったのですが Railsで語られるMVCと他で語られるMVCのニュアンスが若干違うので そこを基点にMVCの違い、そしてMVP、MVVMとは何なのかをまとめてみました。 MVC(Model,View,Controller) 定義としてのMVC 上記でも挙げた通りMVCは使う場面やフレームワークによって ニュアンスが異なっています。 そのため根的な「MVC」の一般的な定義は一体どんなものなのかを見てみました。 Wikipediaからまとめると以下のとおり。 アプリケーションソフトウェアの内部データを ユーザーが直接参照・編集する情報から分離する。 そのためにアプリケーションソフトウェアを 「Model」「View」「Controller」の3つに分割する。 ・Mod

    Webアプリケーション開発者から見た、MVCとMVP、そしてMVVMの違い - Qiita
    akanehara
    akanehara 2017/06/14
  • Pythonの音声入出力 - Qiita

    音声を入力して何かしらのフィルタを掛けて出力するプログラムを実際つくってみようとPythonでやってみた際、入出力であたふたしたのでまとめました。一般的な音声ファイル(サンプリングレート44100Hz、量子化ビットサイズ16bit)のファイル基準で書きます。 音声の入力 入出力はwaveファイルを利用し、waveパッケージをインポートします。 import numpy as np import wave name = "filename.wav" wavefile = wave.open(name, "r") framerate = wavefile.getframerate() data = wavefile.readframes(wavefile.getnframes()) x = np.frombuffer(data, dtype="int16") waveファイルから音声を入力する

    Pythonの音声入出力 - Qiita
    akanehara
    akanehara 2017/05/29
  • flock(1)でシェルスクリプトの排他制御(Linux) - Qiita

    シェルスクリプトで排他制御したいケースがたまにあります。 「多重起動の抑制」「二重起動の禁止」などとされることもあります。よくやるのは pid ファイルを作成したりロックファイルを作成したりだと思いますが、「ファイルの有無」とか「プロセスIDのチェック」がどうも不安定に感じていました。ファイルシステムの排他ロックとか簡単に使えればいいのに…! 調べてみると、flock(1) なんていう便利なものがあることがわかりました。 http://linux.die.net/man/1/flock http://luna2-linux.blogspot.jp/2011/08/flock.html 第二版 あえて、「singleton.sh を source することでスクリプトを排他制御する」という構成にこだわる。 # 利用者はこのファイルを source します _LOCK_FILE=$0.lock

    flock(1)でシェルスクリプトの排他制御(Linux) - Qiita
    akanehara
    akanehara 2017/05/23
  • MeCabをブーストさせよう - Qiita

    はじめに MeCabとは日語の形態素解析器をいいます。ここで、形態素というのは言語で意味を持つ最小単位のことです。分割された単語をベクトル化したり、各語彙の頻度を調べたりするために、最小単位に分割するモチベーションが生じます。 そもそもなぜ、形態素解析なんかやるの?っていう動機については、http://qiita.com/Hironsan/items/2466fe0f344115aff177 とかに書かれている通り、(上記の記事では、単語の分割が形態素解析に当たります)、分割された単語をベクトル化したり、各語彙の頻度を調べたりするためです。今回は、MeCabを用いて、できるだけ、精度高く分かち書きできるように頑張ります。1 追記) もう一つのMecabをブーストさせよう(Google Search Console編: https://qiita.com/knknkn1162/items/

    MeCabをブーストさせよう - Qiita
    akanehara
    akanehara 2017/05/22
  • 【Mac】自分の画面を録画して、即gif動画化する方法 - Qiita

    Gif動画はとっても便利 GitHubやQiita等で自分の画面の挙動を誰かに伝えたい場合に、動画で表現できると伝わりやすいですよね。そんなとき、サクサクとGif動画が作れるととても便利です。 この記事では、下のような動画GIFを簡単に作れる方法をご紹介します。 ※Macユーザーを想定しています。 QuickTime Playerで画面を録画する まずはQuickTimePlayerを利用し、画面を録画します。 普段QuickTimePlayerを使わない方でも既にアプリケーション>ユーティリティの中にあるケースが多いです。もし、持っていないければダウンロードしてください。 画面収録方法 ①QuickTimePlayerを開き、ファイル>新規画面収録をクリックします。 ②「画面収録」の赤い丸をクリックします。 ③下記のような画面が出たら、クリックし続けながらマウスを動かすことで範囲を指定で

    【Mac】自分の画面を録画して、即gif動画化する方法 - Qiita
    akanehara
    akanehara 2017/05/18
  • sedのパターンスペース・ホールドスペースの動作を図で学ぶ - Qiita

    概要 sedは、入力ストリームに対して様々なテキスト変換をおこなう、ストリームエディタです。 cut, grep, trといった基的なフィルタコマンドと比較して、柔軟なテキスト処理が可能です。 このsedの機能の1つとして、パターンスペース・ホールドスペースがあります。 高度なテキスト処理が可能になる反面、パターンスペース・ホールドスペースは、動作が理解し辛いという難点があります。 ですが、sedのパターンスペース・ホールドスペースの動作を丁寧に解説した記事は、私が探した限りでは見つかりませんでした。 そこで、sedを深く学ぶ方への助けとして、また私自身の復習として、sedのパターンスペース・ホールドスペースの動作を、記事としてまとめました。 記事では、sedのパターンスペース・ホールドスペースの動作を、図示して解説します。 実行環境 Arch Linux 4.8.8-2-ARCH G

    sedのパターンスペース・ホールドスペースの動作を図で学ぶ - Qiita
  • gzip圧縮されたデータの展開方法いろいろ - Qiita

    はじめに PHPで以前、ローレベルなソケット通信処理をガリガリ書いていたときに、gzip圧縮されたストリームの扱いに大変苦しんだ覚えがあります。今になってようやく解決策を得たので、ここにまとめさせていただきます。 gzipだとかzlibだとか全然詳しくありません。憶測で書いてる部分も多いです。詳しい方、間違っているところを発見したら是非コメント欄にて指摘お願いします。 検証に協力して頂いた @nullkal さんと @_wata1221 さん、ありがとうございました!ずっと悩んでいたことがスッキリして嬉しい限りです! gzipのおさらい deflate, gzip, zlib の違いって何? 名称 説明

    gzip圧縮されたデータの展開方法いろいろ - Qiita
    akanehara
    akanehara 2017/04/18
  • Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita

    はじめに 非同期プログラミングと呼んでいるのは、ノンブロッキングIOと select, poll, epoll, kqueue のようなIO多重化を利用したネットワークアプリケーションを書くことです。 node.js で websocket 使ったチャットを書くとかそういうのです。 「他の多くの言語」とは、 Python (asyncio), node.js, C# などを想定しています。 Erlang や GHC なんかは Go に近いかも知れません。 async / await がない言語では、「コールバック地獄」や「deferred地獄」のような問題もありますがこの記事では扱っていません。 async / await のメリットを解説した他の記事を参照してください。 あとこの記事は主にランタイムに関する部分を扱っているので、「それは言語じゃなくて処理系の問題だ!」等の頓珍漢な揚げ足取

    Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita
    akanehara
    akanehara 2017/04/02
  • Go言語のFunctional Option Pattern - Qiita

    オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe

    Go言語のFunctional Option Pattern - Qiita
    akanehara
    akanehara 2017/04/02
  • HTML の表 (<table> タグ) をスクレイピングする時も pandas が超便利 - Qiita

    HTML の表をスクレイピングするのは結構だるい作業です。 私は以前は、単純な HTML であれば、うまく特徴を見つけて awk や sed を作ったり、 Perl の正規表現で取り出したり、 Google Chrome のコンソールから XPath を使って取り出すような苦労をやっていました。 ところで pandas というとデータ解析用のツールとして主流ではあるのですが、 意外にも HTML からのデータ入力も可能になっていて、これが表のスクレイピングにはかなり楽だということがわかりました。 なので紹介してみます。 サンプルに使うページ 以下で示すサンプルに国税庁の所得税の税率のページを使うことにしました。 https://www.nta.go.jp/taxes/shiraberu/taxanswer/shotoku/2260.htm (2019.9.28 移転したようなので、URLを

    HTML の表 (<table> タグ) をスクレイピングする時も pandas が超便利 - Qiita
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
    akanehara
    akanehara 2017/03/22