スキップしてメイン コンテンツに移動

投稿

7月, 2018の投稿を表示しています

子供に出された夏休みの宿題が難しすぎる

子供に出された夏休みの宿題が難しすぎて解けない(--;) 絵に書かれている物の名称を、 下の四角にひらがなで書く問題です。 ちゃんと全問正解しないと子供が怒るけど、 難しすぎ。。。


火星が見えた ( 今日は火星が大接近する日)

火星が見えた 今日は、地球と火星が大接近する日だそうです。 ふと空を見上げてら確かにいました「赤い点」が。。。 これが火星です!!
今日は地球から火星までの距離が「約5759万キロ」らしいです。 時速 100 km の車で およそ 65年でたどり着ける今がチャンスです(笑)

IBM Watson Text to Speech でテキストの読み上げ

IBM Watson Text to Speech でテキストの読み上げはじめにText to Speech とは、テキストを自然に感じで読み上げた音声を作成しているサービスです。
日本語に対応しています。
実際試してみると、人間が喋るよりも、音声は機械的ですが、まったく問題なく聞き取れます。IBM Cloud への登録は済ませてある事を前提に、手順を記載して行きたいと思います。1. まずは、IBM Cloud でリソースの作成Text To Speech のページを開き、リソースを作成します。2. 資格情報 (ユーザ名/パスワード) の確認リソースの作成が完了すると、資格情報のページに移動します。
以下の赤枠の「表示」をクリックして、ユーザ名・パスワードを確認します。3. curl コマンドで APIを実行してみる{username}, {password}を自分の物に書き換えて、コマンドを実行し下さい。
実行後、カレントディレクトリに "hello.ogg"が作成されたら成功です。
再生すると「はじめまして」と喋ってくれるハズです。curl -X POST -u "{username}:{password}" \ --header "Content-Type: application/json" \ --header "Accept: audio/ogg" \ --data "{\"text\":\"はじめまして\"}" \ --output hello.ogg \ "https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize?voice=ja-JP_EmiVoice"

Windows で curl コマンドを使う

Windows で curl コマンドを使うwindows 10 (64bit)環境で curl コマンドを使えるようにします。1. curl コマンドのダウンロード以下のサイトから curl コマンドをダウンロードします
https://curl.haxx.se/download.htmlトップページの Downloadリンクをクリック
下の方までスクロールすと、Win64環境用の Download リンクがあります。
今回は「Win64 ia64 CAB」をダウンロードします。 2. Windowsのシステムフォルダに、curlコマンドをコピー ダウンロードした curlコマンドの cabファイルを「C:\Windows\System32」にコピーします。 3. curl コマンドを使うコマンドプロンプトを立ち上げて、curl -help と入力します。
ヘルプの内容が表示されればインストール成功です。C:\>curl -help Usage: curl [options...] <url> --abstract-unix-socket <path> Connect via abstract Unix domain socket --anyauth Pick any authentication method -a, --append Append to target file when uploading --basic Use HTTP Basic Authentication --cacert <CA certificate> CA certificate to verify peer against --capath <dir> CA directory to verify peer against -E, --cert <certificate[:password]> Client certificate file and password --cert-status Verify the status of the server certificate --cert…

enchant.js で矢印キーの keydown イベントが発生しない

