Hello Ys world ?

技術的なことや何か役立つこと、日々の活動を記録する

あっ!という間にブログはじめて1年経った

ドメインを取得しようかどうしようか悩んだり、どうでもいいことだけどブログにしようかなとか思ったり...。記事全然書いてないなと思いつつも日々を過ごしていたら、あっという間にブログ開設から1年が経った。記事数もたったの13記事しかない...。がんばります。

動画をスクレイピングでリストアップしてダウンロードと変換をするPythonプログラム

動画ファイルのダウンロードと変換を行うにあたり、バッチファイルを使うよりPythonの方が楽だなと。

  • 必要ライブラリのインストール
  • プログラム

対象のファイルはWebサイト上にあるため、Beautiful Soupを使って動画URLを自動で取得する。変換はFFmpegを使うので、ダウンロードもFFmpeg使う。

以下の画像は実行時のサンプル。実際に実行したサイトURLは伏せるため、適当なURLとなっている。 f:id:Ysss:20190125225956p:plain

必要ライブラリのインストール

プログラムでは、スクレイピングFFmpegによる変換をするため、ffmpeg-pythonbeautifulsoup4 をインストールする。

pip install beautifulsoup4
pip install ffmpeg-python

※ Beautiful SoupのインストールはCondaを使っても良いが、ffmpeg-pythonはCondaのパッケージレポジトリになかった気がする。

続きを読む

C++からAzure Storage Serviceを使おうとしたらエラーに引っかかりかけた

C++からAzure Storage Serviceを使うために、Microsoftのドキュメントを参考に進めていたらエラーが出て困った話。

  • 環境
  • やっていたこと
  • 解決方法
    • ライブラリ側の構文エラーを直す
    • ライブラリに合った環境を設定

環境

自分のPC環境は以下の通りである。

環境
OS Windows10 Pro 64bit version 1709
Visual Studio Community 2017 version15.7.6
NuGet パッケージマネージャー 4.6.0

やっていたこと

以下のMicrosoft Azureのドキュメントを参考に、Azure Storage ServiceのBLOBストレージを使うC++プログラムを作ろうとしていた。

docs.microsoft.com

NuGetパッケージマネージャーで wastorage をインストールして、ライブラリをインクルードした。VisualStudioの画面上ではエラーや警告の波線は出ていない

  • NuGetを使ってパッケージをインストール f:id:Ysss:20181011124646p:plain

  • ライブラリをインクルード f:id:Ysss:20181011125356p:plain

しかし、ビルドするとドキュメント通り行ったにもかかわらず、以下のエラーが出てくる。 f:id:Ysss:20181011125523p:plain

続きを読む

非高精度タッチパッドでWindows10のジェスチャ機能を使用する

Windows 10標準機能の便利なタッチパッドジェスチャーを使いたいが、富士通のノートPCでは使えない。どうしても使いたいから調べて行なった手順を載せておく。
当記事を参考にドライバをインストールする場合は自己責任でお願いします。

  • やりたいこと
  • やったこと
  • 手順
    • 環境
      • 動作確認ができたバージョン
    • ドライバのダウンロード
    • ドライバのインストール
    • インストール後
    • 細かい設定
  • 問題点

※ 2018/02/23 Creators Update(version 1703)、Fall Creators Update(version 1709)で動作を確認。
※ 2018/10/04 再投稿 April 2018 Update (version 1803)で動作を確認。
※ 2019/05/23 追記 October 2018 Update (version 1809)で動作確認。
※ 2019/07/08 追記 May 2019 Update (version 1903)で動作確認。

やりたいこと

タイトルどおり。高精度タッチパッド非搭載ノートPCでWindows10標準機能のタッチパッドジェスチャを使いたい。

高精度タッチパッドを搭載していない場合、iMacMacBookトラックパッドのようなWindows標準の3本指ジェスチャーなどが使えない。

↓これ使いたい。 f:id:Ysss:20180210231036p:plain

ドライバを入れ替えなくても、AutoHotKeyで同等の機能を設定可能。また、レジストリの仮想キーコードを0x33115b25, 0x33115b27とかに書き換えても同等の機能を得ることができる。

続きを読む

Juliaの基本的な構文や関数についてまとめてみた

