タグ

ブックマーク / gihyo.jp (29)

  • 第78回 Perl Webアプリケーションのリプレイスで大事なこと ~Stranglerパターンで段階的に移行する(2) | gihyo.jp

    Perl Hackers Hub 第78回Perl Webアプリケーションのリプレイスで大事なこと ~Stranglerパターンで段階的に移行する(2) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは須藤将史さんで、テーマは「Perl Webアプリケーションのリプレイス」です。 <前回(1)はこちら。> 新規のコードで既存のコードを包む リプレイス先のアプリケーションで既存のコードをどれだけ活かすかは、リプレイスで解決したい課題しだいです。稿では開発効率の改善のため、クライアントとサーバを疎結合にしてREST APIで開発したいとします。この場合、データベースと接続するコードはひとまずそのまま活かします。 データベースと接続するコードはサーバの内側に位置するコードです。ここを起点にクライアント側へと向かってどこまで既存のコードを活かせるか、解決したい課題

    第78回 Perl Webアプリケーションのリプレイスで大事なこと ~Stranglerパターンで段階的に移行する(2) | gihyo.jp
    shckor
    shckor 2023/06/20
  • 第766回 高度なことが簡単にできる多機能バックアップツール、Restic[後編] | gihyo.jp

    今回は前回に続いてResticを紹介します。必ず前回を先に読んでください。 Rclone経由でWebDAVサーバーにバックアップ Rcloneは第725回で紹介した、さまざまなクラウドストレージサービスに接続するフロントエンドです。ResticはRcloneをバックエンドにする機能があるため、Rcloneが対応しているクラウドストレージサービスであればResticのバックアップ先となります。 Rcloneが対応しているクラウドストレージサービスのリストを見てみると、対応していないサービス[1]はもう諦めてもいいかと思えるほどの充実ぶりです。 第725回と重複しますが、試しにTeraCLOUDあらためInfiniCLOUDに接続してみましょう。無料で20GBまで使えるので、練習には充分な容量ですし、気に入ればそのまま契約するといいでしょう。 RcloneもGo言語で書かれており、オープンソー

    第766回 高度なことが簡単にできる多機能バックアップツール、Restic[後編] | gihyo.jp
  • MisskeyにおけるNest.jsを使ったDI | gihyo.jp

    連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。第2回はMisskey v13から採用されたNest.jsおよびDependency Injection(DI)と呼ばれる設計手法について紹介します。 Misskey v13よりNest.jsを採用 Nest.jsは、Node.js用のサーバーサイドフレームワークで、拡張可能で信頼性が高いアプリケーションを作成できることが特徴です。Misskeyでは先日リリースのv13から採用しています。Nest.jsを採用した理由としては、今回紹介するDIをMisskeyに導入するためです。 TypeScriptで書かれているため型のサポートがあります。また、デコレータと呼ばれる構文を多用するのもポイントで、例えば次のように@で始まる構文が出てきたらそれはデコレータです。 @In

    MisskeyにおけるNest.jsを使ったDI | gihyo.jp
  • 分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp

    連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っていきます。第1回はMisskey、ひいては分散型SNSの簡単な紹介とその内部実装の概略を説明します。 はじめまして! はじめまして、Misskey(みすきー)のプロジェクトリーダーをしている、しゅいろ(@syuilo)です! この度連載の機会をいただきましたので、ちょっと仰々しい気もしますが「Misskey & Webテクノロジー最前線」と題して、今後Misskeyやそれに関わる最新のWeb技術について解説をしていく予定です。 今回はMisskey、ひいては分散型SNSの簡単な紹介とその内部実装の概略を説明します。 対象読者は、後半の実装解説の部分においてはある程度のWeb開発の知識がある人を想定しています。 Misskeyとは⁠、そして分散型とは Misskeyは、オープン

    分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp
  • 第74回 正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(2) | gihyo.jp

    Perl Hackers Hub 第74回正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(2) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは藤浪大弥さんで、テーマは「ReDoS徹底解説」(⁠2)です。 <前回(1)はこちら。> ReDoS対策あれこれ ReDoSの対策として、有効な順に次のものがあります。 セッション単位のタイムアウトの利用 DFA型のマッチ実装の利用 入力の長さの制限 ReDoS検出実装の利用 そもそも正規表現を利用しない マッチ単位のタイムアウトの利用 これらの対策について解説します。 セッション単位のタイムアウトの利用 ReDoS対策と言うよりは一般的なDoS対策なのですが、最も有効で基的な対策は、セッション単位でタイムアウトを行うことです。PlackやRackなどのミドルウェアを使って実現できる

    第74回 正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(2) | gihyo.jp
  • 第74回 正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(1) | gihyo.jp

    Perl Hackers Hub 第74回正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(1) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは藤浪大弥さんで、テーマは「ReDoS徹底解説」(⁠1)です。 ReDoS解説にあたって─⁠─ 稿の構成など 正規表現に関わる脆弱性として「ReDoS」があります。稿の前半では、ReDoSとはどんな脆弱性でなぜ発生するのか理論的な立場から詳細に解説し、対策のためにすることをいくつか紹介します。後半では、ReDoSへの対策あるいはマッチの高速化のための、Perlでの正規表現実装上の工夫を紹介します。 後半で説明しますが、Perlの正規表現実装にはさまざまな工夫があり、標準的な実装とはやや異なる部分があります。Perlを使ってReDoSの説明をすると質的でない部分が生じてわかりづらく

    第74回 正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(1) | gihyo.jp
  • MarkdownエディタObsidian v1.0.0がリリース | gihyo.jp

    2022年10月13日、MarkdownエディタObsidianのバージョン1.0.0がリリースされた。 ObsidianWindowsmacOSLinux、そしてモバイル環境(iOS / Android)でも動作するMarkdownエディタ。プラグインにより豊富な機能を実現している。長らくバージョン1未満のリリースが続いていたが、このほどバージョン1.0.0のリリースとなった。 v1.0.0では新たにタブの機能が装備され、複数のタブを切り替えて作業することが可能となった。また、タブ スタックにも対応し、複数のタブをまとめて管理できる。このほか、折り畳みコマンドの実装や、UIも変更されている。 Obsidianの利用は非営利であれば無料、営利目的での利用には商用ライセンスが必要となる。 Obsidian URL:https://obsidian.md/

    MarkdownエディタObsidian v1.0.0がリリース | gihyo.jp
  • PSGI/Plack - [Perl Hackers Hub]

    連載では、第一線のPerlハッカーが回替わりで執筆していきます。記念すべき第1回は、WEB+DB PRESS誌ではVol.2から執筆しており、長らく連載も担当していた宮川達彦さんです。 はじめに PerlでWeb開発をするためのフレームワークは百花繚乱、人気を集めています。稿では、これらのフレームワークが共通して利用するためのインタフェース仕様であるPSGIと、そのエンジンとしての実装であるPlackを紹介します。 PSGIに至る道 PerlとWebアプリケーション開発の親和性 Perlは「インターネットのグルー(糊:のり)言語」とも言われ、CGIによる開発がメインだった1990年代から、Webアプリケーション開発に最も関わりのあるプログラミング言語の一つと言ってよいでしょう。2000年代に入っても、Ruby on RailsPHPなどの他言語からの影響も取り入れながら、Web開発

    PSGI/Plack - [Perl Hackers Hub]
  • 第24回 PSGI/Plack実践入門―Starman、Starlet、Twiggy、Plack::Middleware、Server::Starter(1) | gihyo.jp

    Perl Hackers Hub 第24回PSGI/Plack実践入門―Starman、Starlet、Twiggy、Plack::Middleware、Server::Starter(1) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはWEB+DB PRESS Vol.50~55まで「大規模Webサービスの裏側」を連載し、連載でも第11回以来の2度目の登場となるkazeburoさんこと長野雅広さんで、テーマはPSGI/Plackです。 なお稿のサンプルコードは、誌サポートサイトから入手できます。 幅広く使われるようになったPSGI/Plack 連載でPSGI(Perl Web Server Gatewary Interface)/Plackについて取り上げるのは2回目です。1回目は2010年2月に発売されたWEB+DB PRESS Vol.55に

    第24回 PSGI/Plack実践入門―Starman、Starlet、Twiggy、Plack::Middleware、Server::Starter(1) | gihyo.jp
  • 第68回 他言語のライブラリをPerlに移植する(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはうたがわききさんで、テーマは「他言語のライブラリをPerlに移植する」です。 稿は、執筆時点2021年5月の最新版であるPerl 5.34.0を用いました。稿のサンプルコードは、WEB+DB PRESS Vol.123のサポートサイトから入手できます。 なぜ他言語のライブラリをPerlに移植するのか 筆者は、Twitterに投稿する文章を整形・検証するためのtwitter-textライブラリをPerl に移植した、Twitter::Textを実装・公開しました。稿では、Perl以外のプログラミング言語で実装されているライブラリをPerlに移植する際の考え方や気を付けるべきことについて、Twitter::Textを例に解説します。 はじめに、他言語で実装されたライブラリをPerlに移植する理由を述べます。

    第68回 他言語のライブラリをPerlに移植する(1) | gihyo.jp
    shckor
    shckor 2021/08/17
  • 第7回 キャプチャ/リプレイツールによる機能テストの自動化 | gihyo.jp

    これらのツールは単独でも利用可能ですが、今回はSelenium IDEとSelenium Coreを組み合わせてテストを進めていきます。例として、名前を入力して画面遷移すると、入力した名前が表示されるという簡単なWebアプリケーション(図1)を使って、Seleniumを使用したテストの手順を見ていきましょう。 図1 テスト対象のアプリケーション Selenium IDEで画面操作を記録 Selenium IDEのインストール まず、Selenium IDEをインストールします。Selenium IDEはFirefoxのアドオンとして提供されていますので、事前にFirefoxをインストールしておく必要があります。 Firefoxを起動したら、Selenium IDEのダウンロードページにアクセスし、執筆時点の最新版である「Version 1.0 Beta 2」の「Firefox extens

    第7回 キャプチャ/リプレイツールによる機能テストの自動化 | gihyo.jp
    shckor
    shckor 2021/06/12
    Seleniumの解説
  • 第65回 依存モジュールの更新 ―update-cpanfile、GitHub Actionsで実現!(1) | gihyo.jp

    Perl Hackers Hub 第65回依存モジュールの更新 ―update-cpanfile、GitHub Actionsで実現!(1) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは、はてなでマンガビューアを開発しているhitode909さんで、テーマは「依存モジュールの更新」です。 長期間にわたって開発・運用するアプリケーションでは、依存モジュールを管理し、最新版に更新することが重要です。稿では、アプリケーションの依存モジュールの管理方針のグッドプラクティスと、ツールを使って継続的にモジュールを更新するための手法を紹介します。 稿のサンプルコードは、執筆時点(2020年11月)の最新であるPerl 5.32.0で動作確認を行っています。稿のサンプルコードは、WEB+DB PRESS Vol.120のサポートサイトから入手できます。 Perl

    第65回 依存モジュールの更新 ―update-cpanfile、GitHub Actionsで実現!(1) | gihyo.jp
    shckor
    shckor 2021/02/18
  • 第649回 Ubuntu Coreの独自イメージを作成する | gihyo.jp

    第646回ではIoTデバイス用のプラットフォームとして利用されているUbuntu Coreの基的な使い方を、第647回ではそのUbuntu Coreを用いてRaspberry Piを小型サーバーとして利用する方法を紹介しました。今回はUbuntu Coreの独自イメージを作成する手順を紹介しましょう。 KVM版のUbuntu Coreの使い方 前回までと異なり、今回はKVM版のUbuntu Coreの使い方から説明します。 後半で説明するイメージの作成方法はKVM版とRaspberry Pi版で違いはありません。異なるのは指定するカーネル等のsnapファイルの名前だけです。では、なぜKVM版を紹介するのかというと、それはトライアンドエラーが楽になるためです。 記事の手順に従ってカスタムイメージの作成方法を把握したあとは、自分自身のベストな設定を見つけるために、イメージの作成・カスタマイ

    第649回 Ubuntu Coreの独自イメージを作成する | gihyo.jp
  • 連載:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    連載:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社
    shckor
    shckor 2020/09/30
  • タグ一覧PSGI

    アフターコロナにおけるエンジニアチームの作り方,グローバルな視点でのエンジニア獲得と開発とコミュニケーションの在り方について取り上げます。 LINE テクノロジーエンジニアリング大全 「LINE DEVELOPER DAY 2020」より,注目すべきテクノロジーエンジニアリングをピックアップし,詳説インタビューを実施しました。 プロダクト思考で開発が進む「みてね」の今とこれから~みてねの生みの親笠原健治氏,開発マネージャ酒井篤氏が考える,プロダクトとエンジニアリングの素敵な関係

    タグ一覧PSGI
  • 第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp

    Encodeを使っても文字化けするとき Encodeは特定のエンコーディングにしたがって配列されたバイナリを「文字列」に置き換えるためのモジュールですが、かならずしもすべてのエンコーディングがあらゆるバイナリの組み合わせに対応しているわけではありません。 たとえば、「⁠シフトJIS」環境における機種依存文字の例としてよく取り上げられる丸付き数字をEncodeのお作法通りにdecode、encodeする場合、「⁠シフトJIS」だからと思って安易にshiftjis系列のエンコーディングでdecodeしてしまうと、丸付き数字のマッピングデータがないため「?@」のように文字化けを起こしてしまいます。 use strict; use warnings; use Encode; my $binary = pack('C*', 0x87, 0x40); # ①; my $string = decode(

    第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp
  • 第1回 memcachedの起動オプションを把握しよう | gihyo.jp

    1.4系で新しく追加された主な機能しては バイナリプロトコルの導入 マルチスレッドの標準化 統計の強化 などが上げられます。この1.4系の機能の詳細については前坂徹氏の連載「memcached 1.4の到来」が参考となります。ここではバージョン1.2.5と最新の1.4.5の起動オプションを比較しながら、新しく追加された機能や実際の運用で用いられる起動オプションについて説明します。 1.2系と1.4系の起動オプションの違い まず、memcachedの起動オプションの一覧(ヘルプ)を確認しましょう。memcachedのヘルプを出力するには、「⁠-h」オプションを使います。 $ memcached -h memcached 1.x.x -p <num> TCP port number to listen on (default: 11211) -U <num> UDP port number t

    第1回 memcachedの起動オプションを把握しよう | gihyo.jp
  • 第2回 「締め切りは絶対に守るもの」と考えると世界が変わる | gihyo.jp

    「締め切りを守ること」の大切さ 今までたくさんの日米のエンジニア仕事をしてきた。その中には私よりも明らかに「賢いエンジニア」もいたし、ものすごい生産性でプログラムを作ってくれる「馬力(ばりき)のあるエンジニア」もいた。しかし、そんな中でも、私がものを作るうえで最も大切だと考えている「あること」をキチンとこなせる人は100人に1人もいなかった。その「あること」とは、「⁠常に締め切りを守れるように仕事をすること」である。 チームで仕事をする場合、どうしてもお互いが担当するタスク(=作業)の間に依存関係が生じる。そんなときに、どれか一つのタスクの完了の遅れが、ほかのタスクの完了に波及し、それがタスク間の競合を引き起こして全体のスケジュールがさらに遅れる、という事態はソフトウェア開発の現場ではよく見られる。そんな状況をできるだけ回避するには、プロジェクトに関わる人全員が、自分に割り当てられたタス

    第2回 「締め切りは絶対に守るもの」と考えると世界が変わる | gihyo.jp
  • drikinが見たGoogle I/O 2010[2]Androidの日 | gihyo.jp

    「drikinが見たGoogle I/O 2010」第2弾は、初日より30分早い8時30分からスタートした2日目の基調講演についてレポートしよう。 2日目の基調講演開催直前の様子。初日のサーキットを基調とした背景と変わって、Androidをイメージしたデザイン。 初日の基調講演がHTML5に終始し、比較的派手さのない堅実なプレゼンだっただけに、より注目が集まる中、前日同様、技術担当副社長Vic Gundotra氏の登場から2日目の基調講演は始まった。まずは、初日の基調講演のYouTubeのライブストリーミング配信について説明があり、24,000アクセスがあったと発表。 実際、初日の基調講演を聴きながらライブストリーミングを閲覧してみたが、遅延の少ない(1、2秒程度の遅れ)配信で画質のクオリティも高く、このような大規模ライブストリーミングを軽々と行ってしまうあたり、YouTubeの性能の高さ

    drikinが見たGoogle I/O 2010[2]Androidの日 | gihyo.jp
  • 第14回 Rakudo:実装する方法だってひとつではないのです | gihyo.jp

    2010年4月に出るのは…… 先日、いわゆるPerl 6の実装が2010年4月をめどにRakudo *(Rakudo Star)の名前でリリースされる、という記事が紹介されました。 そのネタ元となった記事を書いたパトリック・ミショー(Patrick Michaud)氏は、2009年4月17日のNordic Perl Workshopを皮切りに、2009年6月22日のYAPC|10(YAPC::NA⁠)⁠、2009年7月22日のOSCON、2009年8月4日のYAPC::EUと、立て続けにRakudoの発表を行い、そのまとめとして当該記事を掲載したのですが(ちなみにRakudo *の公開時期はすでにOSCONの時点で明言されていました⁠)⁠、その3日後にご人によるフォロー記事が出ているように、この短い紹介記事では意図が伝わりにくい面もあったようです。 そこで、今回はRakudoとはどのよう

    第14回 Rakudo:実装する方法だってひとつではないのです | gihyo.jp