chevron_left

メインカテゴリーを選択しなおす

cancel
i407なプログラマ https://i-407.com/

すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開!他エンジニアリング情報などネタ多め。

ason
フォロー
住所
未設定
出身
未設定
ブログ村参加

2022/01/02

arrow_drop_down
  • 膨大なサイズのCSVファイルから爆速でMySQLへインポート

    CSVファイルからDB(MySQL)にインポートする機能はよくあるし、情報もゴロゴロとある。前回の記事では大量のデータをCSVファイルとして素早く書き込む方法を書いたが、今回はその逆と言っても良い。 ただ、CSV→DBは色々な制約を受けるので最も早く確実なただ一つの答えがあるわけではなさそう。今回紹介するのはサーバーのupload_max_filesizeや利用可能メモリについては度外視している。 CSVのMySQLインポートの手段 先に方法を列挙すると以下のようになる。 1レコードずつインサート(激遅) バルクインサート(速い) バッチでインサート(ちょっと遅い) LOAD DATA LOCAL INFILEインサート(最速) 全てのやり方ができる環境かどうかも考慮に入れる必要がある。 また今回はフレームワークで使用されることを前提としてPHP(Laravel)で検証しているが、Insertの処理速度という意味ではDBの問題なのでどのフレームワークであろうが、どの言語であろうが同じである。

  • 【PHP】大量データをfputcsvで瞬時にCSVファイル出力する方法

    phpでcsvを作成する場合、fputcsv関数を使用するだろう。しかし数十万行・20MB以上のデータをcsvファイルとして書き込みする場合、かなりの時間がかかってしまう。 今回通常のレスポンスタイム内(3秒以内)でPHPのfputcsvでファイルを書き出す必要があり、多少情報が少なくて調べたことをまとめる。 クッソ遅いfputcsvのやり方 ネットで調べると以下のやり方がずらりと出てくる。ほとんどこればっかり書かれている。 $list = [ ["hoge", "fuga"], //省略 ] $fp = fopen('export.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); 30万行以上のデータを上記のfputcsvでファイル書き出ししようとしたら30秒程度かかったのだ。そりゃ一行ずつflieにputしていくからそのくらいかかるのだろう。

  • Android端末とリーダー(外部機器)をUSB接続して充電する

    ソフトウェアの話から逸れるのだが、アプリケーション(iOSやAndroidなどのスマホアプリ)からUSBで機器に接続する場合、USBハブなんかでポート増やしたい時がある。 今回Androidタブレットを充電しながらリーダー(felicaなど)にUSB接続するアプリを開発する必要があった。 通常のスマホやタブレットにはUSB端子またはライトニング端子が1つしかないはずだ。そのため、端末からハブを使って端子を増やす方法をとるだろう。 充電しながら外部機器とusb接続って普通に考えてできそうなことであり、ネットでもこのような情報が出てくるのに、えらくハマったので以下に書き記す。そこにはアプリ開発以前の問題が存在したのである。 USBハブにはホスト・クライアントがある まず、タブレットと外部リーダーを通常のUSBハブで接続してみたが充電状態にはならなかった。 そもそもUSBハブとは接続元(ホスト)のUSBポートを分岐させるもののようで、分岐先(クライアント)同士でデータのやり取りもできないようだ。 上記の例では電力はそれぞれ供給されているが、タブレットと外部機器をUSB接続できない。 クライアントポート同士で接続できない、そしてハブにはホストポートが1つ、クライアントポートが複数という事実。 スマホ・タブレットを充電しながら外部機器にUSB接続できない? そしてもう一つの事実として、通常のUSBハブではクライアント機器に対しては電力を供給するが、ホストには電力供給されない。 つまり通常のUSBハブではホスト(タブレット)に電力供給を行えない。(充電できない) このような単純な構成がなぜできないのか!?さっぱりわからん。もしスマホやタブレット側にUSB端子以外の充電方法があればUSBポートから電力供給されなくても問題ないのだが。 USBハブにはPD(Power Delivery)対応のものがある 2015年にUSB 3.1の追加仕様として定義されたもので、従来のUSBバスパワーでは4.5W、USB BC(Battery Charging)仕様でも7.5Wまでだったが、最大で20V/5Aの100Wの電力を供給することができる。

arrow_drop_down

ブログリーダー」を活用して、asonさんをフォローしませんか?

ハンドル名
asonさん
ブログタイトル
i407なプログラマ
フォロー
i407なプログラマ

にほんブログ村 カテゴリー一覧

商用