サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
blog.satooshi.jp
ベトナムから日本に帰国して数ヶ月経った。精神的にも落ち着いてきたので、ようやくこのブログを再開することにした。 2013年5月末にベトナムに到着し、6月から勤務を開始した。2016年6月末をもって3年間のベトナム現地企業での勤務を終了した。度重なる契約違反、労働法違反は改善される見込みが全く無かったため、この違法企業を退職し日本に帰国した。 契約書にも8時間勤務であることは明記されているにも関わらず、残業を強要された上、残業代を支払う会社ではなかった。これはベトナムの労働法においても明らかな違法行為である。帰国後の当面の生活費と、英語留学の費用を貯めておかなければいけなかったため、本来得られるはずだった賃金が支払われなかった事で、これだけの長期間になってしまった。 本エントリーでは、その労働法違反の詳細を記載する。なお、私がホーチミンで勤務していたのは、日本人が創業した人材紹介会社である。
PHPもPostgreSQLもやったことないのに、そんなシステムを作り直すことになり、運用し始めたら、パフォーマンスがどんどん低下していくというワナにはまったので、ちゃんとメモしておく。PostgreSQLのチューニングには、postgres.confで設定値を変更する方法や、定期的にVACUUMする方法などがあるらしい。今回作ったシステムは、参照よりも更新レコード数が多い場合なので、一日一回VACUUM、REINDEXするという方法が効果的だった。これでも遅くなるようならダンプ&リストアしかないかもしれない。 チューニング方法 測定 postgres.conf トランザクション VACUUM REINDEX ダンプ&リストア システム概要 PHPスクリプトをcronで定期実行 一日の更新レコード数は100万件~150万件程度 PostgreSQL 7.3(既存DBを使う条件なので、新しい
I need to load configuration from yaml file Rubyって、標準ライブラリでyamlを扱えるらしい。というメモを書くだけの簡単なお仕事。なぜ必要だったかというと、Google APIの設定ファイルがyamlだったから、というお話。 Wrote Octopress popular posts plugin but it needs refactoring OctopressのプラグインにはPopular Posts Pluginがあるけれど、このプラグインはGoogleのpage rankに基づいて人気具合が算出されるらしい。このブログのように、ページランク0の弱小ブログにとっては、意味がない。ということで、Google Analytics APIから取得できるPVを使って、人気具合を算出するプラグインを書いた。 GitHubに上げようと思ったけれど
このエントリはPHP Advent Calendar 2013 – Qiitaの25日目です。 Enumを作りました。GitHubに置いてあります。satooshi/ValueObject。参考にしたのはC#のEnum。未実装の部分もありますが、よく使いそうなメソッドは実装しました。
初心者ぺちぱーがGitHubでScalaレッスンを始めたぞ。今回はScalaの標準的なビルドツールであるsbtの使い方の続き。クロスビルドとか、設定に使う演算子みたいなメソッドとか、継続ビルド(continuous build)とか、そのへんの話。 Cross-building and library dependencies setting 前回はほぼマニュアル通りの設定ファイルを書いてみた。これにもう少し設定を追加してみよう。 Getting-Started/Cross-buildingによると、crossScalaVersionsを指定しておくと、クロスビルドできるようだ。Scalaカンファレンスで聞いた話だと、バイナリーバージョンが違うと、ライブラリが使用できないらしいので、もしGitHubなんかでライブラリ開発をするような場合は、クロスビルドしておかないと対応可能なはずのバージョ
先日公開された、クックパッドがChankoを2.0に増量しました、というエントリーを読んでいたら、Travis CIと連携するサービスが2つ紹介されていた。CoverallsとCode Climateだ。それぞれ、カバレッジ計測、静的コード解析のサービスとなっている。CoverallsについてはAPIが公開されているので、PHPで書いたライブラリをGitHubに公開してみた。 php-coveralls これ。 satooshi / php-coveralls CoverallsはTravis CIとか、他のCIサービスと連携して動くサービスなので、GitHubにpushしたタイミングで、CIサーバーでテストが実行され、そこで計測したカバレッジが登録される、という流れ。 ビルド毎のコードカバレッジ一覧。 タイムライン。 いいテスターとわるいテスターも表示される。 ビルドの詳細。 ファイルの
doctrineのコマンドを実行して、自動生成されたentityのsetter、getterに関するテストは自動生成されてほしい。 こんなところでカバレッジが落とすのもちょっとね、、、 そもそも自動生成されたコードなんだから、テストケースも自動生成されてほしい テストコードのないentityがそれなりに数が多いっていうか。entityもそれなりの数のプロパティを持っていたりしてだな。なぜか手書きのコードが多くてだな。うむ。 よく分かる言い方をするとだ。手抜きしたい。そんな話。 What I want こんなテストコードジェネレーター欲しいす。なければ作るか。 constructionした時の状態に関するテスト getしたらnullが取得されること ArrayCollectionの場合、getしたら空のArrayCollectionオブジェクトが取得されること getter、setterに関
ホントは6/8に書こうとして書きかけたエントリーだけど、必要な生活用品を買ったり、近所の店をうろちょろしたり、道を覚えたり間違ったり、ちゃんと生活のリズムを作るのに時間がかかってしまって、中々続きを書けなかった。仕事もそれなりに忙しいけど、それはまた別の機会に。 初めての海外暮らし。初めての東南アジア。ベトナム、ホーチミンに来てから2ヶ月以上が過ぎていた。 facebookには、やいのやいの書いていたので、その辺もパクリつつ。自分がどんな事を感じたのか、ちょっとだけメモ書きを残しておこうと思う。 5/29 日本出発 昨年、アメリカ旅行に行った時は深夜まで荷造りしてて、ほぼ寝れずに失敗したので、今回は出発前日までに、ある程度スーツケースに荷物を入れていたけれど、やっぱり当日の夜3時過ぎまで色々やることがあって、またあんまり寝れなかった。まぁ、今回は旅行じゃなくて引っ越しだからねぇ。 5/29
初心者ぺちぱーがGitHubでScalaレッスンを始めたぞ。今回もScalaの標準的なビルドツールであるsbtの使い方の続き。IntelliJ IDEA用プロジェクトファイルを作れるようになろう。 sbt plugin - sbt-idea GitHubのsbt-ideaというsbtプラグインを使うとgen-ideaというコマンドでIntelliJ IDEA用プロジェクトファイルが作れるようになる。 sbt plugins READMEに書いてある通りだが、PROJECT_DIR/project/plugins.sbtに設定を追加しよう。この設定で、sbt-ideaプラグインが使えるようになる。 PROJECT_DIR/project/plugins.sbt
GitHubのスターの数はphpDocumentor2が一番多い。PEARのAPI docでも使われているphpDocumentorの後継ツールだ。しかし、以前試した時には、Page level docを要求しておきながら、どこに書いてもエラーになったりと、中々安定しない印象だった。生成速度はv1と比べてだいぶ速い。 phpDoxはTemplate for Jenkins Jobs for PHP Projectsでも採用されているツールだ。ファイル判定がFILEINFO_MIMEのため、.phpのファイルであってもC++のファイルだと勘違いされることが多々あった。この部分だけ修正すれば使えないこともないが、@inheritdocに対応していないので、eclipseでPDTを使っている自分としてはあまりメリットがない。さらにPackagistに登録されていないため、composer ins
前フリ Pythonにはpydocというモジュールがあって、これを使うと同じようにAPIリストが出力できると思っていた。今までDjangoのコードを書いてみて、いわゆるヘッダーコメントとかドキュメンテーションコメントと言われているものをなんとなくjavadocライクに書いていたが、pydocだとあんまり期待した通りのHTMLを出力してくれないことが分かった。 自分が期待していたのは、 @タグでクラス、関数属性に関する情報を出力 phpDocumentorのように、テンプレートを変更可能 というものだったが、あんまりよろしくなかった。調べてみると、epydocというツールで実現できそうだったが、テンプレートはないらしい。もうちょっと調べてみると、Sphinxというドキュメンテーションツールがあるそうだ。すでに、以前のエントリーでちょっとした使い方について書いたが、インストール方法とかを書いて
How we can test classical IE 8, 9 on Mac OSX 最近Macでしか作業していません。北村聡士 @satooshi_jp です。 Macで開発をしていると、対応が困るのがIE対応ですね。前回のエントリーではIE6、IE7に関してはかなり絶滅してきているというデータを見ました。IE8に関しても、いい感じでシェアが下がってきています。しかし、依然としてIE8、9のシェアは無視できない程度に大きく、対応すべきであろうと思います。 そんなわけで本題です。MacでIEの実行環境をどうするべきか。 Emulator is easy to use 一つはSauceというアプリを使う方法。以前、colissで紹介記事が出てましたね。これを使うと、各種OSのブラウザを確認できるらしいです。まだ試してません。 しかし、このやり方は実機確認に比べると信頼性が落ちるように思い
JDK security vulnerability Javaの脆弱性がちょっと話題になってますね。リンクをクリックするだけで感染するなんて、かなり怖いです。北村聡士 @satooshi_jp です。 さて、自分のMacにインストールしていたJDKのバージョンはいくつだったかな?と思い調べてみるとまさかのJDK6!そういえばAppleはJDK7を提供しないことになり、Oracleが提供することになったのでした。なので、JDK7をインストールしてみました。 で、結論から言うと、タイトルの通りですが、 Appleの提供しているJDK6は決してアンインストールしてはいけない です。理由はよく分かりませんでした。試したのはMacBook Pro 13 Retina(OS X 10.8.2)です。 How it works MacにおけるJDKのインストールパスは実は3種類あります。 /System
PHPにはマルチスレッドっていう概念がないのか?じゃあC#でBackgroundWorkerにやらせていたような非同期処理はいったいどうやってやればいいんだ?とかいう疑問があったけど、プロセス制御のPCNTL関数を使えば似たようなことができるそうだ。 並列処理の実装 PHP 5.3.0 CLI + CentOS 5.4で検証した。eclipseで実行すると、なぜか途中で処理が終了する。コンソールから実行するとちゃんと動いた。ソースからインストールする場合は、configureオプションに--enable-pcntlを付けないと、実行時に関数が見つからなくて、エラーになる。
Popular post plugin for Octopress Octopressのプラグインには、既にPopular Posts Pluginがあるけれど、このプラグインはGoogleのpage rankに基づいて人気具合が算出されるらしい。このブログのように、ページランク0の弱小ブログにとっては、意味がない。ということで、Google Analytics APIから取得できるPVを使って、人気具合を算出するプラグインを書いた。 最初に書いたコードは、Google APIのシークレットキーなどがべた書きになっていたり、プラグイン内部でテンプレートhtmlを出力していたりと、ひどいコードだったが、ようやく書き直してGitHubにコミットできた。 まずはGoogle APIs consoleで、APIの使用登録しなければいけないが、この手順はかなり忘れてしまった。。登録したときのスクリー
初心者ぺちぱーがGitHubでScalaレッスンを始めたぞ。今回はScalaの標準的なビルドツールであるsbtを使ってみる。 sbt is Simple Build Tool Scalaインストールについて書いた記事で、Homebrewを使ってsbtをインストールする方法を書いたので、インストール方法は割愛する。Homebrew以外のインストール方法については、本家ドキュメントのInstalling sbtに詳しい記載があるので、参照のこと。 sbt configuration Homebrewでsbtをインストールすると、/usr/local/bin/sbtにコマンドが出来上がっている。この中身はこんな感じ。 /usr/local/bin/sbt
初心者ぺちぱーがRubyのコードを書くに当たって、大変勉強になったサイト、これから読んでおきたいドキュメントを紹介する。 Index Ruby入門・チュートリアル Ruby reference Ruby 2.0の新機能 Rubyコーディング規約 Ruby関連の情報 Ruby tool Ruby ブログ rbenv & ruby-build Gem Bundler irb pry RDoc YARD RSpec Cucumber SimpleCov ruby-prof Rake Rack Rack対応HTTPサーバー Sinatra Ruby on Rails Rails 4.0の新機能 Ruby入門・チュートリアル Rubyを始めるときに、入り口になるところ。他言語文化圏からの移民の人達は第1章 Ruby言語ミニマムから読み始めると、256倍ぐらい理解が早くなると思う。 第1章 Ruby言
Beginning Scala programming4 初心者ぺちぱーがGitHubでScalaレッスンを始めたぞ。今回は、4回目の問題をリファクタリングしてみよう。 Scalaスケーラブルプログラミング第2版 作者 Martin Odersky Lex Spoon Bill Venners 出版社 インプレスジャパン 発売日 2011-09-27 メディア 単行本(ソフトカバー) 価格 ¥ 4,968
IntelliJ IDEA 12 Community Edition scalaconfjpの興奮冷めやらぬ中、会場で人気だったIntelliJ IDEAを試してみた。 現在の最新版はIntelliJ IDEA 12だ。Community Editionがフリーで使用可能となっている。Macの場合、通常のアプリケーションと同様に、ディスクイメージの中にあるアプリケーションをApplicationフォルダに入れるだけでインストールは完了する。 Scala plugin 起動後にPreferences > Pluginsを開くと、現在インストールされているプラグインの一覧が表示される。Scala pluginは表示されていないので、まずはScala pluginをインストールしよう。 Browse Repositoriesボタンをクリックすると、インストール可能なプラグインが表示される。右上の
Text file should be compressed ブログ作りの話も。 PaaSって、gzipを勝手にかけてくれる気がしていたんだけど、どうやら思い込みだったようで、 2012年ぐらいから、herokuはnginxを経由せずに、直接webrickにリクエストが送られるように仕様変更されたらしい。 参考:Enable gzip compression for Rails 3.2 on heroku Cedar All apps deployed to Heroku used to automatically compress pages they serve, by passing through Nginx’s gzip filter on the way out. But with their newest Cedar Stack, things have changed. I
I choose appfog for Octopress blogging. So how can I setup? 前回のエントリーで、appfogをOctopressのホスティング先に採用したと書いた。今回は実際の設置方法について。 Create new app! appfogにサインアップした後に、webの管理コンソールを見ると「Create App」というリンクがあるので、ここから新しいアプリを作成することができる。 管理コンソール step1 ってやると確かに作れるんだけど、やらない。このまま作成するとruntimeがruby1.9.2になってしまうので。appfogは1.9.3に対応しているので、runtimeを指定してアプリを作成する。これは、webからできなさそうなので、appfog CLIツールを使って実施する。 af the CLI tool AppFog Docum
Which is the best choice for the Japanese Octopress blogger そういえば、Herokuにblogを置く事しか考えてなかったけど、他のPaaSとの比較を全然してなかった。その結果、日本でブログを作るには、実はappfogの方がいいんじゃないかという結論に至った。 PaaS majority PaaSの選定に当たっては、以下3点を基準とした。それぞれ、優先順位となる。 Octopressでブログをホストできること 無料プランがあること より日本に近い場所でホスト可能であること 今回の選定に当たって、調査したのは以下の5つ。rubyが使えるPaaSとしてはメジャーなところではないかと思う。 Heroku Engine Yard Cloud appfog dotCloud OpenShift Heroku 当初予定していたPaaSで、Rub
このページを最初にブックマークしてみませんか?
『blog.satooshi.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く