tag:crieit.net,2005:https://crieit.net/tags/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/feed 「ライブラリ」の記事 - Crieit Crieitでタグ「ライブラリ」に投稿された最近の記事 2021-05-21T16:23:01+09:00 https://crieit.net/tags/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/feed tag:crieit.net,2005:PublicArticle/17227 2021-05-21T16:23:01+09:00 2021-05-21T16:23:01+09:00 https://crieit.net/posts/php-Laravel-60a75fd51f5f0 php(Laravel)でエクセルのインポート機能付けるときに試したもの <h1 id="渡されたデータがエクセルだった"><a href="#%E6%B8%A1%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%A0%E3%81%A3%E3%81%9F">渡されたデータがエクセルだった</a></h1> <p>「ほいっじゃあこれ取り込んでね」<br /> と渡されたのは、2~3万行のデータ(エクセル形式)だった。<br /> …えー!CSVじゃないんですかー!?!?CSVはやったことあるけど、エクセルは知らーん!!</p> <p>ということで、3つほどライブラリを試してようやく機能実装が出来たので、その時のメモです</p> <h1 id="Laravel Excel"><a href="#Laravel+Excel">Laravel Excel</a></h1> <p>URL:<a target="_blank" rel="nofollow noopener" href="https://laravel-excel.com">https://laravel-excel.com</a></p> <p>これはLaravelのライブラリ(パッケージ?)ですね。<br /> 後に紹介するPhpSpreadsheetを基に作られております。<br /> エクセルだけでなくcsvも扱えます。</p> <p>使い方も特別難しいわけでもなく、<br /> 公式ドキュメントを落ち着いて読んでいけば大抵は問題ないはずです。</p> <p>…がしかぁし!</p> <p>データ数が少なめのテストデータでは問題ありませんでしたが、<br /> いざ実際の2~3万件データで試したところメモリ不足で死に至りました。(チーン)</p> <p>php-fpmの設定弄ってみたり、<br /> toArrayがいけないのか?と思いonRowで1行ずつinsertしてみたり…。<br /> かなり色々試行錯誤してみましたが解決には至らず、ライブラリ使用自体を断念しました…。</p> <p>(もし解決法ご存知の方がいらっしゃいましたら、そっとご教示いただければ幸いに存じます)</p> <h1 id="PhpSpreadsheet"><a href="#PhpSpreadsheet">PhpSpreadsheet</a></h1> <p>URL:<a target="_blank" rel="nofollow noopener" href="https://phpspreadsheet.readthedocs.io/en/latest/">https://phpspreadsheet.readthedocs.io/en/latest/</a></p> <p>くそう、ならば元であるコイツで試してみるか!<br /> てな感じで、半ヤケクソでやってみました。<br /> なお、phpExcelというライブラリの後継版らしいです。</p> <p>結論、メモリ不足も解決せず、なんなら処理時間も増えて、解決には至りませんでした…。<br /> 使用感としては、シンプルで使いやすいなーとは思いました。<br /> また、laravel excelより使用率が高いので、参考にできる記事も多い(日本語記事も多い)という点は良かったです。</p> <h1 id="Spout"><a href="#Spout">Spout</a></h1> <p>URL:<a target="_blank" rel="nofollow noopener" href="https://opensource.box.com/spout/"> https://opensource.box.com/spout/</a></p> <h4><strong>救 世 主</strong></h4> <p>メモリ不足問題はこれで解決しました!!!<br /> 代わりにCPU使用率がギュイーンと上がりますが。</p> <p>ただこれ、マイナーなのかわかりませんがググってもほぼ出てきません。<br /> 出てきたとしても全部英語です。google翻訳がある世界に生まれてよかった。</p> <p>基本公式ドキュメントを頼りにやるしか無いので、赤ちゃんエンジニアにはちょっと厳しかったです…。<br /> やりたいことが至ってシンプルだったのでなんとかなりましたが。</p> <p>気力があれば、使い方のメモも別で書こうかと思います。来世までにはきっと。</p> <h1 id="なお後日"><a href="#%E3%81%AA%E3%81%8A%E5%BE%8C%E6%97%A5">なお後日</a></h1> <p>えらいひと「ちょっとフォーマット変えたので、再度送るで!これで取り込んでくれや! つCSVファイル」<br /> ワイ「いやCSVで出力できんのかい!!!!!!!!!!!」</p> <p>~完~</p> みみみみみ tag:crieit.net,2005:PublicArticle/15649 2019-12-29T11:18:43+09:00 2019-12-29T11:18:43+09:00 https://crieit.net/posts/Twitter-URL Twitterでツイートできる文字数を正確に数える(絵文字もURLも) <p>Nuxt.jsでツイートするアプリを作りたいなと思い、<br /> 文字数ってどうやって計算するんだろ?って思ったら、<br /> 公式でライブラリ(<a target="_blank" rel="nofollow noopener" href="https://github.com/twitter/twitter-text">twitter-text</a>)が用意されているらしいので、使ってみたときの備忘録</p> <p>Java版/Ruby版/JavaScript版/Objective-C版などいろいろあるらしい。</p> <h4 id="インストール"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">インストール</a></h4> <pre><code class="shell">$ npm install twitter-text </code></pre> <h4 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h4> <pre><code class="javascript">const twitter = require('twitter-text'); // ツイートするテキスト const tweetText = "This is a test tweet"; // twitter-textで計算 const result = twitter.parseTweet(tweet); console.log(result) /* Returns: { weightedLength: 20, permillage: 71, valid: true, displayRangeEnd: 19, displayRangeStart: 0, validRangeEnd: 19, validRangeStart: 0 } */ // 日本語版の場合、文字数を2で割るとツイッターと同じになる。 const textLength = result.weightedLength / 2; </code></pre> <p>以上!!</p> <h2 id="こんなのつくってます!!"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99%21%21">こんなのつくってます!!</a></h2> <p>積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!<br /> <a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="200"/></p> <p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p> <p>要望・感想・アドバイスなどあれば、<br /> 公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで♪</p> <h1 id="参考にしたサイト"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88">参考にしたサイト</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/PND/items/17e87b8839c9099d2e70#twitter-text-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA">ツイートの文字数を <strong>厳密に</strong> 数える方法 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/twitter/twitter-text/tree/master/js">twitter-text/js at master · twitter/twitter-text</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://developer.twitter.com/en/docs/developer-utilities/twitter-text">twitter-text Parser — Twitter Developers</a></li> </ul> きらぷか@積読ハウマッチ/SSSAPIなど tag:crieit.net,2005:PublicArticle/15590 2019-12-08T11:52:25+09:00 2019-12-08T11:52:25+09:00 https://crieit.net/posts/JavaScript-hughsk-flat ネストされたJavaScriptのオブジェクトをフラットにするhughsk/flatというライブラリ <p>ネストされたObjectをフラットにしたいなと思ってたら、いいライブラリが。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/hughsk/flat">hughsk/flat</a>を使ったらすぐできたので、その備忘録。</p> <p>サンプルは、GitHubあるREADME.mdの抜粋です。</p> <h2 id="インストール"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">インストール</a></h2> <pre><code class="shell">$ npm install flat </code></pre> <h2 id="使い方2: ネスト→フラット"><a href="#%E4%BD%BF%E3%81%84%E6%96%B92%3A+%E3%83%8D%E3%82%B9%E3%83%88%E2%86%92%E3%83%95%E3%83%A9%E3%83%83%E3%83%88">使い方2: ネスト→フラット</a></h2> <pre><code class="javascript">const flatten = require('flat'); const flattedObj = flatten({ key1: { keyA: 'valueI' }, key2: { keyB: 'valueII' }, key3: { a: { b: { c: 2 } } } }); console.log(flattedObj); // { // 'key1.keyA': 'valueI', // 'key2.keyB': 'valueII', // 'key3.a.b.c': 2 // } </code></pre> <h2 id="使い方2: フラット→ネスト"><a href="#%E4%BD%BF%E3%81%84%E6%96%B92%3A+%E3%83%95%E3%83%A9%E3%83%83%E3%83%88%E2%86%92%E3%83%8D%E3%82%B9%E3%83%88">使い方2: フラット→ネスト</a></h2> <pre><code class="javascript">const unflatten = require('flat').unflatten; const nestedObj = unflatten({ 'three.levels.deep': 42, 'three.levels': { nested: true } }); console.log(nestedObj); // { // three: { // levels: { // deep: 42, // nested: true // } // } // } </code></pre> <p>以上!!</p> <h2 id="こんなのつくってます!!"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99%21%21">こんなのつくってます!!</a></h2> <p>積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!<br /> <a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="200"/></p> <p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p> <p>要望・感想・アドバイスなどあれば、<br /> 公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで♪</p> <h1 id="参考にしたサイト様"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88%E6%A7%98">参考にしたサイト様</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/hughsk/flat">hughsk/flat: Flatten/unflatten nested Javascript objects</a></li> </ul> きらぷか@積読ハウマッチ/SSSAPIなど tag:crieit.net,2005:PublicArticle/15354 2019-08-26T22:56:30+09:00 2019-08-26T22:56:30+09:00 https://crieit.net/posts/console-badge-Web-Console console-badgeを使って、作ったWebサービスのConsoleを華やかにしてみた <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/iijima_wataru">@omuriceman</a>さんの記事を見て、おもしろそうだと思い、<br /> 最近作った<a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読用の読書管理サービス</a>に取り込んでみたときの備忘録。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://omuriceman.hatenablog.com/entry/console-badge">ブラウザのデバッグコンソールにshields.io風のログを簡単に出力できるOSS「console-badge」 </a></li> </ul> <h2 id="こんな感じになりました♪"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E6%84%9F%E3%81%98%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E2%99%AA">こんな感じになりました♪</a></h2> <p><img width="722" alt="スクリーンショット 2019-08-26 5.03.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/7cf9a245-3da1-e583-fed2-91946e29c104.png"></p> <p>コンソールが可愛い感じに(<em>´ω`</em>) 続きもあるので、<br /> ぜひ「<a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>」のコンソールをのぞいてみてください♪</p> <h2 id="console-badgeをつかうと簡単に!"><a href="#console-badge%E3%82%92%E3%81%A4%E3%81%8B%E3%81%86%E3%81%A8%E7%B0%A1%E5%8D%98%E3%81%AB%21">console-badgeをつかうと簡単に!</a></h2> <p>使ったのは<a target="_blank" rel="nofollow noopener" href="https://omuriceman.hatenablog.com/entry/console-badge">記事</a>で紹介されている<a target="_blank" rel="nofollow noopener" href="https://github.com/dennis47528/console-badge">console-badge</a>。</p> <h2 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h2> <h3 id="インストール"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">インストール</a></h3> <p>まずはnpmでインストール。</p> <pre><code class="console">$ npm i -S console-badge </code></pre> <h3 id="簡単なサンプル"><a href="#%E7%B0%A1%E5%8D%98%E3%81%AA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">簡単なサンプル</a></h3> <p>冒頭のスクリーンショットにあるコードはこんな感じ。</p> <pre><code class="javascript">import * as consoleBadge from 'console-badge'; consoleBadge.log({ leftText: "遊んでくれて...", leftBgColor: "#776f59", leftTextColor: "#FFFFFF", rightText: "ありがとうございます🎉🎉🎉", rightBgColor: "#FFFFFF", rightTextColor: "#58595B" }); </code></pre> <p><code>consoleBadge</code>をインポートして、使えばOK。簡単(<em>´ω`</em>)</p> <h3 id="使い方: ログレベル"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9%3A+%E3%83%AD%E3%82%B0%E3%83%AC%E3%83%99%E3%83%AB">使い方: ログレベル</a></h3> <p>基本的には<code>console.log</code>などの拡張のため、ログレベルを指定できる。</p> <ul> <li><code>consoleBadge.log()</code></li> <li><code>consoleBadge.info()</code></li> <li><code>consoleBadge.warn()</code></li> <li><code>consoleBadge.error()</code></li> </ul> <h3 id="使い方: 設定項目とデフォルト値"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9%3A+%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%A8%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E5%80%A4">使い方: 設定項目とデフォルト値</a></h3> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/dennis47528/console-badge/blob/master/docs/API.md">公式ドキュメント</a>に書いてある設定項目とデフォルト値はこんな感じ。</p> <p>デフォルトのままだと、こんな表示に(<em>´ω`</em>)</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/70ab7afd-91da-db29-78a1-b4e01ea0ca54.png" alt="スクリーンショット 2019-08-26 5.14.10.png" /></p> <pre><code class="javascript">consoleBadge.log({ mode: "default", // スタイルの設定. "default"と"shields.io"を選択可 leftText: "Lorem", // 左側のテキスト leftBgColor: "#555555", // 左側の背景色 leftTextColor: "#FFFFFF", // 左側の文字の色 rightText: "Ipsum", // 右側のテキスト rightBgColor: "#0366d6", // 右側の背景色 rightTextColor: "#FFFFFF" // 左側の文字の色 }); </code></pre> <p>構成としては、<br /> 1. 左右に文字を表示できて、<br /> 1. 全体のスタイルと、<br /> 1. 左右それぞれにテキスト/背景色/文字の色を指定できる</p> <p>これらの設定値を好きなものに設定すると、すこし華やかになる♪<br /> Nuxt.jsで作ったサービスでは、defaultのlayoutにあるmounted関数に書いて表示するようにしています!</p> <p>以上!! 簡単(<em>´ω`</em>)</p> <h1 id="こんなのつくってます"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99">こんなのつくってます</a></h1> <p>最近、積読用の読書管理アプリ「積読ハウマッチ」をリリースしました!<br /> 今回のconsole-badgeを使ったメッセージもあるので、ぜひ見てもらえると(<em>´ω`</em>)</p> <p><a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="25%"/></p> <p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p> <p>要望・感想・アドバイスなどあれば、<br /> 公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで。</p> <h1 id="参考にしたサイト"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88">参考にしたサイト</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://omuriceman.hatenablog.com/entry/console-badge">ブラウザのデバッグコンソールにshields.io風のログを簡単に出力できるOSS「console-badge」 - omuriceman's blog</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/dennis47528/console-badge">dennis47528/console-badge: 🎨 Create simple badges in the browser console</a></li> </ul> きらぷか@積読ハウマッチ/SSSAPIなど tag:crieit.net,2005:PublicArticle/14801 2019-02-15T01:21:35+09:00 2019-02-25T15:21:06+09:00 https://crieit.net/posts/Python-HTML 純粋なPythonでHTMLを記述するライブラリを作ったから使ってほしいだけの記事 <h2 id="TL;DR"><a href="#TL%3BDR">TL;DR</a></h2> <p>Crieitに記事を投稿するのはすさまじく久しぶりな気がしますが…。<br /> おはようございます、こんにちは、今晩は。Frodoです。</p> <p>さて、今回は自作ライブラリをPyPIに登録したので使ってみてほしいというだけの記事になりますw<br /> どういうライブラリを作ったのかと言いますと、純粋なPythonの構文だけで比較的分かりやすくHTMLを構築するライブラリです。</p> <p>HTMLのテンプレートライブラリと言えばPythonではJinjaが有名でしょうか。<br /> ですが、JinjaはPythonの文法をほとんど全くフォローしておらず、新しくまったく別な言語を覚えることになってしまいます。<br /> よく使われているWebフレームワークのDjangoのテンプレート言語も似たようなものですね。</p> <p>そこで、純粋にPythonの言語機能のみを使ってHTMLを構築できないかと作ったのがRattle.pyです。<br /> Rattle.pyには次のような特徴があります。</p> <ol> <li>小型・軽量であること。Rattle.pyには依存しているライブラリがありません。</li> <li>純粋なPythonの文法のみでHTMLが構築できること。HTMLやPythonが分かっていれば覚えることはほとんどありません。</li> <li>日本語でサポートが受けられること。開発者が日本人ですから当然です。もちろん、英語でのサポートもあります。</li> </ol> <p>説明してもイメージがわかないと思いますので、実際に使ってみたいと思います。</p> <h2 id="実際に使ってみる"><a href="#%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B">実際に使ってみる</a></h2> <p>まずはインストールしましょう。話はそれからです。</p> <pre><code class="shell">$ pip install rattlepy </code></pre> <p>このように、普通のライブラリと同様pipで簡単に導入できます。<br /> 使うのも驚くくらい簡単です。</p> <pre><code class="python">from rattlepy.templating import ( html, body, head, title, h1, p, div, span, text, meta, link) with html(lang='ja') as elem: with head(): meta(charset='utf-8') meta(name='viewport', content='initial-scale=1.0;width=device-width') link(href='main.css', rel='stylesheet', type='text/css') with title(): text("Hello, Rattle.py!") with body(): with div(className='container'): with h1(): text("Hello, Rattle.py!") with p(): text("Rattle.py is a html templating library.") with span(className='emphasized'): text("This library can support you to make HTML in pure Python.") print(elem) </code></pre> <p>これを実行するとこうなります。</p> <pre><code class="html"><html lang="ja"> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0;width=device-width"/> <link href="main.css" rel="stylesheet" type="text/css"/> <title> Hello, Rattle.py! </title> </head> <body> <div class="container"> <h1> Hello, Rattle.py! </h1> <p> Rattle.py is a html templating library. <span class="emphasized"> This library can support you to make HTML in pure Python. </span> </p> </div> </body> </html> </code></pre> <p>このように、非常に簡単にHTMLが記述できるのです。<br /> また、これは純粋なPythonですから、何も考えずにPythonの変数を使ったり関数を呼び出したりできます。<br /> これRattle.pyの特徴です。</p> <h2 id="興味を持っていただけたら"><a href="#%E8%88%88%E5%91%B3%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%9F%E3%82%89">興味を持っていただけたら</a></h2> <p>このライブラリは開発中で、いろいろと未実装の機能が多くあります。<br /> また、使って頂き、フィードバックや意見がいただけると、それがどのようなものであっても励みになります。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/frodo821/rattlepy">GitHubのリポジトリ</a>もぜひチェックしてみてください。スターなど頂けたら激しく喜びます。<br /> フィードバックや意見は<a target="_blank" rel="nofollow noopener" href="https://twitter.com/BoufrawFrodo2">@BoufrawFrodo2</a>にメンションして送っていただくか、GitHubにissueを立てて頂ければチェックします。<br /> 完全に宣伝な記事でしたが、最後までお付き合いありがとうございました!</p> frodo821