サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
perlcodesample.hateblo.jp
Perlが古いというよりは、Perlに関するWebの情報が古すぎる問題。 Perl自体は、緩やかに成長して、必要な分野で、最新の手法に対応できるように、キャッチアップされていますし、Perl自体のメンテナンスも継続されています。 一方で、Perlに関するWebの情報は、正しくアップデートされておらず、正しくPerlを知るためには、上手に検索する必要があります。 Perlが古いというよりは、Perlを正しくユーザーに伝えることを避けてきた、Webメディアの情報が古すぎるのでした。 ちゃんちゃん。
PerlのDockerコンテナ化に関する考察を書いてみる。僕は、Dockerをまだ使ったことはないので、実現できない部分に気が付いたのであれば、コメント歓迎です。 OSのデフォルトのPerlを使ったほうが良い理由 コンテナ化する場合は、perlbrewやplenvでインストールするPerlよりも、OSが提供しているシステムPerlを使う方が良いと考えます。 システムPerlは、OSのパッケージ管理コマンドで、試験済みのバイナリのPerlが、数分以内でインストールできるからです。 perlbrewやplenvは、ユーザー領域に、Perlをソースコードからインストールして使るようにするという仕組みです。 この仕組みは、便利すぎますが、コンテナ化との相性を考えた場合は、インストールに時間がかかる、容量が多くなるというデメリットになります。 環境構築用サーバーを準備したほうが良い理由 Perlのソ
ついこないだの、北海道.pmのcodehex君のスライドを紹介。 木をたどっているよ!!! コマンドを左から順に解釈する仕組み。 speakerdeck.com codehex君「六本木.pmやるぞー」ということなので応援。会場はメルカリなのかな。たぶんメルカリなのかな?
git rebaseの使い方をやっと理解したので忘備録を書いておこうっと。 他の人とのやりとりはgit mergeだけで十分 普段の作業はgit mergeだけで十分。ほぼすべての場合は、git mergeだけで十分。これを肝に命じておく。 git rebaseはコミット粒度を上げるためにgit branchとセットで使う git rebaseとは、小さな多数のコミットを、ひとつのコミットにまとめたいときに使う。 少し修正して、commit、試験。少し修正して、commit、試験。少し修正して、commit、試験。普段の作業はこんな感じじゃないのかな。 でも、コミットのメッセージを書く単位よりも小さく、コミットしたいときはよくある。ここ一行だけ変えて、試験したいとかね。コミット粒度を小さくしておけば、間違った部分だけを、git revertで戻せるし、git resetで戻れるから。 gi
例外の実装について調べたり考えたりしていた。 一番多い内部実装はなんだと思いますか? 「うーん、ちょっと内部まではわからないなぁ」「何らかの方法でジャンプしてたりするのかな」 僕が調べた範囲では、setjmp、longjmpを使っている実装が多かった。 Java, C++, rubyなど。 setjmp、longjmpの魔 setjmp、longjmpは気をつけてつかわないといけない関数だ。 setjmpは、関数を超えて、ジャンプできる。 関数から、他の関数へピヨーンとひっととび。 setjmp, longjmp とは setjmp, lognjmp は古典的に標準ライブラリ関数として実装されているCライブラリ関数である。setjmp, longjmp はペアになって、関数の外にジャンプする機構を実現する。よろしいか、goto 文がたかが関数内部での制御の移動を実現するのに引き換え、この
言語の設計思想として、あらゆるものをオブジェクト指向にしようという発想がある。言語の中で扱われるすべてのものが、オブジェクトとなる。 つまり、オブジェクトが先に存在して、そこにメソッドが生えているという考え方だ。 これは、オブジェクトとメソッドが密結合しているともいえる。 これに対して、もう一つのアプローチをとる言語も存在する。 データと関数の組み合わせでオブジェクト指向を実現する 一方で、オブジェクトというあくまで補助的なもので、まず先に、データと関数が存在して、その組み合わせによって、オブジェクト指向を実現しようという言語がある。 この言語の代表は、Perl, Python, Goである。 これらの言語は、関数の第一引数に、自分自身のオブジェクトを表現するものを受け取る。たとえば$selfという表現で受け取る。 sub foo { my ($self) = @_; } これらは、不完全
PerlではCPUリソースをフル活用できないって本当? これは、半分くらいは当たっているけれど、半分くらいは間違っている。 プリフォークすれば、CPUリソースをフル活用できる Webサーバーの構成なんかを考えてほしいんだけれど、MojoliciousなんかのWebサーバーは、プリフォーク + 非同期I/Oという構成をとっている。 経験則についてMojoliciousのドキュメントに書かれているのだけれど、CPUの個数 × 2 にプリフォークする子プロセスの数を設定するとパフォーマンスが最適になるらしい。 つまり、CPUが4つある場合は、フル活用したい場合は、Mojoliciousのhypnotoadの設定ファイルで、フォークする子プロセスの数を、8にすればよいわけだ。 { workers => 8 } forkというのは、プロセスを作成するコマンドで、複数プロセスを立ち上げれば、CPUリソ
SPVMでJITの実装を進めているだけれど、バージョン1.0に向けて、どうしても実装しておかないといけない機能がある。 それは、バイトコードのループの途中で、ループの回数が増えた時に、ループの途中でJITのコードをコンパイルして、そのまま処理を移し替えるオンスタックリプレイスメントだ。 JavaのHot Spotはもうとっくの昔に、実装している。 オンスタックリプレイスメントがないとどうなる もしループ処理が初回に1億回、回って終わるまで待つとしたら、それが終わるまでJITできない。サブルーチンが1万回実行したら、JITしようという実装は、ループに対応ができない。 だから、ループの途中で、バイトコードからJITでコンパイルされた機械語に切り替える処理が必要になる。 実装方法は、今考えている。 関数はデータ領域と処理からなる プログラムというのは、関数の集まりだ。関数というのは、「引数やロー
僕の開発しているシステムは不動産屋さんのシステムだけど、規模があんまり大きくないので、mysqldumpで十分運用できるサイズだ。 mysqldumpコマンドはMySQLのデータベースを、テキスト形式にして保存できるコマンドだ。テーブル定義とSQLコマンドが列挙されている。 mysqldumpは、10秒以内くらいで終わる。以下のようなコマンドを打つ。--optと--single-transactionはつけるようにすると丸暗記。 mydqldump -ukimoto -p --opt --single-transaction db1 > db1.dump 本番機のデータベースのデータは2ヵ所にバックアップしている 本番機のデータベースのデータは、2ヵ所にバックアップするようにしている。rsyncコマンドで、バックアップ用のふたつのサーバーに、ダンプしたデータをコピーする。もちろんcronを
Perlを30倍速くするSPVMプロジェクトなんだけれど、今やっているLinuxの環境で、JITコンパイルに成功しつつある。とてもいい感じで、IoTと人工知能とWebを結び付けるという目標に少しづつ近づいている。 PerlでJIT SPVMはPerlと非常に近い文法で書ける。そして、これをJITでコンパイルすることが、直近の目標。おそらくPerlのプロジェクトでJITというのは、世界初の試みだ。 実行時に機械語にコンパイルすることによって、実行時のパフォーマンスを飛躍的上げることができるJITの実装にLinuxの64bit環境で成功した。 予想より時間のかかるGCCのコンパイル JITの実装には成功したのだけれど、GCCのコンパイルは予想以上に時間がかかることがわかってきた。C言語をGCCでコンパイルするというのは、予想以上に、CPUを使って、時間がかかる。 あのPerlのスッとコンパイル
僕は、今いる会社では、システム開発に加えて、会社のサービス開発の基礎的な知識として、マネジメントとマーケティングを勉強してる。 マーケティングにおける差別化 マーケティングには、差別化という考え方がある。差別化というのは、簡単にいうと、自社の強みは何かということだ。他社にはまねするのが難しい、自社の強みは何か。 Perlに置き換えてみると、Perlの強みは何か。他の言語では真似するのが難しい、Perlの強みは何かということだ。 マネジメントにおけるコアコンピタンス マネジメントにおいても、まったく同じ概念が異なる言葉で登場する。それは、コアコンピタンスという言葉だ。まったく同じで、自社の強みは何かを考えるということだ。 Perlは激しい競争にさらされ続けてきた Perlは、一度はブームを巻き起こした後に、Perlを改善したと呼ばれる言語から、激しい競争にさらされ続けてきた。 言語の機能はよ
Perlは、ずっと長い間、Perlから派生した言語のユーザーから、否定され続けてきた言語だ。 「Perlをやらすなんて老害」「Perlはオッサン」「若者にPerlを押し付けるな」「Perlは死んだ」「Perl言語から〇〇言語へ」 若い人たちは、流行に敏感だ。自分が「イケテナイ」ことなんてしたくないよね。でも、ネガティブキャンペーンをする人たちは、若い人たちの特徴を知っている。「かっこ悪い」とか「流行からはみ出している」とか「自分だけダサイ」とか、若い人は、非常に気にするということだ。 ネガティブなメッセージがWebにあふれていると、若い人たちは、将来に希望を抱けないし、関わっても意味がないんじゃないかと思うし、みんなでワーワー騒げた方が楽しいと感じる。 ネガティブキャンペーンを使ってマーケティングを行うコミュニティは、そのことを知っている。 古いプロジェクトと組み合わせて、新しいモジュール
このページを最初にブックマークしてみませんか?
『ユウキ木本のPerl元気ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く