最近Juliaを触りまじめました。Pythonを触り始め、それから少し経ってJuliaを使い始めたため、インデントが構文規則になっている言語は未だに慣れないです。

  • はじめに
  • 環境
  • 基本的な使い方
    • 文字出力
    • 計算
    • if-else
    • 関数
    • ループ
    • 数学
      • 数学定数
    • 行列
  • 参考

※ 2018.09.27 数学定数について追記

はじめに

Juliaについての基本的な構文(コンソール出力、演算、if-else文、関数など)や簡単な数学の演算関数についてなど、入門的なプログラムを淡々と貼り付けておく。貼り付けるプログラムはGitHub Gistにも投稿しておく。

gist.github.com

環境

環境は以下の通りである。

環境
OS Windows10 Pro 64bit version 1709
Julia Version1.0.0 Windows 64bit
LLVM libLLVM-6.0.0 (ORCJIT, skylake)

Juliaの実行環境は1.0.0であり、記事中のプログラムは1.0.0より前のバージョン、1.0.0以降のバージョンでの動作は保証しない。

基本的な使い方

Juliaのプログラムは、先頭に # をつけた1行をコメントアウトすることができる。また、初めを #= 終わりを =# で囲んだ範囲すべてをコメントアウトすることもできる。

文字出力

Juliaは動的型付けを行うため、出力時にC言語などのように数値型や文字列型などを意識しなくてよい。
文字列と変数、文字列と数値など、出力するものが少ない場合カンマで区切る方法がラクでいい。複数出力や文字列の途中に変数を出力する場合は文字列中に $ で変数を指定する方法がいい。

print("a") # 改行なし出力
println("b") # 改行付き出力
println("\n") # \nは改行文字を表す

# 文字列
str = "ABC_def_0123456789_HelloWorld!"
println(str)

# 大文字小文字変換
println(uppercase(str)) # すべて大文字に変換
println(lowercase(str)) # すべて小文字に変換

# 出力 文字列結合
println("str : [", str, "]")
println("str : [" * str * "]")
# 出力 文字列内に変数埋め込み
println("str : [$str]")

# Juliaは配列番号は1から
println(str[1]) # 文字列strの1番目 A
println(str[1:6]) # 文字列strの1~6の範囲 ABC_de
println(str[end-15:end]) # 文字列strの最後から15引いた位置から最後まで 6789_HelloWorld!

# 文字列と数値表示
x = 10
println(x)
println("x = ", x)
println("x = " * string(x)) # 数値を文字列に変換
println("x = $x")
println("x + 20 = $(x + 20)") # 文字列内で計算し表示

# 数文字列を数値に変換
str_num = "100"
int_num = parse(Int, str_num) # Int型に変換
println(int_num + 200)

# Cのprintfのような表示マクロ
using Printf # ライブラリ読み込み
@printf("pi = %.5f\n", pi)

# JuliaではUTF-8エンコードではUnicode文字をサポート
println("αβγ", "\u03B1", "\u03B2", "\u03B3") # αβγ ユニバーサル文字名でも可能

計算

Juliaでは、掛け算をする際の * を省略することができる場合がある。また、一般的な四則演算の他に、虚数im を用いて複素数計算をすることもできる。

省略時の注意点

可否 左側 右側 計算例 理由
数字 変数 2x -
数字 ( ) 2(x + 1) -
( ) 変数 (1 + 2)x -
× 数字 数字 23 普通の数字
× 変数 数字 x2 変数名
× 変数 変数 xy 変数名
× 変数 ( ) x(1 + 2) 関数xの引数に1+2
× ( ) 数字 (x + 1)2 構文エラー
× ( ) ( ) (x + 1)(y + 2) 構文エラー
続きを読む

いまさらだけど、2018年春発売のiPad 第6世代を買いました

2018年3月に発売された第6世代iPad Wi-Fiモデル 32GBを購入しました。 Apple Pencilに対応して価格も据え置きでコスパが高い! f:id:Ysss:20180921000821j:plain

購入した理由

自分は現在、以下のモバイル端末を持ているが新しいやつが欲しい! Nexus7は画面分割機能があるが性能的に厳しい。 Apple Pencil便利すぎ!

  • iPod touch 5th ← ほとんど使っていない
  • Nexus7 2013 LTE ← Root化してLinageOSインストールするもそろそろ限界
  • Nexus5 ← 普段使いならまだ使える
  • iPhone SE ← サイズがちょうどいい

Apple 銀座へ

