投稿

UiPathで、ファイルをまとめてダウンロード

イメージ
UiPathでファイルをまとめてダウンロード とある知り合いが、悩んでいました。 その悩みとは。。。 いま契約している有償サイトが閉鎖することになった。 そのサイトは、業界向けのドキュメントのアーカイブで、ドキュメントはPDF形式で 自由にダウンロードできたが、 サイトが閉鎖されると参照できなくなるで困る。 そこで、 とりあえず、片っ端からダウンロードしたいが、 ドキュメントの数が膨大で人間業でやるのは大変。 バイトにやらせるのもねぇ。。。 との内容。 そこで、ワタシは、 「なあんだ、そんなのRPAにやらせればいいじゃん。」 「え? でも金ないぞ。」 このブログのネタにさせてもらう! ってコトで、格安で引き受けました。 (それでもイメージとかアップできないので。。。) てな感じで始まりました。 ポイントは ・とにかく自動でダウンロードしたい ・ 使うのは今回だけなので金はかけたくない  → 本格的な開発はム~リ~ サイトの方はどうなっているかと言えば ・要求は暗号化されている ・条件指定で検索、1ページ20件まで表示 ・結果は表形式(テーブル)表示される ・表中のリンクをクリックするとダウンロードページが表示される 最初は、自動で検索とかも考えていましたが、 『 金はかけたくない』 とのことなので、 ”半自動” と言うことで了解してもらいました。 半自動ダウンロードの仕様 ・『金はかけたくない』 とのことなので、検索は人が行う  使っているブラウザは、Chromeなのでソレに固定。 1年分とかをまとめて検索、時系列に古い順にソート、は人にやってもらいます。  すでに検索済みのページに対してダウンロードを行うとする。  検索結果のページは、下記のようになる。   検索結果は、テーブルにサマリーとリンクとして表示される。   そのリンクをクリックするとダウンロードページに遷移する。 ・『金はかけたくない』 とのことなので、”力技”実装  ページは同じフォーマットなので、キホン”タブ”+”Enter” で操作できる。  テーブルの前に、いくつかのリンクがあるので、ソコを”タブ”で飛ばす。  テーブル内のリンクまでたどり着いたら...

Arduinoを使ってみよう

イメージ
今回は、小学生でもプログラミングしてロボットなどを制御できるArduinoです。 ええい!俺はコテコテの組み込み屋だ!! などと仰る方も、プロト作成なんかには便利此上ありません。 今日は、そんなArduinoの使い方の基本についてです。  目次:            ・ Arduinoとは?  ・ Arduinoのライセンス  ・ Arduinoの開発環境  ・ Arduinoのプログラミング  ・ まずは、「Hello World」  ・ LEDを点滅させる(Lチカ!)  ・ 別のシリアルも使ってみる  ・ I2Cのデバイスを使ってみる(LCD) なお、この記事では開発用のPCには、Windows 10 (1903) 使用するArduinoボードは、Microを使っています。 Arduinoとは? 「Arduino:アルデュイーノ」と読みます。 イタリアンな感じの発音、そう思った方は正解です。 それは2005年、北イタリアのイヴレーアという街のインタラクションデザイン工科大学(IIDI)から始まりました。 5人の人物たちが学生でも気軽に使えるような安価で、かつ、簡単に使えるコントローラー、つまりワンボードマイコンを作って販売する「Arduinoプロジェクト」から始まりました。 そして、彼らは、シンプルな設計のボードだけではなく技術者ではなくても開発が可能な開発環境の開発に成功し、ハードウェア・ソフトウェアともにオープンとなものとして公...

STM32F3 Discovery、タイマーと割り込みのキホン

イメージ
STM32F3 Discovery、タイマーと割り込みのキホン 今回のSTM32F3 Discovery企画では、基本的なタイマー動作についての設定と、そのタイマーを割り込みで使うための基本について解説したいと思います。 写真ではわかりづらいですが、タイマーでPWM制御しています。 STM32F303は、タイマーとしてTIM1, TIM2, TIM3, TIM4, TIM6, TIM7, TIM8, TIM15, TIM16, TIM17 と10個のタイマーを持っています。(なぜ番号が飛んでいるのかは不明) この中で、TIM1と8は高機能なタイマーとして実装されていますが、今回の記事ではTIM1を使ったプログラミングを行いたいと思います。 また、タイマーとともに割り込みでの処理を行いたいので、割り込み設定についても解説していきます。 なお、このサンプルではタイマー設定などについて、直接レジスタ設定で実現しています。 レジスタ、割り込みの定義は、stm32f303xc.hで行われています。他のSTM32を利用する場合、それぞれのMPUに適したヘッダファイルが存在していますので、そちらのヘッダーファイルを参照してください。 stm32f303xc.h 中で、TIM1に関するレジスタのベースアドレスや各操作レジスタが定義されていて、  TIM1->PSC = 4800;  → TIM1タイマーのプリスケーラーレジスタに4800を設定する の、ような記述が可能になります。 一般的にMCUのタイマーは、タイマーモジュールに供給されているクロックをカウントすることで、ある時点からどのくらい時間が経過したかを測るものです。 このため、使用するタイマーモジュールに供給されるクロック数を確認しないと正確なタイマー設定を行うことができません。 タイマー1(TIM1)は、STM32F303xB STM32F303xCデーターシート(DS9118.pdf)のブロックダイアグラム(13/149)を確認すると、APB2/72MHzに接続されています。しかし、実際に供給されているクロック設定をCubeMXで確認すると、48MHzとなっています。Eclipse CubeMXのパースペクティブのClockConfigurationを確認して...

