Code SharingModule Federation allows developers to share code between multiple projects in a decentralized way, making it easier to manage complex applications.
Code SharingModule Federation allows developers to share code between multiple projects in a decentralized way, making it easier to manage complex applications.
本連載では第一線の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に移植する理由を述べます。
この記事はモバイルファクトリー Advent Calendar 2020 14日目の記事です。 はじめまして、20卒エンジニアのthe96です。 今回は業務中に使っているPerlのVSCodeの拡張機能のメソッド呼び出しの際の定義元ジャンプが正しく動作するように修正した話をします。 やったこと 従来のVSCode Perlではメソッド呼び出し(Hoge::Fuga->func())のときに定義元ジャンプを行った場合、別パッケージの同名関数の定義元に移動してしまうことがあります。 ソースコードを読む際に正しい定義元に移動しないと不便なので、この拡張機能に手を入れて改善しました。 この不具合について説明するために、同名の関数helloが定義された二つのパッケージAとBを用意しました。 修正前の定義元ジャンプ機能では、関数呼び出し(A::hello)のときはA#helloの定義に移動できています
とほほのperl入門 トップ > とほほのperl入門 概要編 Perlとは インストール 実行方法 引数指定 ファイル指定 自己完結型 標準入力読み込み型 基礎知識 簡単な実行例 これだけは覚えて strictモードと警告モード 関数の括弧 定数 数値 文字列 エスケープシーケンス(\) 数値と文字列 真(true)と偽(false) バイナリデータ 変数 変数宣言(my) スカラ($XXX) 配列(@XXX) ハッシュ(%XXX) 変数名に使える文字 定義済変数みと未定義変数 省略時の変数($_) 環境変数($ENV{'XXX'}) コマンド引数($ARGV) シグナル($SIG{'XXX'}) その他の特殊変数($X) 演算子 代入演算子 算術演算子 ビット演算子 数値比較演算子 文字列比較演算子 条件演算子 正規表現マッチング 文字列連結 文字列置換 繰り返し演算子 範囲演算子 フ
AWS Lambdaで外部モジュールを追加する方法を情報まとめた AWS Lambdaだと使えないライブラリ(モジュール)がありますね。追加が必要な場面がありますので外部モジュールの追加についてまとめます。 今回LambdaでS3にアップされた画像いじりたいのででPillow使おうとしました。 モジュールをzipでアップすればいいのは知っていたのでpip installでデータ取得できたらzipにしてOKでしょ! と思ってテストを実行したら [ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'PIL' とエラー。pip installだと無理なのこれ...どうするのこれ...みたいになったlambda初心者の私。 調べてみると方法が何個かあって、落とし穴
Using ES2015 modules you can chunk the application code into reusable, encapsulated, one-task focused modules. That's all good, but how do you structure modules? How many functions, classes a module should have? This post presents 4 best practices on how to organize better your JavaScript modules. 1. Prefer named exports When I started using JavaScript modules, I had used the default syntax to exp
前回の(1)はこちらから。 静的解析ライブラリを組み合わせて部分的にコード整形を行う (2)では、PPIとPerl::Tidyを組み合わせて独自のコード整形ツールを作成します。 例として、開発の初期にはPerl::Tidyが導入されていなかったプロジェクトについて考えます。あとからPerl::Tidyを導入する場合、それまでに書かれたコードが一度に整形されます。そうすると、あとになって該当部分のコードが書かれた意図を履歴から調べる際に、コード整形のコミットログが出てきて、本来知りたかったコミットまでたどり着けません。 この問題を解決するために、新しく追加や編集した行に限定してコード整形を行うツールを作成します。 Git::Repositoryで変更した箇所を検知する Gitを導入しているプロジェクトであれば、編集した差分はgit diffで知ることができます。この情報を解析して、整形すべき
というわけで一度投稿してみたかったエントリです!!! 2020年6月24日(水)に発売される WEB+DB Press Vol.117 の Perl Hackers Hub に「Perl歴史散策」を書かせていただきました!!みんな買ってくれ!!!!!! 沖縄だと多分無いですが大手書店では6月16日からテスト販売があるそうです!!!自分の近所の書店が大手書店だと思われる人は買ってください!!! ちなみに外出するのはな...という皆様のために電子書籍でも販売しています!!! 気になる内容 気になる内容ですが Perl1.0から現在のPerl5.32に至るまでの代表的なバージョン(1,2,3,4,5)の解説 構文の進化を追っていく インタプリタのC実装の特徴 当時のPerlのリポジトリの中身 Perl6/Rakuの歴史と現在 最新Perl5情報 ...と、個人的な趣味MAXみたいな内容でお送りし
目次 - Perl Index Theme Perl について、復習を兼ねて断片的な情報を掲載して行く連載その d165 回。 今回はこれまで当ブログで書き続けてきた「 リャマ 」(Llama) のイラストについての記事です。2013 年 8 月から書き始めて 2020 年 6 月に書き終えるまでの 7 年間をまとめました。 記事とともに掲載している画像 (イラスト) リャマを書き始めた経緯 構想 最初期 ループする世界 見えない終わり 悟りと祝福 ドットトラッキング ムービー 作業を終えて extra 記事とともに掲載している画像 (イラスト) これまでこのブログの各記事トップに毎回掲載されてきた画像は、プログラミング言語 Perl の入門書「 初めての Perl 」の表紙に掲載されている動物の模写です。 初めての Perl (Learning Perl) 第 6 版 オライリー・ジャパ
「Perlって何ができるの?」たくさんのプログラミング言語が登場して、どのプログラミング言語を選択すればよいか、悩んでおられる方もおられると思います。Perlでどんなことができるのか、答えるコンテンツを作成しました。 検索・置換などの正規表現を使ったテキスト処理が得意 Perlは検索や置換などのテキスト処理が得意なスクリプト言語です。正規表現が言語に組み込まれており、簡単に検索や置換のプログラムを記述することができます。 # すべての「banana」を「orange」に置換 $message =~ s/banana/orange/g; テキスト処理の処理速度は高速です。処理内容によりますが、体感的には、低価格でレンタルできるLinuxサーバーで、10万行のテキストを1秒程度で処理できます。 実践で役立つPerl正規表現 Perlの正規表現は、そのオリジナリティと有用性で広く知られており、L
小ネタです, 忘備録として残しておきます. metacpan.org PerlにはText::CSVという, CSV(Comma Separated Value)をパースするモジュールがあります. 一方で, TSV(Tab Separated Value)をパースするモジュールは, パッと見た感じいいのがなさそうでした. 解決策は以下の3つがありそうです: split など駆使して手動でパースする 一番素朴なのは, こういう感じで split などを使って, タブを切り分ける方法でしょう($line が1行のTSVとします). my @fields = split /\t/, $line; ...とはいえ素朴ですし, エッジケース(あるのか?)に対応していないかも... という気がするので, なるべくよしなにモジュールの力を借りたいと思うかもしれません. そういう時は... Text::C
Polyfills import maps and other ES Modules features on top of the baseline native ESM support in browsers. With import maps now supported by all major browsers, ES Module Shims entirely bypasses processing for the 74% of users with native import maps support. For the remaining users, the highly performant (see benchmarks) production and CSP-compatible shim kicks in to rewrite module specifiers dri
YAPC::Kyoto 2023で熱が高まってきた(?)ので, 唐突ですが7月〜8月辺りの休日に湘南.pmをやります. なぜ湘南なのかと言うと, 自分が現在藤沢に住んでいるので湘南エリアで開催すると便利だからです. おそらく藤沢近辺*1で開催することになりそう...? 7月〜8月の休日のどこかで https://t.co/XQkcteoxCc 開催しようと思うんですが, 会場のキャパどうするか悩んでいるのでアンケートにご協力ください!!!!— 技術王者papix (ChatGPT評) (@__papix__) 2023年5月29日 まずは会場のキャパをさっくり見積もりたいので, アンケートを実施中です. ちょっとでも興味を持った方は是非回答お願いします!!!!!!!!! *1:湘南 - Wikipediaによると, 「一般的には平塚市を中心とした相模湾沿岸5市町(藤沢市から中郡二宮町まで)
背景 新機能の追加が継続している 既存機能の改修、改善が継続している 時とともにCIの実行時間が増加し続けている 自動テストはときどき失敗する(flaky) CIの成功が、コードレビューを始めるきっかけになっている(CIが成功するまでコードレビューが始まらない) 問題と原因 問題 CIの待ち時間が長く感じる 変更セットと無関係な自動テストがときどき失敗する(再試行すると成功する) 原因 CIはすべての自動テストを実行している 解決方法 1. テストの実行を並列化する すべての自動テストを実行すること にこだわりがあるときの戦略 プロジェクトによっては、変更セットの正しさを保証する最低限の線引きかもしれない CIやテストフレームワークの仕組みに応じていろいろなやり方がある マシンの並列化 プロセスの並列化 スレッドの並列化 2. 変更セットに含まれるプログラム部品に依存する自動テストだけを抽
簡単な解説 grep の -v オプションは除外を意味します。 正規表現で ^ は行頭を表します。 正規表現の \s は空白文字を表し、^\s* は行頭から0回以上繰り返しの空白を意味します。 そのため、\s*# と書くと # から始まるコメント行(#より前には空白がいくつあっても良い)にマッチします。 正規表現の $ は行末を表します。^\s*$ だと空白のみの行にマッチします。 実行例 #========================= # ここのコメントは除去されます #========================= class Hoge # このコメントも除去されます def hello puts "Hello, World!" # ここのコメントは除去されません end end # このコメントは除去されます hoge = Hoge.new hoge.hello #=> H
ブログタイトルの通りですが、技術評論社より 2019年10月24日発売の WEB+DB PRESS Vol.113 の連載「Perl Hackers Hub」に寄稿しました。 連載「Perl Hackers Hub」の今回のテーマは「【第58回】正規表現の勘所」で、尾形 鉄次さん(@xtetsuji)執筆です。文字列処理に便利な正規表現ですが、読みづらいなどの理由で敬遠されがちです。初学者向けの丁寧な解説が少ないと筆者が感じたPerlの正規表現について解説します。#wdpress — WEB+DB PRESS編集部 (@wdpress) October 24, 2019 WEB+DB PRESS について WEB+DB PRESS は技術評論社より隔月(偶数月)に発行されるウェブ系のIT技術に関する専門雑誌です。 サーバサイドで動作するプログラミング言語についてのトピックも手厚く、その中で
The Complete Course of the Raku programming language About this course Part 1. Raku essentials Basic introduction to Raku and its compiler What is Raku Raku vs. Rakudo How to install Rakudo Editors and IDEs Conventional file extensions Hello, World! Notes on using Unicode Running programs Running from command line Running from REPL Running from IDE Using docker Using online services Simple input a
Excelのアドインの基本的な使い方は前回説明してるので、まだお読みでない方はそちらから順にチェックしていただきたい。今回はよりビュジュアルに優れたアドインを2本紹介する。どちらも簡単に使えるものを選んだが、慣れてきたらさらに高度なアドインを使うのもおすすめだ。うまく使えれば、人と被ることがない目を引くシートを作成できるはずだ。 文/戸田 覚 ネットワーク図を作る 最初に紹介するのは「GIGRAPH」で、情報や予算などの流れを示す図解が簡単に作れる。いわゆるチャート作成のアドインなのだが、矢印の太さが数値によって変わり、数値自体もラベルで表示されるなど、非常に手が込んでいる。 自分でいちから作成しようと思ったらかなり大変なので、用途が見合えばおすすめのアドインだ。
名古屋に行ってきました、名古屋、愛知県名古屋市。人生で二回目(たぶん)の名古屋、YAPC::Nagoya::Tiny 2019への参加です。 いつも通りダラダラ長い文章になる予定なので先にまとめを書いておくとYAPC楽しかった、関係者の皆さんありがとうございます、きしめんが美味しかった、名古屋城広い、次の開催は...!です。 YAPC参加運が無い そもそもYAPC参加運に恵まれない星の下に生まれたようで初参加のYAPC::Asia Tokyo 2010は、父親の葬儀(2010/10/13)が終わって翌々日(10/15)の開催でして。 翌年からはだいたい秋頃に開催されるYAPC::Asiaとかぶる感じで法要が入る、喪主なのでサボるわけにはいかずでYAPCに行けないことが多く、法要が一旦落ち着いてからはなんかうまいこと 納期とかぶる、納期直前の厳しい時期にかぶるでYAPC::Japanとなって
metacpanのAPIを使う作戦 (断念) metacpanにはAPIがあるので、これを活用できないか考えます。 curl 'https://fastapi.metacpan.org/v1/module/_search?q=distribution:Perl-Critic&size=5000' というコマンドを実行することで、metacpanからPerl-Criticディストリビューションに含まれるモジュールの一覧を取得できます。pod というフィールドが含まれているのでこれが使えそうです。 が、この pod フィールドには、連続する空白文字をスペースに変換したPODの文字列が含まれています*1。テキストエディタの拡張機能などから使うぶんにはこれでもよいかもしれませんが、一覧として見るにはちょっと使いづらそうです。 手元にインストールしたモジュールのPODを抽出する作戦 metacpan
The motivation for Module Federation is developing one or more applications with multiple teams. Applications are split into smaller application "parts". These could be frontend components like a "Header" or "Sidebar" component, but also logical components like "Data Fetching Logic" or other business logic. Each part can be developed by a separate team. Applications or parts of them share other pa
始めに UXの向上のため名前を入力した際にふりがなを自動で入力したいことがあると思います。調べた感じ以下の2つのライブラリが有名っぽい気がしたのでそれぞれについて検証してみました。 https://www.npmjs.com/package/vanilla-autokana https://www.npmjs.com/package/historykana サンプルはcodesandboxで書きましたので、動作を確認したい方は触ってみてください。 各ライブラリの使い方 vanilla-autokana こちらはjqueryのプラグインにあるautokanaをインスパイアして作られたもののようです。DOM要素を指定するだけで後は自動で変換されるので楽ですね。 import * as AutoKana from 'vanilla-autokana'; AutoKana.bind('#name'
さて、ここで今この記事を読んでいる読者は、私と同じように何らかの理由があってタイムスタンプを変更したい方が多いのではないか、と思います。 私がタイムスタンプを変更したい理由は、とあるビルドシステムがファイルのタイムスタンプを使って差分ビルドの「ビルドする・しないを決める」、かつ、同じワークスペースでブランチを行き来するため pull したときのタイムスタンプが、そのブランチにおけるファイルの変更と一致しないため、差分ビルドしたときに入ってほしいものが入ってない、入ってほしくなものが入ってしまった。という事象の解決のためでした。
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは非エンジニアとして普段からプログラミング情報を発信しているnote103こと門松宏明さんで、テーマは「自作ツールによる日常業務効率化」です。 本稿のサンプルコードは、WEB+DB PRESS Vol.112のサポートサイトから入手できます。 簡単なツールで日々を効率化する 筆者は昨年までフリーランスの編集者として活動していましたが、現在はIT企業のカスタマーサポートとして働いています。その一方で、数年前にPerlのプログラミングに出会って以来、Perlを使って自分のためのツールをたくさん作ってきました。本業のプログラマーのように大規模なプログラムや本格的な手法は扱えませんが、基礎的な構文を組み合わせるだけでも驚くほど多様なプログラムを作れることを日々実感しています。 Perlは今なお時代とともに着実な進化を遂げ
UNIXが生まれてから半世紀。脈々とソフトウエアの進化を支えてきた技術は、どのようにして今に至るのか? そこから学べるものとは? 日本UNIXユーザ会「jus」の法林浩之さんが、イベントレポートを中心に「UNIXの今」をお届けします! 日本UNIXユーザ会(jus)の法林です。この連載では、jusの活動報告を通して、IT関連のさまざまな話題をお届けしていきます。お楽しみください。 今回は、2021年8月に開催した「Learn Languages 2021」の模様をお届けします。 イベント概要 ・タイトル:Learn Languages 2021 ・日時:2021年8月28日(土) 12:00-17:00 ・会場:オンライン Learn Languagesとは? Learn Languages(通称:LLイベント)は、「複数のプログラミング言語を学ぼう」という趣旨のもとに開催しているイベント
package main import ( "fmt" "net/http" "github.com/mozillazg/go-httpheader" ) type Options struct { hide string ContentType string `header:"Content-Type"` Length int XArray []string `header:"X-Array"` TestHide string `header:"-"` IgnoreEmpty string `header:"X-Empty,omitempty"` IgnoreEmptyN string `header:"X-Empty-N,omitempty"` CustomHeader http.Header } func main() { opt := Options{ hide: "hide",
Perl Hackers Hub 最終回 Carmelによる依存モジュール管理 CPANモジュールの更新を高速、安全に(1) 本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはcpanm、Plackの作者としても知られる宮川達彦さんで、テーマは「Carmelによる依存モジュール管理」です。 Carmelとは 規模にかかわらず、Perlでアプリケーションを開発すると、CPANモジュールに依存することは避けられません。書き捨てのワンライナーならともかく、作成したアプリケーションをデプロイ、メンテナンスしていくうえでは、依存しているモジュールのバージョンも管理することが重要になります。ある日、依存しているCPANモジュールに互換性のない変更が入ったせいで、自分のアプリケーションでエラーが出るようになった、という経験は思い当たる方が多いのではないでしょうか。 この
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはコルクことkolukuさんで、テーマは「Perlの時間モジュール」です。 業務でコードを書くうえで時間は重要な要素です。日付の管理や特定の形式への変換、ミリ秒まで取り扱いたい場合など、さまざまなケースがあります。Perlには、これらの時間の取り扱いを便利にするモジュールがあります。本稿では、Perlの時間モジュールについて、標準モジュールと拡張モジュールの両方の側面から追っていきます。 本稿は、執筆時点2021年1月の最新版であるPerl 5.32.0を用いました。本稿のサンプルコードは、WEB+DB PRESS Vol.121のサポートサイトから入手できます。 Perlにおける時間の基本 本節では、Perlが時間をどのように管理しているのか、そして時間をどのように扱うのかを解説します。 UNIX時間による時間
検証環境CentOS 8 で検証する。 ]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Tue Jun 4 09:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux カーネルコンフィグ異なるバイナリを作成するための設定。Linux は様々なハードウェアをサポートしており、また、機能もわんさかある。これらの機能をすべて実行バイナリに含めると、使ってない機能のせいでセキュリティリスクが無駄に高くなったりバイナリサイズがでかくなったり分岐処理が挟まって性能が落ちたりして都合が悪い。そこで、ソースコードレベルで機能の有効/無効を切り替えて専用のカ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く