更新日: 2020年8月14日 このページの目的 プログラマーは、クライアントから提供されたPDFファイルで、その要求を実現させようとしたとき、PDFのどんなところを見ているのでしょうか。このページでは、ちょっと珍しい視点でPDFファイルを解き明かしていきます。 自分でプログラムを書いてPDFファイルからテキストデータを取り出したいという人も、ぜひご一読ください。 はじめに PDFファイルをクリックすると、あたかも紙に印刷したかのように、どんなマシンでも同じような見た目で文章や画像がディスプレイに表示されます。 この単純な事実は、日常的にPDFファイルを利用していると当たり前に感じられるかもしれません。しかし、よくよく考えると驚くべきことです。 いったい、どのような仕組みがあれば、「過去から現在に至るさまざまな種類のコンピューターで見た目を変えずに同一の紙面を再現する」という目的を達成でき
データアナリティクス事業本部 サービスソリューション部 サービス開発チームのしんやです。 Notionの直近リリースノートに「Mermaidっていうマークダウン構文がNotionで使えるようになったよ!」という情報が載っていたので、試してみた内容を軽くではありますが紹介したいと思います。 目次 Mermaidとは 実践 #1. フローチャート #2. シーケンス図 #3. クラス図 #4. 状態遷移図 #5. ER図 #6. ジャーニーマップ #7. ガントチャート #8. パイチャート #9. 要件図 まとめ Mermaidとは Mermaidとは、フローチャート、シーケンス図、クラス図、ガントチャート、およびgitグラフを生成するためのマークダウン構文です。 コードから良い感じのグラフを生成できるイメージについては下記動画を参照頂くと良さそうです。 実践 では早速実践してみたいと思いま
本記事のモチベーション 約8年前、Gitを使い始めたときに以下の記事を公開したところ、想像以上の反応をいただきました。 当時はSubversionからGitに移行し、試行錯誤をしている中だったこともあり、多くの反応をいただけたことはモチベーションのひとつでした。 ただ、時が経ち、当然かもしれませんが現在は当時と違う書き方をしており、思想として変わっていない部分はあるものの、今でもときどきLikeをいただく中で、アップデートを全くしないのは誠実じゃないなと感じていました。 というわけで、現在のフォーマットも数年後には変わっている可能性が高いですが、その時々のスナップショットを公開することにも何らか意味があるかなと思い、「今の僕はこうコミットメッセージを書いているよ」というのをまとめました。 Gitを使う環境 開発フローやホスティングサービスごとのUIのdiffによって、最適なフォーマットは変
小ネタです、JavaScriptで本日の日付をYYYY-MM-DD形式で得るコードは案外面倒です。 本日2023年4月17日なら 2023-04-17 という文字列を得るコードはRubyならTime.now.strftime("%Y-%m-%d")、Pythonならdatetime.today().strftime("%Y-%m-%d")(importは省略しました)と簡単に書けますが、JavaScriptでは案外面倒なのです。 追記: いくつかの間違いのご指摘がありましたので修正しました(2023-04-19)。 DeepAIが生成した画像です いっけん正しいようで間違ったコード new Date().toISOString().slice(0,10) new Date()で本日の日時を取得します toISOString()メソッドは日時データをISO形式の文字列に変換します、例えば 2
注意 この記事は 2020 年 09 月 24 日現在、古い情報となりました。 eslint-plugin-prettier の利用は非推奨であると公式がアナウンスを出しています。 そのことについては Prettier と ESLint の組み合わせの公式推奨が変わった にてまとめましたので、こちらもご覧ください。 また eslint-plugin-prettier は公式推奨ではなくなりましたが、それは Editor などの外部環境の進化によるものでこのプラグイン自体に何か問題が起きたわけではありません。 そして eslint-plugin-prettier を利用した設定方法、特に eslint-plugin-prettier と eslint-config-prettier が何を解決していたかを知らないと、prettier-eslint が何をどう解決したかを理解できないはずなので
YAMLは「便利なJSON」として使われることが多い一方、その複雑性から落とし穴も多く、しばしば批判の対象になります。 なぜYAMLはそこまで複雑なのでしょうか? その背景のひとつは、本来のYAMLがJSONとは大きく異なる目的意識で作られているからです。 本稿ではYAML specに従う形でYAMLのコンセプトを解説することを目指します。残念ながら、ここに書かれているYAMLの思想は実際には実用されているとは言い難いですし、これらの背景を理解しても「YAMLは複雑だ」という事実がひっくり返ることはないでしょう。それでも、YAMLの複雑さの源泉を体系的に理解し、YAMLとほどほどの距離感で付き合う助けにはなるのではないかと思います。 この記事ではこういう話をしますYAMLはJSONとは独立に、異なる目的で生まれた野心的な仕様であるアンカーやタグなどの強力な構文は、これらの目的を満たすために
電子メール、ネットワーク機器集中管理、異常検知、分散処理、クラウド基盤などのシステム開発に従事。古代Rubyist。 CLI や TUI なアプリケーションを使っていると、端末の画面が崩れてしまうことがよくあります。 たとえば、こんな TUI が、 環境によってはこんな感じで崩れます。 スクロールなどをしながらしばらく使っているとさらにどんどん崩れていきます。 こうなってしまった場合、とりあえず Ctrl-l で画面を再描画することで、大抵はなんとか読める程度にリセットできますので、ことあるごとに Ctrl-l を連打することになります。 ですが、どうしようもないケースもままあります。 例えば、私の場合は以下のようなシチュエーションで困ります。 w3m でテーブルなどを表示するとレンダリングが崩れる less でログの閲覧の際に表示されるべき文字が表示されず見落としが発生する Wander
Markdown形式でメモを作成できるサービスのObsidianが使用しているObsidian Canvasファイル形式を「JSON Canvas」ファイル形式としてオープンソース化することを発表しました。 JSON Canvas — An open file format for infinite canvas data. https://jsoncanvas.org/ Announcing JSON Canvas: an open file format for infinite canvas data - Obsidian https://obsidian.md/blog/json-canvas/ 仕様についてはjsoncanvas.orgに記載されています。サイトにアクセスするとこんな感じ。右下の「Toggle output」をクリックしてみます。 右側にJSON Canvas形式
こんにちは。バクラク事業部 Enabling チームの @izumin5210 です。最近「HUNTER×HUNTER」の既刊を全部読みました。 この記事はLayerXテックアドカレ2023の9日目の記事です。 前回「1人目データアナリストとしてデータチームに異動しました 」 次回「Slack × Zapier × MiroでKPTでの振り返りをラクにする」 RDB や KVS などのデータ保存先において、データを正規化せずにそのまま保存したいと思うことはありませんか? 8月にリリースされた「バクラク請求書発行」というプロダクトには「柔軟なレイアウトカスタマイズ」機能が搭載されています。リンク先の画面操作イメージを見ていただくと、この機能の雰囲気を理解していただけると思います。この機能が扱うレイアウトデータはまさに「関係の正規化をせずに保存したいデータ」でした。 bakuraku.jp こ
ウェブサイトのアクセス数や訪問者の属性を分析するために「Google Analytics」を使っている人は多いはず。無料のオープンソースソフトウェア「GoAccess」を使うと、トラッキングコードをウェブサイトに埋め込むことなく、リアルタイムにアクセス状況をターミナルやブラウザ上で可視化することができます。 GoAccess - Visual Web Log Analyzer https://goaccess.io/ 今回はUbuntu 18.04上にGoAccessをインストールしてみます。最新版をインストールするには下記コマンドを実行すればOK。 echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list wget -O -
yyyy-MM-dd HH:mm:ssのような書式ではなく2006-01-02 15:04:05である。この数値でなければ正しく表示されない。は? なにこれ? ひどくない? 手順 Go言語をインストールする hugoをインストールする プロジェクト作成&pulpテーマ適用 以下のように設定ファイルを編集する コード 日付の表示形式をyyyy-MM-ddに変更したい。以下のようにする。 config.toml [params] listPageDateFormat = "2006-01-02 15:04:05" singlePageDateFormat = "2006-01-02 15:04:05" 具体的な日時に見えるでしょ? これ、フォーマットなんだぜ……。 ハァ? と思うでよね? ふつうyyyy-MM-dd HH:mm:ssとか%Y-%m-%d %H:%M:%Sとか、そーゆー感じなのに
JavaScript/TypeScriptの高速フォーマッター「Rome Formatter」リリース。Rust製でPrettierより約10倍高速と JavaScriptのツールチェインを統一的に提供することを目指した「Rome Tools, Inc.」(以下、Rome Tools)は、JavaScriptおよびTypeScriptのコードの書式を高速に整えるフォーマッター「Rome Formatter」をリリースしました。 Release of the Rome Formatter, a super fast formatter for JavaScript, with a focus on Prettier compatibilityhttps://t.co/2iXq5Gm5K3 — Rome Tools (@rometools) April 5, 2022 Rome Toolsは、
メディアドゥでは、エンジニア有志によって執筆された【Tech Do Book】という合同誌を発行しています。 本日はその中から、Tech Do Book vol.1 【2章 やさしいEPUB入門】を紹介します。 はじめに 「電子書籍業界にいるにも関わらず、EPUBについて知らないのは、本格的にやばいのでは?🤔」 そう強く感じるようになったのは、メディアドゥがW3Cに加入してからです。 W3CとEPUBのつながりについては後述しますが、国際標準規格となっているEPUBについて知ることで、 会社や、電子書籍業界の動きをより面白く感じられるのではないかと考えています。 しかし、インターネットで情報を調べても情報は少なく、欲しい情報がなかなか得られません。 今回は、メディアドゥに在籍しているというメリットを活かし、今までのEPUBの歴史や最新の情報について纏めてみました。 電子書籍とは まず初め
プロンプトエンジニアリングの記事です。 ChatGPTなどGPT-3.5系である程度安定して、加工しやすい出力を得るためのノウハウができたので書きました。土日に別の実験をしていて副産物的に得られたものです。 サンプルコードはTypeScriptですが、プログラミング言語に依存した話ではありません。簡単な正規表現による文字列置換のサンプルです。 出力を得られると何が嬉しいのか? 自然言語を自然言語で加工して、キーと値のペアを取得する、JSONを取得するなどすることができるようになるため、テキストを処理できる汎用ミドルウェアとしてLLMを使えるようになります。おそらくLLMを本格的にソフトウェアに組み込んでいく上で、基礎テクニックとなるでしょう。 異なる複数のプロンプトをつなぐときにも大切なテクニックです。 基本的な考え方 GPT-3.5系ではフォーマットを提示するとそのフォーマットに沿ったテ
Published 2022/01/21 20:49 (JST) Updated 2022/01/21 21:07 (JST) 筑摩書房と中央公論新社、河出書房新社、角川春樹事務所の出版4社が、文庫本の本文を印刷する用紙を共通化することが21日分かった。2月刊行分から順次用紙を切り替える。出版不況が続く中、用紙の確保と調達価格の安定化が狙い。中央公論新社によると業界初の取り組みという。 「ちくま文庫」「中公文庫」「河出文庫」「ハルキ文庫」などを抱える4社と王子製紙が用紙を共同開発した。これまで文庫本の本文用紙は、各社が独自の仕様を持ち、色合いや紙の厚さが異なっていた。近年は書籍の販売低迷で、製紙会社側が出版社ごとの用紙生産を維持するのが難しくなり、共通化を協議してきた。
こんにちは、よしこです。 この記事は 2020年に立ち上げたWebフロントエンド構成の振り返り の「linter/formatter」項の詳細記事です。単体でも読めますが、よければ元記事もあわせてどうぞ! この記事では、今わたしが 株式会社ナレッジワーク というスタートアップで開発・運用しているプロジェクトにおいて便利だったLint/Format関連の設定についてご紹介していきます。 使っているのは、TSのlintのためにESLint, CSSのlintのためにStylelint, 主なファイルのformatのためにPrettierです。 ESLint pluginsとextendsだけどんなもの入れてるか載せておきます。 "plugins": [ "strict-dependencies", // 後述 "unused-imports", // 後述 ], "extends": [ "a
本記事では、BtoBマーケティング初心者の方向けに基礎的な考え方を解説します。 こんな方におすすめ 「BtoBマーケティングとは?」を知りたいBtoBマーケティングに取り組む理由を知りたい考え方やプロセス、全体像を知りたい才流(サイル)はこれまで、スタートアップから大企業まで、180社以上のBtoBマーケティングを支援してきました。お客様の課題として多いのが、「施策を実行しているが、正しいのかわからない」「成果が出ない」という声です。 原因の多くは、施策実行前のプロセスで正しい戦略を立てられていないことにあります。 成果の出ない施策に時間やコストをかける前に、まずは全体像や重要な考え方を理解し、正しい戦略を立てましょう。これからBtoBマーケテイングをはじめたいと考えている方は、ぜひご一読ください。 また、才流では成果が実証されたメソッドにもとづき、マーケティング戦略立案から施策実行まで支
こんにちは。業務委託として SRE チームのお手伝いをしている @syucream です。 本記事では Repro にて開発した、 Go 製のカラムナフォーマットへのデータ変換ツール columnify について、開発背景や技術的な取り組みを紹介します。 なぜカラムナフォーマットか? ことのおこり 事業がスケールすると共に扱うログの量が増えることは、喜ばしい反面さまざまな悩みをもたらします。その中でも顕著なものの一つとしてコストの問題が挙げられます。 膨大なログデータはログに対するストレージ料金を増大させると共に、分析や可視化に際してクエリで求められるコンピュートのコストも無視できなくなっていきます。 近頃 Repro でもコンテナのログの管理においてこの問題が顕著になってきました。Repro のバックエンドシステムは ECS 上のコンテナで実現され、ログの閲覧・管理のため外部のログ収集サ
動画配信・キャプチャーソフトのOBSは、2024年7月に正式リリースされたバージョン30.2で「Hybrid MP4」に対応しました。このHybrid MP4と通常のMP4は何が違うのかについて、OBSの開発チームが公式ブログで解説しています。 Writing an MP4 Muxer for Fun and Profit | OBS https://obsproject.com/ja/blog/obs-studio-hybrid-mp4 MP4の前身は、Appleが開発した「QuickTime File Format(QTFF)」です。QTFFは通常「MOV」という拡張子で知られており、マルチメディアコンテンツを効率的に格納し再生する目的で1990年代に開発されました。2001年、国際標準化機構(ISO)がQTFFを基にして、ISOベースメディアファイルフォーマット(BMFF)のPart
Go言語でstrftime・strptime相当の関数を提供するライブラリを実装しました。 t, _ := timefmt.Parse("2020/07/24 09:07:29", "%Y/%m/%d %H:%M:%S") fmt.Println(t) // 2020-07-24 09:07:29 +0000 UTC str := timefmt.Format(t, "%Y/%m/%d %H:%M:%S") fmt.Println(str) // 2020/07/24 09:07:29 str = timefmt.Format(t, "%a, %d %b %Y %T %z") fmt.Println(str) // Fri, 24 Jul 2020 09:07:29 +0000 なぜ作ったか Go言語の標準ライブラリには日時と文字列を変換する関数がありますが、2006年1月2日の15:04
Prettier 2.7 がリリースされました。 このバージョンには TypeScript 4.7 の対応のほかに、新しい CLI オプションである --cache と --cache-strategy が含まれています。 --cache と --cache-strategy を実装したのは自分なので、その背景や実装、そして使い方の話を雑にしようと思います。 背景 Rome Formatter のブログが公開されて日本の開発者からもそれなりに大きな反響がありました。 私個人としてはコードフォーマッターにそこまでの速さを求めていないのであんまり興味はなかった(もちろん速いほうがいいけど)のですが、みなさん意外と興味あるんだなあという気持ちで眺めていました。 それからしばらくして Prettier の https://github.com/prettier/prettier/issues/58
Sort a list of numbers or strings alphabetically or by length
データ構造が決まるとアルゴリズムも自ずから定まる、みたいな話もあるように、ソフトウェアエンジニアリングの文脈では「どうデータを持つか」が重要だ。これはちょっとしたシェルスクリプトでも同様。 自分はUNIX哲学が好きで、なんかちょっとしたツールを作るときは基本的に1行1データのテキスト形式を喋るように作成する。そのほうが適用できるツールが多くなるからだ。shellscriptを使うときはwhile read文を使えば1行1コマンドを実行する処理をすぐ書けるし、sedを使えば基本的な加工ができる(互換性の問題があるから基本的にgsedを使うけど)。開発や運用にLinuxを使っている以上、こういう形式を採用しておくと取り回しやすくなる。 その一方、1行1データのテキスト形式はそれ自体では構造化されていないという問題がある。ちょっとでも複雑な形式で書こうとすると、CSVやTSVにしようとか、:でセ
Docs | Playground An extremely fast Python linter and code formatter, written in Rust. Linting the CPython codebase from scratch. ⚡️ 10-100x faster than existing linters (like Flake8) and formatters (like Black) 🐍 Installable via pip 🛠️ pyproject.toml support 🤝 Python 3.13 compatibility ⚖️ Drop-in parity with Flake8, isort, and Black 📦 Built-in caching, to avoid re-analyzing unchanged files 🔧
なぜ npm ツールチェインで消耗した こういうところでシュッと deno を入れておくことで、あわよくば本番で使う準備をする 経緯 久々に eslint の設定を見直したらやたら長大な感じでメンテがしんどくなった npm/yarn workspace で monorepo 化した際に、様々な eslint のバージョンが混在して peer-deps の管理が困難になった deno に組み込まれてる lint, fmt は deno かどうかはあまり関係なく、単に typescript なら使える 中身は https://dprint.dev/ と https://github.com/denoland/deno_lint deno lint は eslint の recommended 相当のものは実装してある eslint + typescript をメンテするより、 eslint 吹
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Although SQL is reasonably consistent in its implementations, there are several different dialects available with variations of syntax and grammar. SQLFluff currently supports the following SQL dialects (though perhaps not in full): ANSI SQL - this is the base version and on occasion may not strictly follow the ANSI/ISO SQL definition Athena BigQuery ClickHouse Databricks (note: this extends the s
SQLFluff is an open source, dialect-flexible and configurable SQL linter. Designed with ELT applications in mind, SQLFluff also works with Jinja templating and dbt. SQLFluff will auto-fix most linting errors, allowing you to focus your time on what matters. Lint 🧼SQLFluff finds issues with your SQL code and reports them back to you (and your team) automatically so that your code reviews can be mo
How to Use AVIF: The New Next-Gen Image Compression FormatAugust 5, 2020 November 2, 2021 Update: Firefox 93 now supports the AVIF format without feature flag. August 26, 2020 Update: Chrome 85 now supports the AVIF format and the link to the preview build of the Squoosh.app has been updated as it now fully supports AVIF. A More Optimal Image Format One of the upcoming technologies we're really ex
Djot is a light markup syntax. It derives most of its features from commonmark, but it fixes a few things that make commonmark's syntax complex and difficult to parse efficiently. It is also much fuller-featured than commonmark, with support for definition lists, footnotes, tables, several new kinds of inline formatting (insert, delete, highlight, superscript, subscript), math, smart punctuation,
先日 columnify という、入力データを Parquet フォーマットに変換するツールがリリースされました。 cf. 軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog また、fluent-plugin-s3 で compressor として columnify をサポートする話が出ています。1 cf. Add parquet compressor using columnify by okkez · Pull Request #338 · fluent/fluent-plugin-s3 個人的に前々から Docker のログを Parquet フォーマットで S3 に put して Athena で検索できると素敵だなと思っていたので喜ばしいことですね!そんなわけで、Docker のログを fluentd log dr
業務でeslintとprettierの設定をいじることがあって、そういえばこの2つってどう設定するのがベストなんだっけってなって調べた時のメモ 公式推奨の形もいつのまにやら変わっていて自分が知っている方法ではなかった あと副業でhuskyを設定する機会もあったが、バージョンアップで仕様が変わっていたのでまとめる これらについてはすでにいくつか記事が見られるが、備忘録も兼ねてここでアウトプットしておく 結論、今はeslint-config-prettierのみ設定するのが公式推奨の形 eslint-plugin-prettierとeslint-config-prettier 2020年6月まではeslintとprettierを両方使う場合はeslint-plugin-prettierとeslint-config-prettierの両方を使うのが推奨されていたらしい ただ、今はeslint-p
プロジェクトに関わるすべての方のための祭典、Backlog World。3回目の開催となる「Backlog World 2021 旅 ~Journey~」は、プロジェクト管理に関する知見を相互に高め合うことを目的として開催されました。ここで、株式会社サービシンクで代表取締役兼テクニカルディレクターの名村氏が、「PJメンバーで共有する『プロジェクト憲章』ことはじめ」をテーマに登壇。ここからは、情報の共有についてと、フォーマットの使い方を紹介します。前回の記事はこちらから。 「〇〇がどこに書いてあるか」の情報共有も必要 名村晋治氏(以下、名村):情報共有がプロジェクトの成功の鍵をもつ。成功させないといけません。そのために情報共有をしていきましょう。そしてプロジェクト憲章の話をしましたが、それ以外にもう1つです。プロジェクトに必要な、それ以外の情報共有です。例えばサーバーのアドレスや、テストサー
ピクサーやAdobe、Appleらが3Dシーン規格「OpenUSD」策定へ リナックス財団は8月1日(現地時間)、グループ傘下の非営利団体JDF(Joint Development Foundation)の協力のもと、関係各社が3Dシーンの技術規格「OpenUSD」の仕様書を共同作成すると発表しました。現仕様を開発したピクサーのほか、Adobe、Apple、Autodesk、NVIDIAが参加を表明しています。 (出所:リナックス財団) リナックス財団によれば、新団体はOpenUSD連盟(Alliance for OpenUSD: AOUSD)と名づけられ、3Dシーンの技術仕様「OpenUSD」の相互運用性を高める取り組みを行います。JDFが独立した立場で法人・法務インフラを提供し、国際標準化機構(ISO)における規格制定を目指したフォーラムが運営されます。 3Dシーンの改修コストを下げる
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く