タグ

ProgrammingとTipsに関するouestのブックマーク (20)

  • 開発者が知るべきキャッシュ設計でよく遭遇する問題

    はじめに 分散システムの設計および開発において、キャッシュはパフォーマンス向上のための非常に重要な要素です。頻繁にアクセスされるデータをキャッシュすることで、アクセス速度が遅いデータベースへのアクセスを削減し、データへの迅速なアクセスを可能にします。これにより、システムの全体的な効率とパフォーマンスが向上します。 しかし、キャッシュは慎重に設計しないとむしろパフォーマンス上のデメリットになるケースが存在します。 この記事ではよく遭遇するキャッシュ設計の問題とその回避策について解説します。 Cache penetration DBに存在しない値を検索したときに、DBから返された空の結果をキャッシュしない場合に発生するシナリオです。 このシナリオではDBに存在しない値を繰り返し検索することにより、その値がキャッシュされていないため検索ごとにDBへのアクセスが必要になってしまいます。 存在しない

    開発者が知るべきキャッシュ設計でよく遭遇する問題
  • 開発生産性を上げるシンプルな仕組み、Feature Flagの使いどころ

    はじめに みなさんこんにちは、物流業界の価値最大化をミッションに掲げるアセンド株式会社で取締役CTOを務めている丹羽です。 私たちはレガシー産業である運送会社さんのDXを実現すべく、運送管理SaaS「ロジックス」を開発しています。運送業にまつわる業務の全てをデジタル化・プロダクト化し繋がる世界を実現しようとしています。そのためにアセンドでは開発生産性にこだわり投資をしています。 そんなアセンドのプロダクトチームでは週間平均 8.20deploys/day を実現するなど、1段高い生産性を実現しています。今回はこの生産性を支える仕組みの1つである Feature Flag についてご紹介します。 (毎日SlackBotでデプロイ状況などのレポートを通知するようにしています) Feature Flag とは? Feature Flag とは、プロダクト開発時に新機能の公開(リリース)や変更を簡

    開発生産性を上げるシンプルな仕組み、Feature Flagの使いどころ
  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
    ouest
    ouest 2021/02/23
    「-o pipefail」は今後使っていこう
  • 【2016年度版】このPerlハマりどころがすごい!100連発 - Hatena Developer Blog

    はじめに autovivificationを避ける myと後置ifを同時に使ってはならない return;で返る値は空のリスト 正規表現によるバリデーションでは\Aと\zを使おう '0' は偽で評価される each は中断した時、中断した時点の状態が残り続ける おわりに はじめに こんにちは。アプリケーションエンジニアの id:t_kyt です。 春です。Perlを始めるにはいい季節ですね。Perl始めていますか? どの言語にもハマりどころというものがありますがPerlも例外ではありません。というわけで今回はPerlを始めた人がハマりがちなポイントを幾つか紹介したいと思います。 この記事ははてなの教科書程度の知識を前提としています。またモジュールに依存しない部分に絞りました。 github.com autovivificationを避ける autovivificationとはundefの入

    【2016年度版】このPerlハマりどころがすごい!100連発 - Hatena Developer Blog
  • シェルスクリプトの処理境界が鮮明になる「名前付きブロック記法」なるものを考えてみた

    シェルスクリプトは長くなると処理の境界が不鮮明になりがち。 コメントで処理の境界を表現する工夫はよく見かけるが、もっと良い方法はないか考えてみた。 :コマンド、&&演算子、複合コマンド()や{}を組み合わせて書くと、処理の境界線がはっきりする。

    シェルスクリプトの処理境界が鮮明になる「名前付きブロック記法」なるものを考えてみた
  • なめらかに動作するUITableViewのつくりかた

    矢口裕也です。 Advent Calendar 10日目はiOSのUITableViewの話をします。 ぼやき iOSアプリを開発していると70%くらいの時間はUITableViewに費やしている気がしてきます。 UITableViewは非常にめんどうなものですが、パフォーマンスがシビアでかつユーザーの快適さに直結するものなので大いに手間をかける価値があります。 この記事ではガクガク処理落ちするUITableViewを例として改善していきながら快適なUITableViewのつくりかたを解説します。 目的 以下のケーススタディでは次の目的でコードを改善していきます なめらかに動くようにする ここでのポイントは実際速くなくてもユーザが快適に感じればOKである、ということです。処理速度が高速である必要はありません。 戦略 UITableViewでのパフォーマンス問題は次の2点であることが多いです

    なめらかに動作するUITableViewのつくりかた
  • にひりずむ::しんぷる - 復数のカラムでソート

    意外とみんな知らない感じなのかな。そして使う機会が滅多にないので知らなくてOK。 use strict; use warnings; use 5.12.1; use Data::Dumper; my @data = ( ['nekokak', '1130', '1900'], ['nekokak', '1000', '1800'], ['zigorou', '1230', '2000'], ['zigorou', '1130', '2100'], ['xaicron', '1300', '2200'], ['xaicron', '1400', '2330'], ); $Data::Dumper::Terse = 1; $Data::Dumper::Indent = 0; say join "\n", Dumper sort { $a->[0] cmp $b->[0] or $b->[1]

    ouest
    ouest 2012/02/10
    複数カラムでのソート
  • コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ

    誰に教えられたのでもないのですが、ぼくは冬眠前のリスのようにコード片を溜め込んでいます。 コード片とは、ライブラリにするほどまとまった大きさではない、数行〜十数行のコードのことで、溜め込んだコード片は、アプリケーションやツールを作るときに使っています。 例えば「Perlでメール送るのどう書くんだっけかな」とか「Pythonでファイル開いて全部読むのどう書くんだっけかな」とかというときに、溜め込んだ中からコード片をさっと取り出してコピペした後、なじむようにちょっと修正して使っています。 コードポケット コードを溜め込んでいるディレクトリをぼくは「コードポケット」と名付けていて、コード片を取り出すことを「ポケットからコードを取り出す」と呼んでいます。先日、知り合いが似たようなことを実践していて、その人は「コードスケッチ」と呼んでました。いい名前ですね。 ぼくの場合、コードポケットは ~/lan

    コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ
  • mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋

    現在 WEBアプリケーションの開発言語といえばいわゆる Light Weight Langage が主流の様な気がしますが、C言語で WEBアプリケーションを書きた いと思った時、どのような方法があるでしょうか。一つはコンパイルした実行 オブジェクトを CGI として呼び出す方法、もう一つは apache module を書く という方法があると思います。 CGI の場合プロセス起動のオーバーヘッドがありますが apache module の 場合非常に高速です、にも関わらず apache module による WEB アプリケーショ ンの開発があまり流行っていないのはやはり、コード変更の度にコンパイルし なければならない事と、反映の際に apache を再起動しなければならない事が 原因ではないかと思います。 そこで、apache module っぽい C言語のコードをサーバー上で動的に

    mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋
  • ゆーすけべー日記: YourAVHost その後

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記: YourAVHost その後
  • リストの要素数を取得する - Unknown::Programming

    配列ではなくてリストの要素数を取得するのにはどうすればよいか?というお話。 まず配列の場合はスカラコンテキストで評価するだけなんでとても楽。 my @data = qw/ a b c d /; my $count = @data; # 4 ではリストの場合はどうなるか? 配列と同じように書くなら my $count = qw/ a b c d /; こうなるが、これは大間違いである。 リストをスカラコンテキストで評価すると最後の要素が返ってくるのでこの場合$countには「d」が入る。 とするならば一度配列で受け取り、その後にスカラコンテキストで評価するのが一番スマートなのかもしれない。 my $count = my @tmp = qw/ a b c d /; # 4 しかしながら要素数を取得するだけなのに@tmpを広いスコープに置くのが嫌なのであればdoを使って囲ってしまうのが吉であろう

    リストの要素数を取得する - Unknown::Programming
  • LWP::UserAgentでBASIC認証つきでリクエストする - bits and bytes

    恥ずかしながらいままでLWP::UserAgentでリクエストを送るときにどう書くのかがいまいち分からず、ずっと毎回検索していました.... 今回検索して LWP::UserAgentでBasic認証サイトにアクセスする方法|blog|たたみラボ を読んで、そのあと HTTP::Request::Common - Construct common HTTP::Request objects - search.cpan.org と見比べて、ようやくいままでの謎が解けました。 use HTTP::Request::Common するとGETやPOST などの名前で HTTP::Request のインスタンスを返す関数がエクスポートされるので、 $ua->request(GET 'http://labs.gmo.jp/blog/ku/'); と書いたりできるようになるのだと知りました.....

  • Flash with perl

    アジェンダ Flashおもしろいよ! as3と無償の開発環境 Flashでjsを拡張する (ExternalInterface) かっちょいいファイルアップロード クロスドメイン通信 XMLSocket バイナリSocket

  • ウノウラボ Unoh Labs: 携帯キャリアで画像を転送させない方法

    Keitaです。 携帯画像で待ち受け画像などで、ダウンロードはできるけどメールに添付できないタイプの画像があるとおもいます。 ここらへんどうやるか、気になって調べてみると、 Docomoと、AUは画像のコメント部分に、それぞれ、特定の文字列を入れれればいいようで、 Docomoの場合「copy="NO"」、KDDIの場合「kddi_copyright=on」を追加することでで、携帯でダウンロードできるが、メールなどで転送できない画像が作れました。 具体的に、MagickWand For PHPを使う場合には以下のような感じでヘッダを埋め込みます。 <?php $image = NewMagickWand(); MagickReadImage($image, 'Keita_s.jpg'); MagickCommentImage($image, 'kddi_copyright=on,

  • Kazuho@Cybozu Labs: Cache::Adaptive を簡単に使う方法

    « FizzBuzz - Perl 使って50バイト | メイン | Japanize - ウェブサイトの高速化 » 2007年05月21日 Cache::Adaptive を簡単に使う方法 同僚の ZIGOROu こと山口さんが、「まだ CGI::Application 使ってるの〜?」とか言いながら、CGI::Application::Plugin::Cache::Adaptive を作ってくれました。このモジュールを使えば、ハンドラに属性を追加するだけでキャッシュを有効にできます。これは便利! ついでに私も、自分が使う(であろう)フィードバック関数をパッケージ化したモジュール Cache::Adaptive::ByLoad を作りました。 これらを使うことで、従来のコードはそのまま、ちょっとコードを追加するだけで、簡単に負荷調節機能付きウェブアプリケーションを開発することができます。

  • Perl で作る画像類似検索システムの考察

    今日はとてもショッキングな出来事がありました。あまりにショックがでかいので何かに没頭しなければ気が紛れそうにありません。と言うわけで全く専門分野でもないし当面使う予定もないのですが、1年ほど前にちょっと気になっていた画像の類似検索についていろいろ調べてみました。 どうやら ImgSeek ってソフトが結構有名らしいです。最新バージョンは 0.86 で Linux Only です。1つ前のバージョン 0.85 は Windows binary があります。 過去にいくつか画像類似検索ソフトを試したような記憶がありますが忘れてしまいました(vector でも結構類似検索ソフトありますね)。まずは windows binary 版をダウンロードしてきて実行してみました。 それなりに使えそうな予感がします。Linux 向けの imgSeek-0.8.6.tar.bz2 をダウンロードしてインストー

  • ImageMagickでAnimated GIFのサムネイルをきれいにつくる方法 : blog.nomadscafe.jp

    ImageMagickでAnimated GIFのサムネイルをきれいにつくる方法 ImageMagickでアニメーションGIFのサムネイルをきれいに作るには、 PerlMagickなどのAPIを使うのではなく、コマンドラインを使うのが楽です # /usr/bin/convert animated.gif -coalesce -resize 30x30 -deconstruct resized.gif coalesceオプションとdeconstructがポイント。 それぞれ、 coalesce: 画像シーケンスをマージ deconstruct: 画像シーケンスを構成要素 という意味になります あと問題は、出来上がった画像サイズがどうしても大きくなってしまうことです

  • はびこる「インジェクション系」のぜい弱性:ITpro

    Webアプリケーションのぜい弱性を示す用語として,クロスサイト・スクリプティング,SQLインジェクションといった言葉の認知度はかなり高まった。ブログ・サイトなどでも活発に議論されている。しかし,Webサイトの実態はどうだろうか。 筆者の所属する京セラコミュニケーションシステムでは昨年(2006年),ぜい弱性診断を実施したWebサイトの統計情報「2007年版 Webアプリケーションぜい弱性傾向」を発表した。これによると,パソコン向けWebサイトの48%に致命的なぜい弱性が見つかった。このうちワースト1位はクロスサイト・スクリプティングで56%,2位はSQLインジェクションで11%と,どちらもインジェクション(注入)系のぜい弱性。これらのぜい弱性を持った危険なサイトは依然として存在するのが実情である。 これらWebアプリケーションのぜい弱性があまりなくならない理由はいくつかあるが,以前は「ぜい

    はびこる「インジェクション系」のぜい弱性:ITpro
  • 404 Blog Not Found:javascript - ある意味究極のソースコード添付法

    2006年10月10日06:15 カテゴリLightweight Languages javascript - ある意味究極のソースコード添付法 ころたま。なんでこれを今まで思いつかなかったか! 以下のHTMLをコピペして、 <script type="text/javascript" src="http://blog.livedoor.jp/dankogai/js/sourceviewer.js"></script> <script>//<![CDATA[ var sourceViewer = new SourceViewer(); sourceViewer.boot(sourceViewer, 'sourcecode'); //]]></script> <style> .sourcecode { display: none } </style> あとは <textarea class=

    404 Blog Not Found:javascript - ある意味究極のソースコード添付法
  • Program Island

    Program Island へようこそ! このサイトでは、プログラムに関する様々な情報を載せています。 Android (2010/12/25) Limy Eclipse Plugin (2012/02/25) Check! Ruby on Rails (2009/04/01) Limyweb (2010/01/27) Limy Articles (2009/02/14) Eclipse簡易マニュアル (2008/12/23) / Eclipseプラグイン開発 (2008/12/23) Java (2012/03/10) New! Tomcat (2007/06/29) Linux (2010/04/14) Git (2012/02/26) New! / Subversion (2007/01/11) J2EE , JBoss (2007/01/13) / JBoss + EJB3 (2

    ouest
    ouest 2006/02/21
    Program Island
  • 1