9月15~17日の3連休の2日目の16日にApple 銀座へ。連休だし銀座はホコ天で賑わっていた。Store内は人多すぎ...。

いざ入店。……。1階は展示だけか?展示に触れずにさっさと2階へ。アクセサリー類か。3階はシアター??4階いろいろあるしここか?いきなり声かけられた。おーすごい対応!……修理か。あっ、1階で買えるんですか。ありがとうございます。エレベーターで一階へ。iPad 32GBとApple Pencilを購入したいんですが。若い女性店員さんに対応していただきました。「iPadをノートにするのめっちゃいいと思います」とのこと。アプリにGoodNotesおすすめされました。実際すごく便利そうなアプリでした。

~ 購入手続き ~

出口まで見送っていただきました。

接客とかいろいろ含めて、さすがAppleだわって感じでした。まさかスルーして行った展示スペースのところで買えるとは思ってもなかったし、展示テーブルのサイドにお金が入ってるとも思ってなかった。

GoodNotes 4

GoodNotes 4

  • Time Base Technology Limited
  • 仕事効率化
  • ¥960

開封

iPadApple Pencil。iPadProの化粧箱と違いシンプル。 f:id:Ysss:20180920225159j:plain

続きを読む

PythonとJuliaのためにJupyterLabの環境を整えた

PythonとJuliaの実行にJupyter Notebookの環境を整えようと思い検索したところ、開発途中ではあるものの Jupyter Notebookの後継(?)のJupyterLabがあるという。Jupyter Notebookよりもだいぶ機能やインターフェースを強化されているっぽいし、JupyterLabを入れることにした。

  • Project Jupyterとは
  • JupyterLabとは
    • Jupyter Notebookより優れた主な機能
  • JupyterLabのインストール
    • インストール
    • JupyterLabの起動
    • Pythonの実行
  • JuliaにIJuliaをインストールする
    • インストール
    • Jupyterカーネルの確認
    • Juliaの実行
  • 参考

Project Jupyterとは

Project Jupyterは「 オープンソースソフトウェア 、オープンスタンダード、数十のプログラミング言語にまたがる対話型コンピューティング(Interactive Computing)のためのサービスを開発する」ために設立された非営利団体です。Project Jupyterは、対話型コンピューティングの製品 Jupyter Notebook、Jupyter Hub、Jupyter Notebookの次世代バージョンであるJupyter Labを開発し、サポートしています。(翻訳)

■ Project Jupyter jupyter.org

JupyterLabとは

JupyterLabは、Project Jupyterの次世代のWebベースのユーザーインターフェイスである。JupyterLabを使用すると、 Jupyterのノートブック 、テキストエディタ、端末、カスタムコンポーネントなどのドキュメントやアクティビティを、柔軟かつ統合された拡張可能な方法で処理できます。 タブとスプリッタを使用して、複数のドキュメントとアクティビティを作業領域に並べて配置できます。 ドキュメントとアクティビティは相互に統合され、対話型コンピューティングの新しいワークフローを実現します。(JupyterLab Docs Overviewより翻訳)

github.com

JupyterLabについては公式のドキュメントを参照。

■ JupyterLab Documentation https://jupyterlab.readthedocs.io/en/stable/index.html

Jupyter Notebookより優れた主な機能

続きを読む

WindowsにJuliaの環境構築をしてみた

最近話題になっている、Juliaを触ってみたいと思い環境の構築をしてみた。

  • Juliaとは
  • 環境
  • インストール
  • バージョンの確認
  • パス通し
  • 実行
  • SublimeTextのビルドシステム
  • 参考

Juliaとは

f:id:Ysss:20180925124503p:plain:w250

Juliaは、汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語、及び動的プログラミング言語である。

Juliaは、初めから高性能を目指して設計され、プログラムは、LLVM(Low Level Virtual Machine : 低水準仮想機械)を用いて実装された型推論と実行時(JIT : Just In Time)コンパイルを使用して、複数のプラットフォーム用の効率的なネイティブコードにコンパイルされる。

CやJavaのような、静的コンパイル言語に匹敵するパフォーマンスで、科学的数値計算機械学習データマイニング線形代数演算などに適した柔軟な動的型付け言語である。

JuliaはMIT Licenseの下で配布されており、WindowsMac OSLinuxFreeBSDに対応している。

■ Julia公式Webページ

The Julia Programming Language https://julialang.org/

GitHub Julia github.com

続きを読む