Linuxシステムコール、POSIX スレッドの生成

UNIX / Linux システムコール・プログラミング POSIXスレッドの生成 スレッドとは? スレッドは、実行の単位ですがプロセスとは異なります。プロセスは、プロセスごとに独立した論理アドレス空間をもち、異なるプロセス間ではメモリの共有をしていません。 プロセスの生成に関しては下記を参照。  →  Linuxシステムコール、プロセスの生成 これに対してスレッドは、1つのプロセスのメモリ空間を共有する複数の実行単位となります。簡単に言ってしまえば、ある関数fx()を呼び出すときにスレッドとして呼び出すことでfx()を複数、同時並列的に実行できるようになります。 同様のことは fork()で別プロセスとして分岐し、fx()を呼ぶことで実現できますがfork()はプロセスのメモリイメージのコピー(実際にはコピーオンライトで異なる部分だけのコピーでその他は共有されます)が発生し、プロセス動作するためのスタック領域などが別個に確保されるためのコストが発生します。 スレッドは、このようなコストを必要としないという特徴があります。 また、スレッドはマルチコアのCPUの場合に特定のコアにスレッドを結びつけることも可能という特徴もあります。 また、通常c言語は、main() から始まりますが、この大本をメインスレッドとも表現します。 スレッドを動かしてみよう! それでは、実際にLinux上でスレッドを使ったコードについて解説していきたいと思います。 サンプルコードは下記のような処理を行います。 1.3つの新しいスレッドを、pthread_create() で生成します。  このとき、メインスレッドから起動時の引数として文字列を渡します。 2.それぞれのスレッドが同時並行で処理を行います。  このコードでは下記の2つの処理を実装しています。   スレッド関数1. 引数の文字列の長さ分タイマーウエイトを行う   スレッド関数2. 引数の文字列を大文字・小文字変換して返す 3.メインスレッドは、各スレッドの完了を待ち合わせます。  起動されたスレッドは終了時に、pthread_exit() を使って終了コードを通知します。  メインスレッドは、pthread_join() を使って各スレッドの終了状態を受け...

Beaglebone Black ネットワーク・ブート環境の構築

イメージ
Beaglebone Black ネットワーク・ブート環境の構築     Beaglebone Black networking boot via Network over USB. 前回記事、「 BeagleBone Black 起動SDカードの作成 」では、Linuxを起動できるSDカードを作成してBeaglebone BlackをLinux動作させる方法について紹介しました。 しかし、この方法ではカーネル周りを開発する場合に毎回開発PCでSDカードを作成し、Beaglebone BlackにSDカードを戻して起動、という手順を毎回ふまなければなりません。 また、SDカードを頻繁に抜き差しするため、SDカードスロットへの負荷も大きくなり、SDカードスロットが故障する原因ともなり得ます。 このため、実際の開発現場においてはターゲットボードをネットワーク経由でブートする環境を構築することが現実的です。 今回の記事は、実際にBeaglebone Blackをネットワーク経由でブートするための環境を構築する方法について紹介します。 なお、この記事の内容はUbuntuのバージョンなど「 BeagleBone Black 起動SDカードの作成 」で紹介した環境をベースにしています。 ネットワーク・ブートとは? ネットワーク経由でのブートとは、ターゲットであるBeagleBone Blackと開発ホスト(サーバー)をTCP/IPで接続します。実現のために、このネットワーク上では、2つの技術を利用します。 1つ目は、ネットワーク経由でカーネルイメージをダウンロードしてメインメモリに展開するための「 TFTP 」。 もう1つは、システムが起動するためのルートファイルシステムをネットワークから与えるための「 NFS 」です。 AM3359は、電源投入後ROMプログラムが動作し、U-Bootをメインメモリにロードします。ここまではSDカード起動と同様です。このU-BootはBeaglebone Black上のMMCでも、SDカードでも問題ありません。 このU-Bootの機能を使ってTFTPサーバーから、カーネルイメージをダウンロードします。TFTPとは、Trivial File Transfer Prot...