원래 포트폴리오 만들기
메모는 kobito.app
사용하는 기술
* 프로그램 언어 ruby
*web 서비스 구축 sinatra
* 데이터베이스 관리 sqlite3
* 데이터베이스를 ruby 개체화 activerecord
우선 sinatra에서 공격
마지막으로 설치됨
Markdown : 이것이 할 수 있으면 웹 서비스는 만들 수 있다 -sinatra
구조
k-portfolio
┣main.rb
┣import.sql
┣stock.db
┗views
_┣layout.erb
_┗index.erb
┗┣는 「케이센」으로 변환
layout.erb
<!DOCTYPE html>
<html lang="ja">
<head>
<mata charset="utf-8">
<title>k-portfolio</title>
</head>
<body>
<%= yield %>
</body>
</html>
stock.db 작성, import.sql 로드
import.sql
drop table if exists posts;
create table posts(
id integer primary key,
title text,
body text,
created_at,
updated_at
);
Mac-no-MacBook-Pro:k-portfolio Mac$ sqlite3 stock.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .read import.sql
sqlite> .shema
Error: unknown command or invalid arguments: "shema". Enter ".help" for help
sqlite> .shcema
Error: unknown command or invalid arguments: "shcema". Enter ".help" for help
sqlite> .schema
CREATE TABLE posts(
id integer primary key,
title text,
body text,
created_at,
updated_at
);
sqlite>
main.rb로 sinatra, active_record 로드
stock.db와 연결, Post 클래스 만들기
main.rb
require "sinatra"
require "sinatra/reloader"
require 'active_record'
ActiveRecord::Base.establish_connection(
"adapter" => "sqlite3",
"database" => "./stock.db"
)
class Post < ActiveRecord::Base
end
get "/" do
@title = "index"
@content = "this is index"
@posts = Post.order("id").all
erb :index
end
post "/new" do
Post.create({:body => params[:body]})
redirect '/'
erb :index
end
index.erb
<h1><%= @title %></h1>
<%= @content %>
<h2>Add new</h2>
<form method="post" action="/new">
<input type= "text" name="body"><input type= "submit" value="post!">
</form>
<br>
<table border="1">
<tr>
<td>id</td><td>comment</td><td>created_at</td>
</tr>
<% @posts.each do |post| %>
<tr>
<td><%= post.id %></td><td><%= post.body %></td><td><%= post.created_at %></td>
</tr>
<% end %>
</table>
이제 양식에 입력한 문자는 comment란에 표시되고 그 날짜와 시간도 기록된다. 출력은 테이블 표.
여기에서 어떻게 할까
주식 포트폴리오에 필요한 변수 이름 준비
- 코드
- 시장
- 명칭
- 손익
- 당시 구매 가격
- 현재 거래 가치
- 단원주수
- 전날 대비
- 최고
간단한 것을 만들기 위해 변수 이름을 좁히십시오.
하고 싶은 일
간단히 말해서 야후 포트폴리오를 자작
1. 신경이 쓰이는 종목을 선정 후, 그 종목을 text 파일에 보존.
text 파일로부터 읽어내기 이하를 한다.
a. 코드(code)
text 파일에 저장되어 있으므로 거기에서 가져와 DB 코드에 추가
b. 이름(name)
코드에서 이름을 검색하고 DB의 이름에 추가
c. 당시 구매가격(price)(종가*최소단원주수)
코드에서 종가, 최저 단원 주식 수를 검색하고 계산. 계산 결과를 DB의 price에 추가
2. 또는 신경이 쓰이는 종목을 선정 후 그대로 DB(stock_date.db)에 추가한다.
간단하게 생각해
1. 당기 후 유명 상표 선정
2. 날짜별로 코드만 저장(.db OR .text)
3. 종가*최소단원주수를 계산하여 구매가격을 산출
4. 덮어쓰기 저장
┗ 우선 여기까지 해본다
5. 최신 주가와 비교한 날짜별 손익
철수 후 유명 상표 선정
자작 chart.rb에서 선택
이제 HTML 파일로 저장 (XXXX-XX-XX.text)
<% if focus != nil
File.open("./stockfile/#{today}.html","a") do |file|
file.puts focus
end
end %>
이것을 db 파일에 저장하고 싶은 (XXXX-XX-XX.db)를 잘 모르기 때문에 text 파일로 저장하고 db 파일에서 읽도록합니다.
<% if focus != nil
File.open("./stockfile/#{today}.text","a") do |file|
file.puts focus
end
end %>
2. 날짜별로 코드만 저장(.db OR .text)
db 파일에서 text 파일 로드
우선 k-portfolio아래에 신규 db를 작성. stock.db
:string #=> 文字列
:text #=> string読みも長い文字列
:integer #=> 整数
:float #=> 少数点を含む数
:decimal #=> floatよみも精度の高い少数点を含む数
:datetime #=> 日時
:timestamp #=> より細かい日時
:time #=> 日付
:date #=> 日付
:binary #=> バイナリデータ
:boolean #=> Boolean型(true or false)
참고 h tp // 모리준. 기주 b. 이오/bぉg/아 c치ゔぇ-레코 rd다리 ls-베기응 r-트리어 l/
외부 데이터에서 데이터 가져오기 - 도트 설치 #17
SQL 문
import.sql
drop table if exists posts;
create table posts(
codes integer
);
Mac>sqlite3 stock.db
sqlite> .read import.sql
sqlite> .import ./2015-01-23.text posts
sqlite> select * from posts
...> ;
1883
1944
2002
2193
4114
4272
6517
9008
9021
9375
9739
stock.db에 코드가 기록되었습니다.
3. 종가*최소단원주수를 계산하여 구매가격을 산출
-stock.dbからコードを1つずつ抽出
-それをyahoofinanceで検索し、正規表現でparse
時間がかかる、サーバーに負担がかかる
-銘柄,名称のDBを作っておきそこから反映
DB構築の最初だけ時間がかかる、新しい会社の反映、更新が面倒
종가 데이터 취득 정책
-yahoofinance에서
최저 단원주수 데이터 취득 정책
o-yahoofinence에서
x-100,1000에서 선택할 수 있도록
결국 yahoofinence에서 가져와야 하기 때문에
명칭, 종가, 최저 단원주수는 동일하게 스크래핑
스크래핑한 것을 text→db 저장이 된다
하지만 루비에서 직접 db에 저장할 수 없습니까?
"db 저장 ruby", "ruby 저장 sqlite3"에서 검색해 보았습니다.
# 仮データを入れてみる
Stat.create(
:update_id => '1234556',
:name => 'zanmai',
:text => '肉が食べたい'
)
인용 htp // d. 하테나. 네. jp/쇼카이/20080308/1205002736
과연 chart1.rb에서 aciverecord를 사용하여
의 출력처에 Post.create를 하면 된다
라는 것은 chart1.rb를 sinatra로 만들어 바꾸어야 한다.
언젠가는 것이 좋다고 생각했지만 ...
그것을 먼저하고 저장 대상을 stock.db로 만듭니다!
그렇게 하면 text 파일을 경유하지 않아도 된다!
다음에 계속
Reference
이 문제에 관하여(원래 포트폴리오 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kimioka0/items/3a36022b314ecd67576b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)