enchant.js 矢印キーenchant.js で矢印キーの keydown イベントが発生しないはじめにタイトルの通り、矢印キー(↑↓←→)の keydown イベントを検知しようとした所、
enchant.js を使用すると、矢印キーの keydown が発生しない事が分かった。。。具体的には、以下のようなコードでは、矢印キーの keydown イベントは起きない。 document.onkeydown=function(e){// 矢印キーの場合、そもそもイベントが発生しない console.log("keydown="+ e.keyCode);if(e.keyCode ==37){// keycode = 37 (左矢印キー)}};代わりに、enchant.js の game オブジェクトの keydown イベントを
使用すると、イベント自体は発生するが、
何故か押されたキーコードが取れない。。。 game.addEventListener("keydown",function(e){ console.log("keydown="+ e.keyCode);// keydown=undefinedif(e.keyCode ==37){// keycode = 37 (左矢印キー)// 矢印キーの場合、そもそもイベントが発生しない}});解決策enchant.js のソースコードを改変する事で、イベントを検知出来るようにしました。修正箇所は、1100行目あたりの部分です stage = enchant.Core.instance._element;var evt; document.addEventListener('keydown',function(e){//core.dispatchEvent(new enchant.Event('keydown')); //これをコメントアウトして core.dispatchEvent(e);//これを追加if(enchant.ENV.PREVENT_DEFAULT_KEY_CODES.indexOf(e.keyCode)!==-1){ e.preventDefault()…

[Spring] ログインされていないリクエストの場合、ログイン画面へリダイレクトさせる

[Spring] ログインされていないリクエストの場合、ログイン画面へリダイレクトさせるSpring の HandlerInterceptor を使用し、認証が必要なページに
未認証の状態でリクエストした場合、ログイン画面へリダイレクトする実装。Java コードimport java.lang.reflect.Method;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.annotation.AnnotationUtils;import org.springframework.stereotype.Controller;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import com.pkg.jizen.common.util.SessionManager;publicclassAppHandlerInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {// リクエストを受けるハンドラのクラスを設定 HandlerMethod hm =(HandlerMethod) handler; Method method = hm.getMethod(); Class<?> cls = method.getDeclaringClass();// Controller アノテーションがあるクラスのみ処理を行う Controller annotation = Anno…

Apache Tiles で定義名にワイルドカード指定を行う

Apache Tiles で定義名にワイルドカード指定を行うApache Tiles で、定義名がワイルドカード指定できた為、
そのメモです。bank/*から始まる定義名すべてを対象とする場合後から {1} を指定して、ワイルドカードで一致した部分を
後方参照できます。<definitionname="bank/*"template="/layout.jsp"><put-attributename="header"value="/header.jsp"/><put-attributename="body"value="/{1}.jsp"/></definition>ワイルドワードを複数指定する場合後方参照する場合、{1}にワイルドカード1つ目に一致した文字が入り、
{2}には、2つ目に一致した文字が入ります。<definitionname="bank/*/*"template="/layout.jsp"><put-attributename="header"value="/header.jsp"/><put-attributename="body"value="/{1}-{2}.jsp"/></definition>公式ドキュメントWildcard support
https://tiles.apache.org/framework/tutorial/advanced/wildcard.html

Spring MVC 外部の CSS/JavaScript を読み込む

Spring MVC 外部の CSS/JavaScript を読み込むservlet-context.xml の編集servlet-context.xml に外部リソースのマッピングを追加します。<resourcesmapping="/resources/**"location="/resources/"/>リソースの配置servlet-context.xml に定義した場所に、CSS/JavaScript 等のリソースを配置します。リソースの使用リソースを使用するには、以下のように <c:url> タグを使用して、リソースの URLを取得します。<!-- css --> <link href="<c:urlvalue="/resources/css/init.css"/>" rel="stylesheet" type="text/css"> <!-- javascript --> <script src="<c:urlvalue="/resources/js/jquery.js"/>" type="text/javascript"></script>

Java10 + Spring MVC + MyBatis の環境構築

Java10 + Spring MVC + MyBatis の環境構築はじめにJava 1.10 + Spring MVC + MyBatis で
Web アプリケーションを構築する機会があったので、
その覚書です。プロジェクトの構成今回作成するプロジェクトは、以下の構成となります。Eclipce は 4.8 photon を使用Java 1.10 ( Oracle JDK )Tomcat 9 ( All in one Eclipce 付属の Tomcat を使用)Spring MVC (レガシー Spring MVCプロジェクトで作成)DB周りは MyBatis-Spring (1.3.2)HTML周りのテンプレートエンジンは JSPレイアウトの共通化に Apache Tiles (3.0.5) を使用* 構成のポイント *開発用途のため、ソースを編集したら、すぐ反映されるようにする毎回 maven の deploy をするのは面倒なので、java/jsp等を編集した際に、自動的に Tomcat が再ロードするように、開発環境を構築します。最新の Java、Spring Framework を使用するSpring Tool の 「レガシー Spring MVC プロジェクト」を使用すると、古いバージョンの Java と Spring Framework を使用する為、最新版(2018/07時点) を使用するように構成を変更します。□ 変更前バージョンjava1.6Spring Framework3.0□ 変更後バージョンjava1.10Spring Framework5.51. Eclipce の導入こちら のサイトより、Pleiades All in One の Eclipse 4.8 Photon をダウンロードします。
ダウンロードするのは、Java の Full Edition です。2. Spring Tool のインストールメニューから [ヘルプ] > [Eclipseマーケットプレース] を選択検索ボックスに “STS” と入力し、検索を実行“Spring Tool Suite(STS) for Eclipse x.x.x.RELEASE” が検索結果に表示されますインストールボタンをクリックし、指示に従いインストールを行います。3. Spr…

Cent OSにRuby on Rails + puma + nginx の構成で環境を作ってみた

Cent OSにRuby on Rails + puma + nginx の構成で環境を作ってみた準備git のインストール$ sudo yum install git yum で必要なライブラリをインストール$ sudo yum -y install openssl-devel readline-devel zlib-devel rbenv のインストール公式 git から clone します$ cd /opt/ $ sudo git clone git://github.com/sstephenson/rbenv.git $ sudo mkdir /opt/rbenv/plugins $ cd /opt/rbenv/plugins $ sudo git clone git://github.com/sstephenson/ruby-build.git /etc/profile 設定vi エディタ等で、/etc/profile に以下の3行を追加します。export RBENV_ROOT="/opt/rbenv" export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" 以下のコマンドを入力して反映$ source /etc/profile rbenv にパスが通った事とバージョン確認$ rbenv -v rbenv を使用して Rubyのインストールインストール可能な Ruby のバージョンを一覧表示rbenv install -l Ruby 2.3.1 をインストールrbenv install 2.3.1 トラブルシューティング以下のようなエラーが出る場合、Cent OS の libcurl が古い可能性があるので、
libcurlをアップデートする必要がああります。error: failed to download ruby-x.x.x.tar.bz2アップデート手順Ciry-fanリポジトリの追加sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-2-1.rhel6.noarch.rpm *上記 URL 2018/6/14…

固定列のQTableView

QTableView の列固定 (スクロール固定) QTableView の列固定 (スクロール固定) QT の QTableView で業務システム等でよく要望される、
左からN列目までは横スクロールしないように、固定化する方法です。
はじめに 標準の QTableView には、スクロール固定を行う機能がないため、
カスタムウェジットを作成します。
公式でも以下のページで固定化を実現方法が説明されています。
Frozen Column Example
http://doc.qt.io/qt-5/qtwidgets-itemviews-frozencolumn-example.html
このやり方でも、スクロール固定での表示自体はできますが、
固定列側のセルをクリックしても clicked シグナルが発生しないなど、
表示だけでなく、QTableView を操作・編集するようなアプリの場合に
色々機能が足りません。
今回は、それを改善した物を作ろうと思います。
実現方法 列固定は以下のイメージのように、メインの QTableVIew の上に、
スクロール固定列を表示する、もう一つの QTableView を重ねて配置し、
1つの Tableに見せかけます。

ソースコードfreezetableview.h
#ifndef FREEZETABLEVIEW_H#define FREEZETABLEVIEW_H#include<QtWidgets>#include<QtGui>classFreezeTableView:public QTableView { Q_OBJECT public:explicitFreezeTableView(QWidget *parent =0);~FreezeTableView();Q_PROPERTY(int freezeColumnCount READ freezeColumnCount WRITE setFreezeColumnCount NOTIFY freezeColumnCountChanged)voidinitFreezeColumn();intfreezeColumnCount()const{return m_freezeColumnCount;}voidsetItemDelegateForCo…