追記(2018/07/19) 処理速度ではなくてプログラムの起動時間というご指摘を受けたのでタイトルを修正しました🙏🙏 純粋な処理時間の測定は別途行おうと思います.後半の感想の部分は読み流して頂けると 🙇 🙇 目的 今回は以前のエントリで書いたようなPerl6の正規表現などを使い同じ処理をするプログラムが,各言語でどういったパフォーマンスの差が出るかの検証を行います. 題材 題材としてはmac os Xの /var/log/system.logのデーモンの回数を数え上げるというプログラムです. 処理の流れとしてはまずコマンドライン引数を確認し,それに応じてファイルを開きます. 開くことが想定されている/var/log/system.logファイルは次のような形式になっています. Jul 18 01:31:55 anatofuzMBP Dropbox[96084]: [0718/01
前提 Windowsのフリーソフト使えばできそうだが怪しいやつしかないしインストーラ使わなきゃいけないやつばかりで環境的に無理。 Linuxでちゃちゃっと出来たらいいな、と思って調べた。 結論 Perlスクリプトを書く 参照 linux - Is there a way to change a .iso files volume id from the command line? - Server Fault # !/usr/bin/perl use strict; use warnings; die "Use: $0 <iso_file> <new volume id>\n" unless @ARGV == 2; open my $file, "+<", $ARGV[0] or die "Cannot open: $!"; seek $file, 0x8028,0; printf $fi
この記事は 「DeNA IPプラットフォーム事業部 Advent Calendar 2017」 11日目の記事です。 こんにちは。 @kaneU です。 マンガボックスという、スマホ向け電子書籍サービスのサーバーサイド/フロントエンドの担当をしています。 実はマンガボックスは、最近12月4日でサービス開始から4周年を迎えることができました。 ありがたやありがたや はじめに 深層学習や機械学習に関する記事や書籍を読むと、Pythonを使ったものが多いかと思います。 Python周りのライブラリの充実度を考えるとこのような流れは当然なのですが、 ここで僕は思うわけです。 「Pythonで出来て、Perlで出来ないわけはない!」 と。 実際、PerlにもPDLというNumPyに相当するモジュールが存在しています。 ちょこっと使う分にとても便利だし、もっと知られてほしいなと思っていたりします。 そ
前回の(1)はこちらから。 実例を交えた使い方 Test2::V0には、比較以外にもテストを書くときによく使うツールセットが用意されています。ここで代表的なものを紹介します。 オブジェクトのモック 外部APIに接続する処理をテストする際に、クラスやオブジェクトのメソッドを書き換えて特定のレスポンスを返すようにモックすることがあります。直接メソッドを書き換える方法もありますが、それではテスト後に書き換えたメソッドを戻すことやネストしたときの扱いに気を付ける必要があります。 mock関数を使うと、宣言されたスコープ内でのメソッドの上書きできます。 package Foo { sub doit { 'A' } } { my $mock = mock 'Foo' => ( override => [doit => sub { 'B' }], ――(1) ); is +Foo->doit, 'B',
仕事の都合により他人が作ったPerlプログラムを改修することになりましたが、Perlプログラムはやったことがありません。ということで仕事の前準備を兼ねてPerlプログラミングについてメモです。自分のためのメモが主用途ですので、今更プログラミングの基礎を書くつもりはなく、C言語か、その他の一つ以上プログラミング言語に精通している前提で進めています。C言語とPerlの大きな違いはコンパイル型かインタプリンタ型で大きく違いますが、そこらはとりあえずさて置きましょう。 Perlの基本的な文法は、命令(引数); 命令(引数1,引数2,引数3); 命令文1;命令文2;基本的にC言語と同じ形式ですね。「;」が処理区分になっていますので、「;」の前に改行があろうが、同じ行に「;」が複数あろうが構いません。Perlで命令文といわれる各機能関数はC言語とは違い、括弧でくくるのではなく、空白で区切ります。その点
PerlのScalar::Util にある weaken について学んでいたところ、誤解していた点があったので覚え書き。 以下のように、同じリファレンス値を持つ変数を2つ作り、片方だけを weaken することを考えます。 use strict; use warnings; use feature qw(say); use Scalar::Util qw(weaken isweak); my ($a, $b); $a = $b = {}; weaken $a; say "\$a = $a is ", isweak $a ? 'weak' : 'strong'; say "\$b = $b is ", isweak $b ? 'weak' : 'strong'; 自分は、$aも$bもリファレンスとしては同じ値なのだから、$aをweakenすれば$bも弱くなる、という風に思っていたのですが、結
Perlはクラスの仕組みがわかりにくいというご意見をいただいたので、Perlコアだけで、クラスを作成する方法を簡単に解説したい。 理解している方からすれば、そうは感じないかもしれないですが、書くのはeasyかもしれないですけど、どう考えてもsimpleではないですよね〜… ・暗黙の了解としてのいろいろな記法、仕組み ・Classの仕組み ・調べにくい記号 ・IDEの恩恵を受けれない 他のLLから乗り換えるとこの辺りでしょうか— serinuntius (@_serinuntius) September 18, 2018 Perlのクラス構文はパラダイムが違う Perlには、クラス構文がないのよ。だから、javaとかrubyから始めて、Perlを使うと、Perlには、クラス構文がないから、簡単に書けないと感じるのね。 Perlのパラダイムでは、こうなります。 オブジェクトとは、データに名前空
偶然暇だったら出ましょうということでid:takuya-aとid:shiba_yu36とチームを組んで出た.チーム名は「ディメンジョナルハイソサイエティぬれねずみ」で,サークル名ジェネレータで決めた.僕は3回目で過去2回は予選敗退,二人は初参加. www.doujinbu.com 準備 事前準備はだいたいしばゆーがやってくれて助かった 最初はGoでやるかって言ってたけど慣れたPerlになった.練習する時間はないので,ぶっつけ本番で問題の質によって言語を決めようという話をしていた デプロイはrsyncで 初参加の年はソフトウェア工学を重視しCircleCIが通ったら自動デプロイしていた これが最悪で,急いで手で書き換えてデプロイしたら自動デプロイが走ってロールバックされたり,ベンチマーク実行中にデプロイされたり 去年はrsyncでデプロイしていて,コミットする前にデプロイしてうまくいったらコ
I’m excited to announce the release of Mojolicious 8.0 (Supervillain). This release marks the culmination of a 2 year development cycle, reaching its conclusion last week at Mojoconf in Norway. Where we were fortunate enough to have the whole core team present, for many very productive discussions and some crazy fun experiments to get async/await working with Perl and Mojolicious. The project has
JPAスタッフの id:papix です. 以前, Shibuya.pmにて「来年2019年... 但し2018年度のうちに開催する」と予告していた「YAPC::Tokyo 2018」改め「YAPC::Tokyo 2019」ですが, ついに日程と会場が決定いたしました! yapcjapan.org 上記ティザーページでも公開しましたように, 「YAPC::Tokyo 2019」は2019年1月26日(土曜日), 浅草橋ヒューリックホール&カンファレンスにて開催いたします! 前夜祭についても, 同会場にて2019年1月25日(金曜日)に開催することとなりました. 引き続き, トークの募集やチケットの販売につきましても, 準備が完了し次第案内していきます. 詳細は, このブログやYAPC::JapanのTwitterアカウント(@yapcjapan)などでお知らせしていきます. お楽しみに!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く