2019 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither Parkingcrew nor the domain owner maintain any relationship with the advertisers. Privacy Policy
id:sora_h です。今回はクックパッドの社内 apt リポジトリ管理・deb パッケージビルド・リリースフローについて紹介します。 クックパッドではいままで CentOS 6 を利用していましたが、最近は Ubuntu への移行を進めています。現在は CentOS / Ubuntu 両方が共存したインフラになっています。 CentOS では社内に yum リポジトリを置き、本家リポジトリから消えてしまったパッケージや、独自でビルドしたパッケージのホストを行っていました。Ubuntu 導入以降も同様に、社内 apt リポジトリを設置し、必要があれば独自でパッケージをビルドすることにしました。具体的には、わたしは ruby2.1 パッケージや ruby2.2 パッケージをメンテナンスしています。 (なお、わたしは rpmspec および ebuild の方が慣れていて、未だ deb パッ
npmに登録されているパッケージ数は10万、月間ダウンロード数も5億を超えました。7月の段階で月間3億程度ですから、こちらのグラフで見てもわかるように、かなり成長が加速してきていますね。 EdgeConf4において、パッケージ管理をテーマにしたディスカッションに、npmのCTOであるLaurie Vossと、npmのpeer dependencyをつくったGoogle Chrome TeamのDomenic Denicola(ES6のPromiseの取組みでも知られた人ですね。)が参加しています。この二人と、BowerのJosh Peekを中心に議論が進んでいます。ちなみにJoshはGitHubの社員で、最近では、左右に並べてdiffを比較できる便利な機能をつくった人でもあります。 「サーバサイドのパッケージマネジャとしては、CPANやRubygem、npmのように開発言語ごとにプレーヤー
Emacsから本格的に乗り換えて1ヶ月ほど経ったので、使ってみて気に入ったpackageとかまとめてみる。 atom-beautifier ctrl-alt-f でコードフォーマットをかけてくれる。 atom-jshint jsの構文チェック。 autocomplete-plus タイプ中に補完候補を自動的に表示してくれる。デフォルトでは自動補完が無効なので、package設定からauto completionを有効にする必要あり。 editor-stats 便利機能ではないけど、時間別のキー入力の量をグラフ化してくれる。何時頃に活発に作業しているか一目瞭然に。 gist-it 開いているファイルを即座にgistへアップできる。gist.elみたいな感じ。 注意する点は、何も設定していないとAnonymousユーザとして投稿されてしまう事。 自分のアカウントで投稿したい場合は、README
Red Hat系のLinuxディストリビューションでは、RPMパッケージという形式でソフトウェアが配布されており、yumコマンドを利用してパッケージをインストールしたり、アップデートを行うことができる。今回は既存のRPMパッケージをカスタマイズして独自のパッケージを作成したり、独自のyumリポジトリを作成してパッケージ管理を行う方法を紹介しよう。 プライベートyumリポジトリを活用してサーバーをデプロイする Ret Hat Enterprise LinuxやCentOSといったRed Hat系のLinuxディストリビューションでは、RPMパッケージ(ファイルの拡張子は.rpm)を使ってソフトウェアをインストールするのが一般的だ。 RPMは「RPM Package Manager」の略で、Red Hatが開発したことから当初は「Red Hat Package Manager」と呼ばれていた。
golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその groutine と通信する為の仕組みと考えると分かりやすいです。 package main import ( "fmt" "time" ) func main() { task := make(chan string) taskquit := make(chan bool) workerquit := make(chan bool) go func() { loop: for { select { case <-taskquit: workerquit <- true break loop case job := <-task: fmt.Println(job) } } }() go func() {
Go was created out of the need to get work done. It’s not the latest trend in programming language theory, but it is a way to solve real-world problems. It draws concepts from imperative languages with static typing. It’s fast to compile and fast to execute, it adds easy-to-understand concurrency because multi-core CPUs are now common, and it’s used successfully in large codebases (~100 million lo
身近な話題でありながら中身のよくわからないことを調べてみるのは興味ぶかいもので、そこから得た知識が意外なところで役に立つことも少なくありません。かねてより Android 環境へアプリケーションをインストールする際に内部でどのような処理が行われるのかに関心を持っていたのですが、知りたい情報がなかなか見当たらないため手元で調査を行いました。その内容を公開します。 まとめ ※クリックすると大きな図が開きます ※PackageInstaller を起動した状態での関連プロセスの例 $ ps USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 268 180 c009b74c 0000875c S /init root 36 1 812 244 c02181f4 afd0b45c S /system/bin/installd root 33 1 60900
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く