javascriptの勉強のためにつくってみた。
利用させていただいたサイト
https://www.mathjax.org/
http://d.hatena.ne.jp/kochann/?of=6
問題を乱数で出題するようにしています。
.netなどでつくるより、つくりやすいところとそうでないところがあり、一長一短があるような気がします。
javascriptは、型の定義の融通がきく半面、何の型なのか常に意識する必要はあるようです。画面上の細かい調整にいまいち慣れてないので、レイアウトでけっこう時間がかかってしまいます。あと、^2など2乗の計算を認識しない?ようです。*+-は大丈夫なようですが。
さまざまなパータンの二次方程式に対応させるため、だいぶ長くなってしまいました。
2017.5.9 bug fix 有理数解のときのメッセージ表示に不具合あったものを修正しました。
github pagesで公開してみました
https://gh6141.github.io/gitdrill/nijihote.html
2017年3月25日土曜日
2017年3月14日火曜日
javascript でクラスを使ってみる
canvasという便利な図形表示の仕組みがいつのまにか
使えるようになっている。これをオブジェクト指向で(クラスで)使ってみた。
クラスを使わないと、ちょっと複雑になると、手に負えなくなりそうだ。
ドラッグ&ドロップをしてみたかったので、まずこちらを参考にさせていただいた。
http://qiita.com/kyrieleison/items/26fcfb3a1d94bc92c596
さっそく、イベントの追加でthisの使い方がわからず悩む
がhttps://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener
に解決方法がかいていあった。
力の合成を表すものですが、矢印は
http://qiita.com/frogcat/items/2f94b095b4c2d8581ff6
の中のライブラリをつかわせていただきました。
それを参考に少しためしてみたのが、以下のソース
力の分解のほうは、継承を使ってみました。もう少し簡潔にできそうですが。
使えるようになっている。これをオブジェクト指向で(クラスで)使ってみた。
クラスを使わないと、ちょっと複雑になると、手に負えなくなりそうだ。
ドラッグ&ドロップをしてみたかったので、まずこちらを参考にさせていただいた。
http://qiita.com/kyrieleison/items/26fcfb3a1d94bc92c596
さっそく、イベントの追加でthisの使い方がわからず悩む
がhttps://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener
に解決方法がかいていあった。
力の合成を表すものですが、矢印は
http://qiita.com/frogcat/items/2f94b095b4c2d8581ff6
の中のライブラリをつかわせていただきました。
それを参考に少しためしてみたのが、以下のソース
力の分解のほうは、継承を使ってみました。もう少し簡潔にできそうですが。
2017年3月12日日曜日
ubuntuでcifs マウント
起動時にマウントする方法
/etc/fstabに以下を追加
//192.168.1.?/share /mnt/windows/ cifs username=user,password=,uid=1000,gid=1000 0 0
パスワード不要なら省略できるようだ。
以前はシェルスクリプトをサービスとして起動する方法でやってきたが、それだと
sleep等を使って、遅延させる必要があった。
fstabに登録する方法があるとは知らなかった。
参考リンク
http://engetu21.hatenablog.com/entry/2016/07/31/190059
/etc/fstabに以下を追加
//192.168.1.?/share /mnt/windows/ cifs username=user,password=,uid=1000,gid=1000 0 0
パスワード不要なら省略できるようだ。
以前はシェルスクリプトをサービスとして起動する方法でやってきたが、それだと
sleep等を使って、遅延させる必要があった。
fstabに登録する方法があるとは知らなかった。
参考リンク
http://engetu21.hatenablog.com/entry/2016/07/31/190059
2017年3月10日金曜日
cloud9 herokuを連携して利用(postgresqlで)
http://qiita.com/yuki0627/items/abd9eedc989ae1da21a7
がとても参考になりました。
cloud9でrailsによるサイトを作成し、限られた時間であればサイト上で確認できますが、時間がたつと使えなくなります。そこで、herokuへgitにより、サイトの内容をpushするといいようです。データベースはherokuではpostgresqlが標準的なので、cloud9で使用するデータベースもpostgresqlに切り替えてみました。
以下のその手順を覚え書きとしてまとめてみました。
○ cloud9でrailsをpostgresqlを使って動かしてみるには**************
1 cloud9でblankを選択しcreate workspace
2 Rails のインストール
gem install rails --no-ri --no-rdoc
rails new myapp --database=postgresql
cd myapp
bundle install
rails generate controller welcome
app/views/welcome/index.html.erbを編集して
<h2>Hello World</h2>でも入力しておく
config/routes.rbは
root 'welcome#index' の行を追加
以下、Unicode使用のテンプレートを用意するために、次の操作が必要なようです。
がとても参考になりました。
cloud9でrailsによるサイトを作成し、限られた時間であればサイト上で確認できますが、時間がたつと使えなくなります。そこで、herokuへgitにより、サイトの内容をpushするといいようです。データベースはherokuではpostgresqlが標準的なので、cloud9で使用するデータベースもpostgresqlに切り替えてみました。
以下のその手順を覚え書きとしてまとめてみました。
○ cloud9でrailsをpostgresqlを使って動かしてみるには**************
1 cloud9でblankを選択しcreate workspace
2 Rails のインストール
gem install rails --no-ri --no-rdoc
rails new myapp --database=postgresql
cd myapp
bundle install
rails generate controller welcome
app/views/welcome/index.html.erbを編集して
<h2>Hello World</h2>でも入力しておく
config/routes.rbは
root 'welcome#index' の行を追加
以下、Unicode使用のテンプレートを用意するために、次の操作が必要なようです。
sudo service postgresql start
sudo sudo -u postgres psql
CREATE USER username SUPERUSER PASSWORD 'password';
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
\c template1
VACUUM FREEZE;
\q
データベースのユーザー名とパスワード名を環境変数に入れておくといいようです。
export USERNAME=username
export PASSWORD=password
これにあわせてdababase.ymlを次のような内容に編集
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV['USERNAME'] %>
password: <%= ENV['PASSWORD'] %>
host: <%= ENV['IP'] %>
ここで
rails db:create
そして modelを作成してみる
rails generate model title
db\migrate\20120322080659_create_titles.rb」のようなマイグレーションスクリプトと呼ばれるファイルができるので、これに以下のように追加
class CreateTitles < ActiveRecord::Migration
def change
create_table :titles do |t|
t.string :name ←ここと
t.date :date ←ここを追加
t.timestamps
end
end
end
rake db:migrate
を実行
seeds.rbができるので、これを以下のように修正
# coding: utf-8
Title.create(:name => 'サンプル1', :date => '2011-06-28')
Title.create(:name => 'サンプル2', :date => '2011-11-14')
以下のコマンドで、上記のデータの初期値設定ができるようだ
rake db:seed
rails dbconsoleで確認できる
select * from titles;等が実行可能
ぬけるときはCtrl+D
welcome_control.rb
def index
@titles = Title.all
end
index.html.erbをつぎのように変えてみる
<p>
<% @titles.each do |title| %>
[タイトル] <%= title.name %>, [月日] <%= title.date %><br />
<% end %>
</p>
rails s -p $PORT -b $IP
で起動してみる
https://[ワークスペース名]-[ユーザー名].c9.io にアクセスして確認。
○herokuにpushしてみる***********************
※事前にcd myappになっているか、確認してから
heroku login
git init
git add .
git commit -m "init"
heroku create
heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
git push heroku master
○herokuのpostgresqlの設定************
herokuへのpushだけでは、だめで、postgresqlのマイグレーション等の操作が必要
heroku addons:add heroku-postgresql
heroku run rake db:migrate
herokuでも、seedは必要なので
heroku run rake db:seed
○ためしに、scafoldも使ってみた*******
たとえば userというモデル名であれば
rails g scaffold user name:string point:string sudo service postgresql start(postgresqlが起動してないときは、sudo service postgresql startと起動が必要であることに注意)
rake db:migrate
rails s -p $PORT -b $IP
として
https://アプリ名-ユーザー名.c9users.io/usersにアクセスして確認できる
git add.
git commit -m "scafold_test"
git push heroku master
で、herokuでも動いているか試してみる
※データベースを使うので、データベースがきちんと動いてないとうまくいかない。最初エラーが出たとき、原因がつかめずいたが、結局、データベースが動いてないことが原因ということが何回かあった。このへんは、慣れの問題かもしれない。
※データベースを使うので、データベースがきちんと動いてないとうまくいかない。最初エラーが出たとき、原因がつかめずいたが、結局、データベースが動いてないことが原因ということが何回かあった。このへんは、慣れの問題かもしれない。
2017年2月22日水曜日
LinqでCSVから配列、配列からCSVへ
CSVから配列への読み込みについては
ネットに参考になるサイトがありました。
https://teratail.com/questions/40822
なるほどと思いました。非常にシンプルで、Linqの威力を感じます。
サイトを参考に、こんな感じで、簡単に配列を用意できるようです。
using System.IO;
public String[][] dcsv;
dcsv=File.ReadLines(csvfilename, Encoding.GetEncoding("utf-8")).Select(s => s.Split(',')).ToArray();
ただ、配列からCSVへの書き込みは、シンプルなものはみつからず
とりあえず、foreachでも使ってみました。
StreamWriter sw = new StreamWriter(csvfilename);
foreach ( String[] row in dcsv)
{
sw.WriteLine(string.Join(",", row));
}
sw.Close();
ネットに参考になるサイトがありました。
https://teratail.com/questions/40822
なるほどと思いました。非常にシンプルで、Linqの威力を感じます。
サイトを参考に、こんな感じで、簡単に配列を用意できるようです。
using System.IO;
public String[][] dcsv;
dcsv=File.ReadLines(csvfilename, Encoding.GetEncoding("utf-8")).Select(s => s.Split(',')).ToArray();
ただ、配列からCSVへの書き込みは、シンプルなものはみつからず
とりあえず、foreachでも使ってみました。
StreamWriter sw = new StreamWriter(csvfilename);
foreach ( String[] row in dcsv)
{
sw.WriteLine(string.Join(",", row));
}
sw.Close();
2017年2月21日火曜日
c# 別フォームのコントロール取得
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1251572732
が参考になりました。
Form1で Form2のインスタンスを作成したら 親フォーム情報を子フォームに
通知するところがミソのようです。
あとは、子フォームで、親フォームを宣言しておけば、親フォームを扱うことが
できるようです。
Form1(親)側
Form2 f = new Form2();
f.form1obj = this;
f.Show();
Form2(子)側
public Form1 form1obj;
textBox1.Text= form1obj.listView1.Items[comboBox1.SelectedIndex].SubItems[0].Text;
あと、当然Form1側のコントロールのModifiersはpublicにしておきます。
が参考になりました。
Form1で Form2のインスタンスを作成したら 親フォーム情報を子フォームに
通知するところがミソのようです。
あとは、子フォームで、親フォームを宣言しておけば、親フォームを扱うことが
できるようです。
Form1(親)側
Form2 f = new Form2();
f.form1obj = this;
f.Show();
Form2(子)側
public Form1 form1obj;
textBox1.Text= form1obj.listView1.Items[comboBox1.SelectedIndex].SubItems[0].Text;
あと、当然Form1側のコントロールのModifiersはpublicにしておきます。
2017年1月29日日曜日
Ubuntuをアップデートしたら、400エラーが出るようになる
結論から言うと、原因はJSPの中のjavascriptで、HTMLリクエストパラメータを全角文字などもそのまま送信していたのが原因でした。
これまで、全角文字もそのまま送信していて問題はおきなかったのは、ブラウザ側あるいはtomcat?でうまく処理していてくれたためと思う。
tomcatあるいはjavaあたりをアップデートした影響で、URLエンコードしてない影響がIE11にだけ現れたようだ。このへんの関係を発見するまで時間がかかった。
400エラーが出るのは、IE11だけである。chromeやEdgeでは特に問題は起こってない。
encodeURIにより、URLエンコードするだけで問題が解決した。デコードはとくにしなくても、だいじょうぶなようだ。ネットで検索しても、こういった症状が出てこなかったのは、基本的ミスだったからともいえる。
***************解決までの流れ
①Ubuntuサーバで、突然、IE11を使ったとき、全角のファイル名のときだけ、ダウンロードできなくなる。400エラーが出る。
②Vmware内の古いUbuntuサーバについては問題ない。試しにapt-get update
すると、同じ症状が出る。原因はtomcatかjavaの影響?IE11との相性?いずれか、と考えた。
ネットでは、IE11のUserAgentの文字がTridentに変わったことが、出ていたので対応させてみた。
でも、これとは無関係だった。しばらく解決策がみつからない。
③他のリクエストパラメータを使うGETのところで、同じ症状(400エラー)が出ることを発見。
④③よりひょっとして、URLエンコードしていないのが原因でないかと疑う。試しにエンコードするように修正したら解決した。
※原因を見つけるには、試行錯誤しながら、考えるしかないようだ。
これまで、全角文字もそのまま送信していて問題はおきなかったのは、ブラウザ側あるいはtomcat?でうまく処理していてくれたためと思う。
tomcatあるいはjavaあたりをアップデートした影響で、URLエンコードしてない影響がIE11にだけ現れたようだ。このへんの関係を発見するまで時間がかかった。
400エラーが出るのは、IE11だけである。chromeやEdgeでは特に問題は起こってない。
encodeURIにより、URLエンコードするだけで問題が解決した。デコードはとくにしなくても、だいじょうぶなようだ。ネットで検索しても、こういった症状が出てこなかったのは、基本的ミスだったからともいえる。
***************解決までの流れ
①Ubuntuサーバで、突然、IE11を使ったとき、全角のファイル名のときだけ、ダウンロードできなくなる。400エラーが出る。
②Vmware内の古いUbuntuサーバについては問題ない。試しにapt-get update
すると、同じ症状が出る。原因はtomcatかjavaの影響?IE11との相性?いずれか、と考えた。
ネットでは、IE11のUserAgentの文字がTridentに変わったことが、出ていたので対応させてみた。
でも、これとは無関係だった。しばらく解決策がみつからない。
③他のリクエストパラメータを使うGETのところで、同じ症状(400エラー)が出ることを発見。
④③よりひょっとして、URLエンコードしていないのが原因でないかと疑う。試しにエンコードするように修正したら解決した。
※原因を見つけるには、試行錯誤しながら、考えるしかないようだ。
登録:
投稿 (Atom)