「require」を含む日記 RSS

はてなキーワード: requireとは

2018-02-06

anond:20180206194356

2018/02/15 v5.2 http://tpcg.io/hFEB8W

五輪マークへ「0」を含む場合に、「0」へ置換せず「○」へ置換する

 

 

不具合多いなw

2018/02/14 v5.1 http://tpcg.io/VUTY6d

全角空白レイアウトがうまくいってなかったので、不可視文字wでレイアウト調整

2018/02/13 v5 http://tpcg.io/q47ler

大胆に全角空白を駆使してレイアウト調整

2018/02/10 v4 http://tpcg.io/gu9yQ2

五輪マークマージ

https://anond.hatelabo.jp/20180209193332

def ato
#require 'date'
    # Date.new(2020, 7, 24) - Date.today
    (Time.new(2020, 7, 24, 20, 0, 0, "+09:00") - Time.now.getlocal("+09:00")) / 60 / 60 / 24
end


# 文字
ar = [
'',
'',
'',
'',
'',
''
]

br = sprintf("%05d日", ato).tr('0-9', '0-9').split('')

cr = Array.new
for i in 0..(ar.length-1)
    cr.push(ar[i] + br[i] + '')    
end

puts br.join
puts '[東京五輪まで]', cr.join


# 五輪マーク
dr = [
' ',
'',
'',
' ',
'

   ', ' ' ] er = sprintf("%03d日◯◯", ato).tr('0-9', '0①②③④⑤⑥⑦⑧⑨').split('') fr = Array.new for i in 0..(dr.length-1) fr.push(dr[i] + er[i] + '') end puts '

' puts fr.join puts er.join

v3 http://tpcg.io/4X3DHT

タイムゾーンフィックス

require 'date'

def ato
    Date.new(2020, 7, 24) - Date.today
    (Time.new(2020, 7, 24, 20, 0, 0, "+09:00") - Time.now.getlocal("+09:00")) / 60 / 60 / 24
end

ar = [
'',
'',
'',
'',
'',
''
]

br = sprintf("%05d日", ato).tr('0-9', '0-9').split('')

vr = Array.new
for i in 0..(ar.length-1)
    vr.push(ar[i] + br[i] + '')    
end

puts br.join
puts '*[東京五輪まで]', vr.join
puts "z"

v2 http://tpcg.io/wPYegY

タイムゾーンテスト

2018/02/06 v1 http://tpcg.io/L01oUk

初版

require 'date'

ar = [
'<font color="blue" size="10">',
'<font color="#FFD700" size="10">',
'<font color="black" size="10">',
'<font color="green" size="10">',
'<font color="red" size="10">',
'<font color="gray" size="6">'
]

br = sprintf("%05d日", Date.new(2020, 7, 24) - Date.today).tr('0-9', '0-9').split('')

vr = Array.new
for i in 0..(ar.length-1)
    vr.push(ar[i] + br[i] + '</font>')    
end

puts '*[東京五輪まで]', vr.join

2018-01-01

anond:20180101101138

require 'prime'

def calc3(a, b)
	(a*a + b*b) == ANS
end

def main3
	for a in 1..50
		for b in 1..50
			if Prime.prime?(a) and Prime.prime?(b) and calc3(a, b)
				puts "#{a}*#{a} + #{b}*#{b}"
			end
		end
	end
end

main3

2017-10-28

anond:20171027101309

タデプログラミングやってみた

実行環境は、Windows 10はてなAPIは知らない

1)URL規則性を見つける

増田場合

https://anond.hatelabo.jp/?mode=top&page=1

page=1、page=1001、・・・

2)各ページの日記規則性を見つけて、投稿時刻の取得方法検討する

増田で、先頭の日記場合

<div class="section">
<h3>
<a href="/20171010162108"> ← (雑だが)ここらへんを取ればよさそう
<span class="sanchor">■</span>
</a>
<a href="/20171010161641">anond:20171010161641</a>
</h3>
~~~
</div>

3)定数、関数の雛形、ループURLを生成・出力するだけのソースをとりあえず作成・実行

実行すると、↓が出力されるだけ

https://anond.hatelabo.jp/?mode=top&page=1

https://anond.hatelabo.jp/?mode=top&page=1001

https://anond.hatelabo.jp/?mode=top&page=2001

・・・

4)「ruby web 取得(スクレイピング)」あたりでネット検索、内容を理解せずにコピペする

4-1) 標準のopen-uriを使うと取得できるよ等見つかる

open-uriを実行すると、謎のエラー発生

C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

4-2)エラーメッセージ検索、内容を理解せずにコピペする

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

 

ここまでで、任意URLWebページ取得ができるようになる

5)Webページの内容を解析(パース)し、ページの先頭の日記のYYYY/MM/DD HH:MM:SSを取得

5-1)

HTMLはある程度構造化されているので、今回の場合だと、↓のようなとり方がいいと思う

「divタグ sectionセクション」直下の「最初のh3タグ直下の「最初のaタグhref

5-2)

思うけど、今回は、構造検索じゃなくて、単純に文字列検索だけで済ます

5-3)※

取得対象構造が変化する場合も多々あるが、構造が変化した場合でも、

構造的な取得方法を作っておけば、変化にもある程度対応やすい(パラメータの「1」を「2」にするとか)

文字列を解析的なやり方だと、取得対象の書式が変化した場合に、対処しにくいことが多い

ここらへんを、TODO:あとでやる、なんてするんだけど、もちろんあとでやらなくて不具合の温床になる

これ豆な

6)結果を出力

printコマンドプロンプトへ出力

 

例えばだが出力には、ファイルへ保存、メール送信クラウドへアップ、増田投稿 とかもある

 

ここまでで、page=1の処理ができた

7)繰り返しに注意

page=1ができればあとは繰り返すだけ

繰り返すだけなんだが、取得ごとに10秒待つことにする

あんまが~~ってやると、怒られるので

 

愚直なまでの単純な繰り返しは、PCプログラム) > 人の操作 の最たるものだと思う

 

はいえ、ほんとうに愚直で、

タイムアウトしたらどうなるのか?

・古いページは構造が異なるかもしれないのでは?

・最終ページはどこ?

・・・などなど。これらの忖度AIでも解決しにくい・・・と思う。

8)余談1 プログラム関係ネット検索すると、はてな結構ひっかかる

なにかうれしいセロry

9)余談2 スクレイピングってなんだよ

的な英単語IT用語解説よりも、英和辞典を引くとスって理解できることがある

scraping ・・・ こすること、削ること、削り落としたもの、かきくず

・・・

rubyソース

require 'open-uri'
require 'openssl'

# なんかエラーが出る暫定対処
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

BASE_URL = 'https://anond.hatelabo.jp/?mode=top&page='
PAGE_INCR = 1000

# 4) 指定URLのページを取得
def get_page(url)
    open(url).read
end

# 5) 年月日時分秒を取得
#012345678901234567890123456789012345678901234567890
#<div class="section"><h3><a href="/20171010162108">
def get_ymdhms(page)
    pos = page.index("<div class=\"section\"><h3><a href=")
    #p pos
    #p page[(pos+35)..(pos+35+13)] # YYYYMMDDHHMMSS 14
    aa = page[(pos+35)..(pos+35+13)]
    sprintf("%s/%s/%s %s:%s:%s", aa[0..3], aa[4..5], aa[6..7], aa[8..9], aa[10..11], aa[12..13])
end

# 6) 結果を出力
def print_dat(inc, ymdhms)
    puts sprintf("%06d, %s", inc, ymdhms)
end


# メイン
def main
    inc = 1
    for i in 1..10
        sleep 10 unless i == 1 # 7)初回以外は10秒待つ
        url = BASE_URL + inc.to_s
        page = get_page(url)   # 4)webページ取得
        ymdhms = get_ymdhms(page) # 5)投稿年月日取得
        print_dat(inc, ymdhms) # 6)結果出力
        inc += PAGE_INCR
    end
end

# 実行
main

 

ソース記法で書くと文字化けするので、スーパーpreで)

実行結果

ano_his.rb:67: warning: already initialized constant OpenSSL::SSL::VERIFY_PEER
000001, 2017/10/28 15:04:51
001001, 2017/10/10 17:08:08
002001, 2017/09/19 17:22:26
003001, 2017/08/24 10:23:53
004001, 2017/07/27 11:57:49
005001, 2017/06/27 17:42:17
006001, 2017/05/28 22:57:26
007001, 2017/04/28 10:26:18
008001, 2017/03/21 10:10:38
009001, 2017/02/10 15:01:32

2017-09-14

引数が可変のメソッドを作りたい

引数がA,B,C,D,Eあるとして

A,Bだけ渡したら、内部でC,D,Eを自動的解釈するメソッドが作りたかった

 

これ、例えば

func hogeAll(A a, B b, C c, D d, E e) {

 全部入りメソッド

}

func hoge(A a, B b) {

 ここでhogeAllを呼べば解決する

}

 

んだけど、ABCDE全てに対して有/無のメソッドを全て定義すると果てしなくなる

これをスッキリ書ける言語ってのを知らない

 

方法があるとしたら引数Classを作ってしまう手がある

実際にこれはよくやられると思う

 

HikisuClass hikisu = HikisuClass.create(a,b)  // これで内部で自動的にc,d,eを解釈する

 

でもメソッド一個のためにクラスを作るのってクソ面倒だなと思う

もう一個方法があるとしたら、Classに値を入力したあとメソッドを実行する方法

 

Hoge hoge = new Hoge()

hoge.a = a

hoge.b = b

hoge.do()

 

しかしこれも長くなり煩雑だ、結局

hoge(a,b,null,null,null) みたいなことになりそう

 

ちなみに何でそういうことをしたいかと言えば、自然言語がそうなってるから

大抵の引数が省略されるし、省略されたりされなかったりする、非常に柔軟なんだ

もちろん受ける側の作り込みが大変になるが、ちゃんとリーダブルに作ろうとしたらそっちのほうが良いんじゃないかと思える

引数のoptional,require指定できればもっと良い

例えばコンソールで使うオプションとかって自由だよなあ

 

これってポリモーフィズムあたりの話か?

 

___

 

追記:

あ、DIコンテナみたいな話かな

でも結局煩雑だし使いたくない

2017-07-20

プログラムが動きません

#!/usr/bin/env ruby

# coding: utf-8
require 'okusan'
require 'bengoshi'

furin = 10 % 3

if futin == 0 then
  print("割り切れました¥n")
else
  print("割り切れませんでした¥n")
  print("結果は", 流出, "です¥n")
end

2017-06-23

typescript-simple動作が何か妙だ

調査

環境は以下の通り

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12.5
BuildVersion:	16F73

$ node --version
v8.1.2

$ npm --version
5.0.3

$ cat package.json
{
  "name": "strange-tss",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/lodash": "^4.14.66",
    "typescript": "^2.3.4",
    "typescript-simple": "^8.0.1"
  }
}

以下をトランスパイルする

import * as _ from 'lodash'; console.log(_)`

まずはtsc

$ cat test.ts
import * as _ from 'lodash'; console.log(_)

$ ./node_modules/.bin/tsc test.ts

$ cat test.js
"use strict";
exports.__esModule = true;
var _ = require("lodash");
console.log(_);

OK

$ cat compile_by_tss.js
require('typescript-simple')("import * as _ from 'lodash'; console.log(_)")

$ node compile_by_tss.js
/Users/zzzzz/Documents/strange-tss/node_modules/typescript-simple/index.js:168
                throw new Error(this.formatDiagnostics(allDiagnostics));
                ^

Error: L0: File '/Users/zzzzz/Documents/strange-tss/lodash.ts' is not a module.
L0: Cannot use imports, exports, or module augmentations when '--module' is 'none'.
    at TypeScriptSimple.toJavaScript (/Users/zzzzz/Documents/strange-tss/node_modules/typescript-simple/index.js:168:23)
    at TypeScriptSimple.compile (/Users/zzzzz/Documents/strange-tss/node_modules/typescript-simple/index.js:69:25)
    at strange-tss (/Users/zzzzz/Documents/strange-tss/node_modules/typescript-simple/index.js:13:27)
    at Object.<anonymous> (/Users/zzzzz/Documents/strange-tss/compile_by_tss.js:1:91)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)

う〜ん

$ ./node_modules/.bin/tsc --help | grep module
 -m KIND, --module KIND Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'.

2017-05-25

[]一応マニュアルのとこ

http://anond.hatelabo.jp/20170524171732

id:yosukegatzさん

FAQはあくまFAQだからね。手続き正当性をなぜFAQでみているのか、どの部分を持って手続き問題がある、とツイート主がおっしゃってるのかわかりませんが、マニュアルにちゃんと書いてあって、ふつうに執り行われてる手続きであるとは思いますよ。そもそも国連特別報告者はあくまで準司法quasi-judicialで、問題提起大事だって書いてあるし、これが初動なわけだから、内容が不適切だとおっしゃるなら質問にちゃんと答えりゃいいんですよ。とりあえずツイート主が言ってることは根拠がないですよ。むしろ人権侵害がある国にこそ公開でやることで回答する動機づけをしてるのは明らかだし。

国際機関を含む多国間交渉の場は利害も考え方もまちまちだから手続き大事で、そこを外すと何も進まなくなる。日本政府問題を指摘しつつも誠実に対応する(ことが求められる)が、他の国(人権侵害のひどい国)なら「回答する前に書簡政府攻撃に使われた」として回答拒否の口実にしてくるはず。

これは実例に照らして真反対。緊急性や重大性が低く、相手がちゃんと回答してくる可能性が高い場合にこそconfidentialにしている。

今回の書簡基本的には「質問」であり、当該政府からの回答に加え、別途行ったその他の調査内容と合わせて検討し、国連人権理事会報告書を提出するのが特別ラポルトゥールへの委託内容。その報告書はまだ単なる個人作成文書であるがこの時点で公開されて議論対象となる。書簡公開はルール違反

これも事実誤認ルール違反じゃない。ちゃんと書いたように,マニュアルに認められている。

送られた書簡とそれに対する受け取った回答の文章は、受任者が対応した報告書作成するときまで機密にするか、受任者が、特定の状況によって、それ以前に行動が必要であると決定する。

37. The text of all communications sent and responses received thereon is confidential until such time as they are published in relevant reports of mandateholders or mandate-holders determine that the specific circumstances require action to be taken before that time.

プレスリリースを即座にすることも認められている。

重大な懸念や、政府書簡に対して本質的な回答が出来ない状態が続く場合などの適切な状況では、受任者は個人で、あるいは他の受任者(特別報告者、作業部会など)プレスリリースプレスカンファレンス、その他の公的意見表明などを行う場合がある。

一般的に言って、受任者は政府との対話の中で、プレスリリースなどのプレス向けの声明を発出する前にそのことを明らかにするべきである。受任者が、書簡の中で、プレスリリース等をすぐにおこなう意向を示したい時は、書簡の中にそのような意向記載することが出来る。受任者は、懸念された国からの応答に対しても公平に明らかにするべきである

49. In appropriate situations, including those of grave concern or in which a Government has repeatedly failed to provide a substantive response to communications, a Special Procedure mandate-holder may issue a press statement, other public statement or hold a press conference, either individually or jointly with other mandate-holders.

50. In general, mandate holders should engage in a dialogue with the Government through the communications procedure before resorting to a press release or other public statement. When a mandate holder sends a communication with the intention of issuing a press release shortly thereafter, such intention could be indicated to the Government in the communication. Mandate holders should indicate fairly the responses provided by concerned States.

とされているように、初動が一方的に公開であることは別に認められているし、反論公平性は、反論文を同じ場所に掲示することで保とうという意思が見える。

また前に書いたように、イギリスのSnooper's charterについては、就任直後にガーディアンインタビューでいきなり問題提起しており、不必要テロ危険性をマスコミ翼賛的に報道している状態に苦言を呈しているけど別にイギリスは「反論の機会もなしにメディアでしゃべるなんて!」とも批判もしてない。(なぜインタビューされたかというと、このケナタッチ氏の就任は、アメリカメルケルとかを盗聴してたことが明らかになったのちだったので、親アメリカ派のエストニア候補が反対されたという経緯でヨーロッパではその就任が注目されていた。)そしてイギリス政府は、ガーディアン政府見解を送り、ガーディアンもそれを掲載した。ただそれだけの話なんだよ。

 当然指摘は一方的になされるので、誤認があるなら反論すればいいだけなんだよね。我が国対応が際立ってみっともないだけ。

とりあえずツイート主はFAQじゃなくってマニュアルを読んだ方がいい。

2017-05-10

トラバ書こうとすると元増田が何言ってたか一瞬で忘れる

greasemonkey書いて戻るボタンさなくて良くした。

// ==UserScript==
// @name         anond easy track back
// @description  anond easy track back
// @namespace    http://anond.hatelabo.jp/
// @include      http://anond.hatelabo.jp/*
// @require      https://code.jquery.com/jquery-3.2.1.min.js
// ==/UserScript==

(function() {
    var url = window.location.href, isEditPage = url.slice(url.lastIndexOf('/')).startsWith('/edit');
    if (isEditPage) {
        appendTrackBackContent();
    } else {
        appendEditLink();
    }
})();

function appendTrackBackContent(){
    var postId, match = $('#text-title').val().match(/anond:(\d{14})/);
    if (match.length>1){
        postId = match[1];
    } else {
        return;
    }
    jQuery.ajaxSetup({async:false});
    var content = '';
    $.get('http://anond.hatelabo.jp/' + postId, function(data){
        var section = $(data).find('.section');
        var title = $(section).children('h3').text().slice(1);
        $(section).children('p:not([class])').each(function(idx, val){
            content += $(val).text() + "<br/>";
        });
        content = '<hr><h4>' + title + '</h4><p><small>' + content + '</small></p>';
    });
    jQuery.ajaxSetup({async:true});
    $(content).insertAfter('.post-submit');
}

function appendEditLink () {
    var masudaId = $('#bannersub .username a').text();
    $('h3').each(function (idx, val){
        var postId = $(val).children(":first-child").attr("href").slice(1);
        $(val).append(' <a href="http://anond.hatelabo.jp/' + masudaId + '/edit?title=Re: [anond:' + postId + ':title]">\u2190</a>');
    });
}

タイトルに「anond:14桁の番号」があったらそっから引っ張ってきて画面下に表示する。

大なり小なりとかがエンコードされてるけど普通に表示する方法よくわからない。ちなみに直さないと使えない。

http://anond.hatelabo.jp/20070612084049

一部これの真似

2017-01-14

http://anond.hatelabo.jp/20170114155348

明確な目標があるのに、もったいない

ネットだと、情報が多すぎるのかな

javascriptかな?と思ったけど、ruby

ifもforもでてこなくてスマ

eachが形を変えたforです

いろんなとこからコピペ量産して、2時間近くかかりました^^

api取得はすぐだったけど、json、hash、arrayでごにゃごにゃ)

rubyソース

# ライブラリ
require 'net/http';
require 'uri'
require 'json'

# 検索文字
$q = 'http://ci.nii.ac.jp/books/opensearch/search?q=%E7%B3%9E&format=json'

# web-apiから取得
# https://support.nii.ac.jp/ja/cib/api/b_opensearch
def search(q)
    uri = URI.parse(q)
    json = Net::HTTP.get(uri)
    result = JSON.parse(json)
end

=begin
取得データ1件サンプル
{"title":"糞土",
"link":{"@id":"http://ci.nii.ac.jp/ncid/AN00094249"},
"@id":"http://ci.nii.ac.jp/ncid/AN00094249",
"@type":"item",
"rdfs:seeAlso":{"@id":"http://ci.nii.ac.jp/ncid/AN00094249.json"},
"dc:date":"1953",
"dc:creator":"糞土会",
"dc:publisher":["糞土会"],
"prism:publicationDate":"1953",
"cinii:ownerCount":"8"},
=end

# データ整形
#
# 入力データ構造
# {"@id":"http://ci.nii.ac.jp/books/opensearch/search?q=%E7%B3%9E&format=json",
#  "@graph":[ { "items":[ ,,,
#
# 出力(ハッシュ)
# {title => dc:date ,,, }
def format(hash)
    title_date = Hash.new

    # ハッシュキー"@graph"の値の配列の先頭のハッシュキー"items"のハッシュ配列を取得
    items = hash['@graph'][0]['items']

    # タイトル出版年を取得して、戻り値ハッシュへ追加していく
    items.each do |item|
        title = item['title'].chomp
        date  = item['dc:date']
        title_date.store(title, date)
    end

    return title_date
end

# 並び替え
def sort(hash)
    hash.sort_by do |key, value|
        value
    end
end

# 出力
def print(hash)
    hash.each do |key, value|
        puts "#{value}年 #{key}"
    end
end

# メイン関数
def main
    # web-api検索して、
    result1 = search($q)
    # データを整形して、
    result2 = format(result1)
    # 出版年で並び替えて、
    result3 = sort(result2)
    # 出力する
    print(result3)
end

# 実行
main

rubyスクリプトの実行結果

C:\Users\unko\Desktop\prog>ruby webapi.rb
1848年 人欲辨 (じんよくべん)
1870年 雀糞論説
1920年 青瓷説
1933年 管内ニ於ケル鶏糞ノ利用状況
1947年 糞尿譚 : 小説1953年 糞土
1955年 黒い裾
1955年 形成
1959年 石糞
1972年 糞 : 海田真生個人文芸誌
1972年 乳幼児糞便図譜
1987年 糞尿と生活文化
1991年 皇居と糞尿と大嘗祭 : 皇居「糞尿」裁判を支える会ニュース
1995年 糞袋
2000年 糞尿史 : 遷都は糞尿汚染からの逃避だった
2005年 「糞尿」大全
2007年 糞虫たちの博物誌
2008年 うんちのはなし : う~んとげんきになる
2009年 糞神

2016-07-25

gitにおけるコミットログ/メッセージ例文集100

私はコミットログの書き方に悩む英語の苦手な人間である。実際、似たような人は世の中に結構いるようで、頻出単語を集計したりまとめたものは既にあって役に立つのだけれど、これらはあくま単語の話であり、具体的な文を構成する過程でやっぱり困る部分がかなりあった。

要するに、どういう時にどういう文が使われているのか、ということを示した例文集が欲しいのであるググると他にも「例文集があればいいのに」みたいな声はあるくせして、しかし誰も作ろうとしない。何なんだお前ら。それじゃ私が楽できないじゃないか

仕方なく自分でまとめたので、増田に垂れ流しておく。

はじめに

ここで挙げているコミットログは全て実際のコミットログから転載である。当然ながら各コミットログ著作権はそれぞれの書き手にある。いずれも各英文でググれば出てくるし、フェアユース範囲なら許してくれるだろうと考え名前プロジェクト名は割愛したが、ここにお詫びと感謝を述べておきたい。

抽出条件だが、参考にできそうなコミットログを多く含んでいそうなリポジトリGitHubSTARの多い方からざっと目で見て適当に選び、それぞれ最新コミットから5000件抽出した(あわせて前処理として、コミットログ冒頭のタグ情報は消去した)。

結果として対象としたリポジトリは以下の通り。

atomのみ5400件抽出していたため、計25400件のコミットログベースである。このうち、以下の条件に合致するものは参考例にすべきでないとして一律排除した。

こうして残った8540件を眺めながら、適当に切り出したのがこの用例集である個人的に「うーんこの」と思った表現も、散見される場合は載せた。

ということで、以下用例を羅列していく。

用例集

オプションフラグメニューを追加した
ファイルを追加した
メソッド機能を追加した
実装を別のものへ切り替えた
  • Use args.resourcePath instead of args.devResourcePath
  • Use arrays instead of while loops
  • Use auto instead of repeating explicit class names
  • Use weak pointer instead of manual bookkeeping
  • Change all uses of 'CInt' to 'Int32' in the SDK overlay
  • Change Integer#year to return a Fixnum instead of a Float to improve consistency
新しく何かに対応した/機能上の制約を取り払った
何かを使うようにした
より好ましい実装に改良した
何かを出来ない/しないようにした
  • Don't bail reading a metadata instance if swift_isaMask isn't available
  • Don't exit until the parent asks for an instance
  • Don't include Parent pointer in Nominal/BoundGeneric TypeRef uniquing
  • Don't use MatchesExtension for matching filters
  • Don't use ES6 class for AutoUpdater windows class
  • Don't use MatchesExtension for matching filters
  • Avoid `distinct` if a subquery has already materialized
  • Avoid infinite recursion when bad values are passed to tz aware fields
オブジェクトの内容や挙動確認やすくした
Assertを追加した
不要コードを除去した
コードを移動した
名前修正した
さなバグタイポ修正した, 警告を潰した
バグや好ましくない挙動修正した
テストコメントドキュメントを追加した
テストを削除した
テストコメント修正した
ドキュメント修正した

表現傾向とまとめ

以上の用例をふまえ、今回の参考ログ8540件から先頭の単語を出現回数で並べると次のようになった。

Add1149
Fix1014
Update584
Remove566
Use382
Don't260
Make228
Move178
Change103
Rename85
Improve76
Avoid68
Allow65
Implement60
Handle58

コミットログの基本形はもちろん動詞 + 名詞である名詞固有名詞複数形、不可算名詞が多いが、単数形場合冠詞は a が使われるか、あるいは省略される。the はまず使われない。

何かを追加した、という表現では非常に広く Add が使われる。メソッドからテストドキュメントに至るまで大概これでまかなえる。

一方、何かを修正した、という表現では広く Fix が使われる。「何か」は typocrash といった単語からメソッド名まで幅広い名詞を取るが、動名詞はあまり取らないのと、that節は取らないのでその点は注意が必要である

Fix は「何かが正しく動くようにした」ことを示し、正しい動作内容が何かを説明しない。そこで正しい動作内容に言及したい場合Make sure が使われる(こちらはthat節が取れる)。ただし Fix よりもニュアンス的に重い表現と思われ、Fix を使わず Make sure ばかり使うのはちょっとキモいのではないかと思う(Ensure はさらに重い表現っぽい)。

また、Fixtypo 以外でのドキュメント修正に対して使われることは稀である。対して Update はドキュメントコメントテストに使われ、本体コード修正に対しては使われない。本体コード修正にあわせてテスト更新したなら Update が使われる。ただ、テスト機構それ自体バグ修正したなら Fix である

無駄な何かを単純に除去したなら Remove を使う。これまでのもの(A)からのもの(B)に切り替えたのであれば Use B instead of A か Change A to B が使われる。新たに何かを利用するようにしたのであれば Use を、利用を取りやめた場合Don't use を使うことが多い。

何かをしないようにしたなら Don't を、内部実装効率化なら Make A + 比較級/形容詞Improve が使われる。

中身の変更を伴わない単なる名前の変更なら Rename A to B、コード機能論理上の場所を移動させたなら Move A to B である

この辺はリファクタリングと呼ばれる行為と思うが、Refactor というぼんやりした動詞はあまり使われず、このように変更内容の種類に応じて動詞が使い分けられている。

余談

コミットログにはWhyを書くべきだ、というのを何かで見かけたので because とか since を使ったログがどの程度あるかを調べたが、8540件のうち22件だった。基本的に短く、シンプルに、一目で意味が取れるログが好まれる傾向がある。例えば get rid of とか2件しか使われておらず、圧倒的に remove である

一方で、シンプル単語だけど開始単語としては使われないものもある。例えば次のような単語である。Expand(9)、Extend(8)、Print(5)、Optimize(5)、Publish(4)、Append(4)、Modify(3)、Manage(2)、Revise(2)、Dump(2)、Insert(2)、Migrate(2)、Enhance(1)、Edit(1) 。いずれもカッコ内は8540件に対する冒頭での登場回数である。結局、より一般的平易な単語で表せたり、Refactor同様に抽象度が高すぎると使われないのだろう。

おわりに

8000件もログを見たおかげで、迷いなくコミットメッセージが思いつくようになったのが個人的には今回書いてて最大の収穫だった。たぶんカンニングペーパーを作る行為それ自体効率のいい学習になるという話と同じだと思う。

このまとめも100以上用例を転載してあるので、それを読むだけでも多少は効果があるんじゃないかと思う。同じようにコミットログ書きたくねぇなぁ英語わっかんねぇなぁと思っている人にとって、何か役に立つところがあれば幸いである。

2016-05-23

英語得意な増田ちょっとこい :would to ってなに?

"Without indexes, every search would to DBMS would require a scan of all recedes and be extremely costly."

DBMSはData base management systemの略

俺の解釈は、

インデックスなしの全てのサーチ(それはDBMSに対するものと想定される)は全てのレコードスキャンする必要があって、めっちゃ時間かかるわ。”

まぁ内容はなんとなくわかるんだけど、would to が謎過ぎて気になったので質問しました。

2016-04-14

detox

Toxins are everywhere. Car exhaust, secondhand smoke, flame retardants, plastic packaging, heavy metals, pesticides, BPA-coated receipts… Unless you’re living in virgin forest, you’re going to come into contact with some less-than-optimal chemicals pretty much every day.

That’s definitely no reason to panic. In fact, small doses of toxins may be good for you because of a phenomenon called hormesis – mild stress makes your cells work more efficiently. However, your body can have trouble clearing certain toxins. You eliminate most of the bisphenol-A (BPA) and other plastics you ingest, but a small percentage hides away in your fat cells, messing with your hormones and accumulating over time. It’s the same deal with several mold toxins, heavy metals like lead, nickel, cadmium, mercury, and aluminum, and with certain pharmaceuticals and drugs like THC.

A good detox protocol can help you eliminate these more stubborn toxins. The trouble is that many common detoxes don’t work. Juice and water cleanses, for example, are often actually counterproductive because they deprive your body of essential nutrients it needs to function. That said, there are a few genuine ways to detox.

Because so many toxins stay in your fat cells, one way to detox is through lipolysis – breaking down your fat cells and releasing the hard-to-reach toxins stored within them. Lipolysis is especially effective when you combine it with liver and kidney support or adsorbents that can suck up the released toxins. This article focuses on all of the above. Let’s start with saunas.

1) Sauna sessions

Sweating does more than cool you off. It also helps you get rid of both heavy metals and xenobiotics – foreign compounds like plastics and petrochemicals – in small but significant amounts. A 2012 review of 50 studies found that sweating removes lead, cadmium, arsenic, and mercury, especially in people with high heavy metal toxicity [1]. Another study put participants in both traditional and infrared saunas and found similar results [2]. Sweating also eliminates hormone-disrupting BPA, which accumulates in your fat cells [3].

There’s debate about the best kind of sauna for detoxification. A couple studies have shown that infrared saunas are the most effective for detoxing, but the research was funded by infrared sauna companies, so the results are questionable. Both traditional and infrared saunas are effective for detoxing [2]. That said, I prefer infrared saunas for a few reasons:

They don’t get as hot. Traditional saunas heat the air around you, while infrared light penetrates and heats your tissue directly. You sweat in an infrared sauna at around 130-150 degrees instead of at 180-200 degrees, so you can stay in for longer without feeling like you’re going to pass out. I’ve done 2-hour infrared sauna sessions (drinking salt water the whole time to replenish electrolytes and fluids, of course).

They’re easier on your electric bill. Again, infrared saunas require less energy, especially if you get a sauna that reflects infrared light back on you. This one, for example, costs about 15 cents an hour to run.

Infrared saunas are often cheaper.

I personally use a Sunlighten infrared sauna and love it. If you don’t want to buy an infrared sauna and there isn’t one around you, a standard sauna will work perfectly well [2]. There’s probably one in your local gym.

Keep in mind that sweating pulls electrolytes and trace minerals from your body, so it’s important to drink a lot of fluids and get plenty of salt (preferably Himalayan pink salt or another mineral-rich natural salt) if you’re going to use a sauna to detox [2].

2) Exercise

Exercise is another way to flush toxins from your body, and through more than just making you sweat. Exercise increases lipolysis (the breakdown of fat tissue), releasing toxins stored in your fat tissue. Studies show that people who exercise and lose body fat end up with higher levels of circulating hormone disruptors [4]. Increasing lipolysis through diet does the same thing [5].

Mobilizing toxins isn’t necessarily a good thing, particularly if you’re unequipped to get rid of them. You want to be sure you’re getting rid of toxins, not just moving them to a different part of your body. Working out addresses the issue to a degree: it improves circulation, providing more oxygen to your liver and kidneys so they can better filter out toxins. You can also give your system even more support and pull out bad stuff with the next two detox tools: activated charcoal and glutathione.

3) Activated charcoal

Activated charcoal is a form of carbon that has massive surface area and a strong negative charge. It’s been around for thousands of years and it’s still used in emergency rooms today to treat poisoning.

Charcoal binds to chemicals whose molecules have positive charges, including aflatoxin and other polar mycotoxins [6], BPA [7], and common pesticides [8]. Once the chemicals attach to the charcoal you can pass them normally (i.e. poop them out).

Charcoal can bind to the good stuff, too, so I don’t recommend taking it within an hour of other supplements. Try taking a couple charcoal pills along with exercise or have a sauna session. They should adsorb many of the toxins you release into your gut and GI tract.

4) Glutathione

Glutathione is a powerful antioxidant that protects you from heavy metal damage, according to studies in both human and rat cells [9,10,11,12]. Glutathione also supports liver enzymes that break down mold toxins and heavy metals. Your digestion will destroy normal glutathione, so opt for a liposomal glutathione supplement that makes it through your stomach. You can also supplement with N-acetylcysteine and alpha-lipoic acid, which your body can use to build glutathione on its own [13]. If you have severe heavy metal or mycotoxin poisoning, talk to a naturopath or functional medicine doctor about intravenous (IV) glutathione. It’s expensive and less convenient than an oral supplement, but it works very well.

5) Cryolipolysis

We’ve talked about how heat and exercise can increase fat burning to detox your fat cells. It turns out cold can do the same. Cryochambers are gaining popularity with professional athletes and other high performers for their ability to quell inflammation. It turns out they can help you burn fat – and release the toxins stored in itas well.

A cryochamber uses liquid nitrogen to supercool your body, stimulating mitochondrial function and decreasing inflammation. Intense cold also destroys fat cells, which has led to cryolipolysis therapy as a way to slim down [14,15]. You can use it to detox, too.

Can’t get your hands on a cryochamber? Try traditional cold thermogenesis instead.

6) Ketosis

Quick disclaimer: I haven’t found studies specifically looking at ketosis and toxin load, so you may want to take this section with a grain of (Himalayan) salt. That said, ketosis is a very effective way to induce lipolysis, particularly if you’re fasting.

When you’re in ketosis and you haven’t eaten recently, your body breaks down your fat stores into free fatty acids, which it then converts to ketones for fuel. That means that, in theory, you should be able to supercharge your detox (and fat loss) by dropping into nutritional ketosis.

The Bulletproof Diet puts you into mild ketosis, which curbs your hunger and sharpens your brain without forcing you to forego carbs entirely. If you want to try nutritional ketosis for detoxing, youll have to modify the Bulletproof Diet slightly. Skip carb reefed days for a couple weeks and limit carbs to ~30-50 grams per day. You can use keto urine strips or – even better – a blood ketone meter to test and make sure you’re becoming fat-adapted. Once your levels read around 1.5 mg/dL, you’re comfortably in nutritional ketosis. At that point, fasting will attack your fat stores and mobilize toxins, which you can mop up with activated charcoal or sweat out (or both).

7) Chelation therapy for heavy metals

Chelation therapy is the strongest way to detox heavy metals. It can also be dangerous, so many doctors don’t recommend it unless you have moderate to severe heavy metal poisoning. Chelation therapy uses compounds called chelators that form strong bonds with heavy metals, leaving them unable to further poison your body. You can then pass them normally. Chelation therapy is very effective for removing lead, mercury, aluminum, arsenic, iron, and copper.

If you’ve been exposed to a lot of heavy metals, talk to a functional medicine doctor about chelation therapy. You really want to go to a medical professional for this one, because it’s so effective that if your liver and kidneys aren’t able to process the metals (a common problem in people with heavy metal poisoning) you can get seriously ill.

Combining detox methods for maximum effect

Each of these 7 methods works well on its own, and you can stack methods for an even greater effect. Exercise and sauna sessions are a good example. Preliminary evidence suggests that exercising and then hitting the sauna afterward will detoxify you better than either one alone does [16]. With that in mind, here’s a sample detox protocol:

Take 2-3 mL liposomal glutathione and 2-3 g vitamin C an hour before exercising.

Exercise for at least 20-30 minutes (HIIT is a good option).

Take 3-4 activated charcoal pills.

Spend 45-60 minutes in a sauna. Remember to get plenty of water and salt/electrolytes.

If you have a lot of fat and you’re burning it off quickly, you’re probably getting rid of a lot of toxins in one fell swoop, and you may get a headache, digestive problems, brain fog, etc. If that happens try taking more glutathione, vitamin C, and charcoal. Be sure you take charcoal at least an hour away from other supplements, as it binds to vitamin C.

Toxins are a fact of modern life, especially if you live in a city or somewhere with poor air quality, mold, and/or a lot of petrochemical byproducts. These detox methods can give your body a little extra support dealing with pollutants and help you perform your best.

Subscribe below if you want more info about how to upgrade your body and brain. Thanks for reading and have a great week!

2016-03-30

$ sudo gem install mechanize
Fetching: net-http-digest_auth-1.4.gem (100%)
Fetching: net-http-persistent-2.9.4.gem (100%)
Fetching: mime-types-2.99.1.gem (100%)
Fetching: unf_ext-0.0.7.2.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing mechanize:
	ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
	from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
	from extconf.rb:1:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/unf_ext-0.0.7.2 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/unf_ext-0.0.7.2/ext/unf_ext/gem_make.out

2015-11-29

aliexpressをrubyスクレイピング

rubyスクレイピング

aliexpressの検索結果から

検索結果のURLを抜き取るのは、

結構簡単にできた。

ここから、ページ切り替えてURL収集する処理も追加すれば、

クローロング部分は完成。

あとは、各ページに対するスクレイピング問題



require 'open-uri'

require 'nokogiri'

# スクレイピング先のURL

url = 'http://ja.aliexpress.com/category/200003482/dresses.html?spm=2114.52010108.6.7.gT0qlW&addpid=32546825642&isOnSale=yes%22'

charset = nil

html = open(url) do |f|

charset = f.charset # 文字種別を取得

f.read # htmlを読み込んで変数htmlに渡す

end

# htmlパース(解析)してオブジェクト作成

doc = Nokogiri::HTML.parse(html, nil, charset)

num=0

doc.css('a[class = "product "]').each do |product|

p product.attribute("href").text

p num = num+1

end

2015-11-18

http://anond.hatelabo.jp/20151117165233

Solving this problem is going to require a diverse set of intellectual property, technical and information assets and an inclusive attitude toward software developers.
※Intellectual property知的財産権と訳したくなるのは判るが、ここでは誰もそんな話はしていない。

"Independent developers are facing walled gardens" への対置として挙げられているのだからintellectual property は「知的財産」と訳すのが妥当

intellectual property rightsとは書かれておらず、また、権利の話をしているわけではないから、「知的財産権」と訳すべきかは微妙

Hell, start an Occupy Doubt Street movement and doubt the lot of them simultaneously.
●ったく、「オキュパイダウトストリート」の運動でも始めて、あらゆる大企業を一斉に疑えばいいさ。
◆「ダウト通り占拠」運動でも始めて、連中にまとめてダウトを突き付ければいいじゃないか。
※オキュパイはそのままだと通常の読者層は理解できないと思う。

"Occupy Doubt Street" が "Occupy Wall Street" をもじったものであることは明らか。同語の日本語訳としては「オキュパイウォール・ストリート」もしくは「ウォール街占拠」が妥当

したがって、この場合は「オキュパイダウトストリート」あるいは「ダウト街占拠」が採るべき訳と考えられる。「ダウト通り」という訳語は「ウォール街から離れてしまうので不適当

2015-11-17

http://anond.hatelabo.jp/20151117013422

ぼくのかんがえたただしいやくw

◇Solving this problem is going to require a diverse set of intellectual property, technical and information assets and an inclusive attitude toward software developers.

●この問題を解くには、さまざまな知的資質や、技術的・情報的な資産、そしてソフトウェア開発者に対する包括的な態度が必要だ。

●この問題を解決するには、さまざまな知的財産権技術的・情報的な資産、そしてソフトウェア開発者制限を受けずに仕事を進められる環境必要になるだろう。

問題の解決には多彩な知的資質技術情報資産、そしてソフトウエア開発者を束縛しない姿勢要求される(だろう)。

Intellectual property知的財産権と訳したくなるのは判るが、ここでは誰もそんな話はしていない。

※inclusive attitude最近社会適応に絡んで「包摂的」の訳を充てている場合が多いが、対象読者に通じるかは疑問。原文で言っているのは明らかに「エンジニアの好きにやらせろという主旨」なのでこの訳。

◇I was a professor for ten years and spent a great deal of my time doing research and consulting.

教授10年やったこともあるし、研究コンサルティングにもだいぶ時間を使ったよ。

教授10年やって、研究コンサルティングにもだいぶ時間を使ったよ。

◆十年に及ぶ教授勤めをして、研究コンサルティング大分時間を費やしてきた。

※明示されてないが教授をやりながら並行的に研究コンサルティングを(その一貫もしくは副業的に)していたと(も)とれるので、教授研究コンサルティングは明確に分断してはダメ。その反面、教授を辞めてから研究コンサルティングをしていなかったとは書いてないので、添削版もニュアンス的にはいささか問題がある。

◇[M]any of today's most successful companies were written off at one time or another as having an empty pot. If you'd like, buy me a Starbucks and you can have an Apple while we discuss them.

●今最も成功している会社の多くが、鍋が空だと思われてしまったことがある。もしその気があれば、スターバックスをおごってくれたら、アップルに関する話でもするよ。

●今とても成功している会社の多くが、過去のある時期にはもう鍋は空だと見限られてしまったことがある。どうだろう、「スターバックス」をおごってくれたら「リンゴ」をあげるけど、食べながら低迷した大企業の話でもしようか。

今日、隆盛を極めている企業の多くは、どこかの段階で命運が尽きたと噂された経験をしてきている。暇ならスターバックスで一杯侈ってくれないか。アップルの話でもしてあげようじゃないか。

empty pot、中国故事とされている逸話空鍋と訳すのは間違い。

スターバックスアップルも落目の時期があったという、業界方面共通認識に基づく、ものすごく捻った文章なので注意。

Hell, start an Occupy Doubt Street movement and doubt the lot of them simultaneously.

●ったく、「オキュパイダウトストリート」の運動でも始めて、あらゆる大企業を一斉に疑えばいいさ。

◆「ダウト通り占拠」運動でも始めて、連中にまとめてダウトを突き付ければいいじゃないか。

※オキュパイはそのままだと通常の読者層は理解できないと思う。

ここまでにEmpty potの原典スターバックスアップルの業績凋落およびオキュパイ関連の資料当たるのも含めて一時間。飽きた。

もうちょっと調べて、考えような。

2015-11-12

[]Node.jsイベントリスナーが呼ばれません

下記のようなファイルを用意してOKボタンを押下してもgettxt.jsのOnOKが呼ばれません。

誰か教えて下さい。

gettxt.js

var http = require('http')

,fs = require('fs');

http.createServer(function (req, res) {

fs.readFile('./HTMLPage.html', 'UTF-8', function(err, data) {

res.writeHead(200, {'Content-Type': 'text/html'});//text/plainから変更

res.end(data); // 「Hello, world!」から変更

});

}).listen(8124);

function OnOK(){

var text = document.getElementById("text").value;

// textを使って何か処理を行う

}

HTMLPage.html

※<>は全角にしてます

<head>

script src="gettxt.js"></script

</head>

body

<input type="text" id="text" size=50></input>

<button onClick=javascript:OnOK() >OK</button>

<div id="log"></div>

</body

2015-08-25

IT関係ないサラリーマンコミュニティサイト作っちゃいました。

私ごとですが、この度コミュニティサイト作成いたしました。

私の持てる知識を絞り出してなんとか完成しました。

**************************************************************************************

完成したサイトがこちらです。

LapyNetニュース

http://lapynetz.net/

**************************************************************************************

私は普段webとは関係ない仕事してます。なんとか休日を利用して、

webサービス作成しました。

メインのコードはこんな感じ

----------------------------------------------------------------------------------------------------------------------



App::uses('Sanitize', 'Utility');
class RssfeedsController extends AppController {

public $helpers = array('Html','Form','Session','Number','Cache');

public $uses = array(
'Rssfeed',
'Tweet',
'Wadai',
'Rank',
'Oracle'
);
 **************************************************************************************
public function index() {

$title_for_layout = "LapyNetニュース";
$content = "Hello World!!";

$this->set(compact('title_for_layout','content'));
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' = > array(
'and' = > array(
'Rssfeed.time' = > $today,
)),
'order' = > 'tweets desc',
'limit' = > '50'
);
$this- >set('posts',$this- >Rssfeed- >find('all',$params));

$paramz = array(
'order' = > 'Rssfeed.id desc',
'limit' = > '10'
);
$this->set('posts2',$this->Rssfeed->find('all',$paramz));

$paramz = $this- >Rssfeed- >query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('posts2', $paramz);

$parapara = $this- >Oracle- >query('SELECT id,title FROM oracles order by id desc limit 10');

$this- >set('postx', $parapara);

$funking = $this- >Rank- >query('SELECT id,frank FROM ranks where creation=(select max(creation) from ranks)');

$this- >set('funking', $funking);


}

 **************************************************************************************
public function mizuno() {
$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$recent_posts = $this->Oracle->find('all',$parapara);
return $recent_posts;

}


 **************************************************************************************
public function wadai() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 4
)),
'order' => 'tweets desc',
'limit' => '100'
);
$this->set('posts',$this->Rssfeed->find('all',$params));





$this->set("title_for_layout","2CHニュース-LapyNetニュース");


$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postyy',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);


$this->set('postyx',$this->Oracle->find('all',$parapara));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function hot() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 3
)),
'order' => 'tweets desc',
'limit' => '20'
);
$title_for_layout = "LapyNetニュース";
$this->set("title_for_layout","ニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);
$this->set('postxx',$this->Oracle->find('all',$parapara));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postsxxx',$this->Rssfeed->find('all',$paramz));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);


}

 **************************************************************************************
public function newnew() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 2
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set("title_for_layout","エンタメニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$paramz = $this->Oracle->query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('postszz', $paramz);

$parapara = $this->Oracle->query('SELECT id,title FROM oracles order by id desc limit 10');

$this->set('postzy', $parapara);


$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function top() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}
$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 1
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set('posts',$this->Rssfeed->find('all',$params));

$param = array(
'conditions' => array('times > current_timestamp + interval -600 minute and Kubetu = 4'),
'order' => 'tweets desc',
'limit' => '30'
);
$this->set('posts2',$this->Rssfeed->find('all',$param));
}


 **************************************************************************************
public function view($id = null ) {
$this->Rssfeed->id = $id; //驥崎ヲ√↑荳譁・i縺励>
$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$statuses = $TwimStatus->tweet();
$rairai = $this->Rssfeed->read(title,$id);
$alcol = $this->Rssfeed->read();
$this->set('post', $alcol);

$this->set('post2', $user);
$this->set('post3', $statuses);
$this->set("title_for_layout",$rairai[Rssfeed][title]."-LapyNetニュース");

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '20'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$this->set('postzy',$this->Oracle->find('all',$parapara));

}
 **************************************************************************************
public function add() {

if($this->request->isPost()){
if($this->Tweet->save($this->data)) {
$this->Session->setFlash('seikou');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));

}else{
$this->Session->setFlash('sipai');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
}
}
}
 **************************************************************************************
public function delete($id = null) {
$this->Rssfeed->id = $id; 
$this->set('set', $this->Rssfeed->read());
$this->redirect(array('controller'=>'tweets','action'=>'delete',$this->data['tweet']['rssfeed_id']));


}
 **************************************************************************************
public function oracle() {
if($this->request->is('post')) {

$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$contents1 = $this->request->data['Rssfeed']['contents'];
$contents2 = $this->request->data;
$statuses = $TwimStatus->tweet($contents1);


if($this->Rssfeed->save($contents2)) {
$this->Session->setFlash('成功です。');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->redirect($this->referer());
}else{
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->Session->setFlash('失敗です。');
}
}


}
 **************************************************************************************
public function makelist() {
$rssfeeds = $this->paginate();
if ($this->request->is('requested')) {
return $rssfeeds;
} else {
$this->set('rssfeeds', $rssfeeds);
}
}

}

----------------------------------------------------------------------------------------------------------------------

rssフィードはこんな感じです。
----------------------------------------------------------------------------------------------------------------------

#!/usr/bin/php
<?php

header('Content-type: text/html; charset=UTF-8');


require_once ('/var/www/html/s/magpierss/rss_fetch.inc');


define('MAGPIE_CACHE_AGE', 60*5);

define('MAGPIE_CACHE_DIR', '/var/www/html/s/cache/');

define('MAGPIE_OUTPUT_ENCODING','UTF-8');


$urls = array(
'*********************************');

$items = getRssList($urls);

echo '<ul>';
foreach ($items as $item) {

$href = mb_convert_encoding($item['link'], "UTF-8", "auto");

$title = mb_convert_encoding($item['title'], "UTF-8", "auto");
$description = mb_convert_encoding($item['description'], "UTF-8", "auto");
$megami = mb_convert_encoding($description, "UTF-8", "auto");

 

 **************************************************************************************


$all = 'http://urls.api.twitter.com/1/urls/count.json?url='.$href;
$Rits = file_get_contents($all);
$Olfe = mb_convert_encoding($Rits, 'UTF-8', 'auto');
$data = json_decode($Olfe);
$tweets = $data->count;

 **************************************************************************************

$checkman = db_check_urls($href);
$checkman2 = db_check_pr($title);

$nowtimes = date('Ymd');

 


if($checkman == 0 && $checkman2 == 0){
#$hrefs = urlencode($href);
db_put_urls($nowtimes,$href,$title,$description,$tweets);
echo "<li><a href=$href>$title</a><br>$megami<p>$tweets</p><p>$checkman</p></li>";
}else{

}


}
echo '</ul>';

 

 

 **************************************************************************************
function getRssList($urls)
{
$rssitems = array();
foreach ($urls as $url) {
$obj = fetch_rss($url);
$rssitems = array_merge($rssitems, $obj->items);
}
return $rssitems;
}

 **************************************************************************************
function db_check_pr($japanese){

$moji = mb_substr($japanese,0,2);
if($moji == 'PR'){
return 1;
}else{
return 0;
}
}
 **************************************************************************************

function db_check_urls($href){

require '/var/www/html/s/database_conf.php';

try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$sql = 'SELECT count(*) AS count FROM rssfeeds WHERE urls = :language';
$prepare = $db->prepare($sql);


$languages = array($href);
foreach ($languages as $language) {

$prepare->bindValue(':language', $language, PDO::PARAM_STR);
$prepare->execute();

$result = $prepare->fetchColumn();
if ($result > 0) {
return true;
}else{
return false;
}
}

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}

function h($var) 
{
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}

 **************************************************************************************
function db_put_urls($nowtimes,$href,$title,$description,$tweets){
require '/var/www/html/s/database_conf.php';
try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sikibetu = 5;
$moto = "アニゲー速報VIP";

$sql = 'insert into rssfeeds (id, time,urls,title,contents,tweets,times,kubetu,teikyo) values (?, ?, ?, ?, ?, ?, ?, ?, ?)';

$prepare = $db->prepare($sql);

$prepare->bindValue(1, 0, PDO::PARAM_STR);
$prepare->bindValue(2, $nowtimes, PDO::PARAM_STR);
$prepare->bindValue(3, $href, PDO::PARAM_STR);
$prepare->bindValue(4, $title, PDO::PARAM_STR);
$prepare->bindValue(5, $description, PDO::PARAM_STR);
$prepare->bindValue(6, $tweets, PDO::PARAM_STR);
$prepare->bindValue(7, 'cast( now() as datetime)', PDO::PARAM_STR);
$prepare->bindValue(8, $sikibetu, PDO::PARAM_STR);
$prepare->bindValue(9, $moto, PDO::PARAM_STR);
$prepare->execute();

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}
}
?>

---------------------------------------------------------------------------------------------------------------------

**************************************************************************************

参考にした書籍

CakePHP2 実践入門 (WEB+DB PRESS plus)

CakePHP2 実践入門 (WEB+DB PRESS plus)

作者: 安藤祐介,岸田健一郎,新原雅司,市川快,渡辺一宏,鈴木則夫

出版社/メーカー: 技術評論社

発売日: 2012/09/29

メディア: 単行本ソフトカバー

購入: 5人 クリック: 165回

この商品を含むブログ (9件) を見る

Webアプリ開発を加速する CakePHP2定番レシピ119

Webアプリ開発を加速する CakePHP2定番レシピ119

作者: 長谷川智希,デジタルサーカス

出版社/メーカー: 秀和システム

発売日: 2013/09/28

メディア: 単行本

この商品を含むブログ (1件) を見る

**************************************************************************************

一番難しいところはtwitterログインwebサイト連結でした。

cakephp直感できに操作できていいです。

素人のわたしでも操作できましたので。

cakephpを使用しています

webからニュース収集してきます

ツイート数でランキングしてますネット話題を見つけられます

twitterアカウントログインできます

ニュースに対するコメントもできるし、

自分記事投稿できます。(画像も可)

デザインはよくわからないので、

ホームページビルダーを使用しています

今のホームページビルダーは昔と違って高機能ですね。

テンプレートも何種類もあって今はすごいです。

アマゾンawsを使用してます

サーバーWebサーバーデータベースサーバmysql)

に分かれています

今更cakephpを使っている人は少ないかもしれませんが、

データベースとの接続などは楽でした。

twitterアカウントあるといつでも参加できますので、

ニュースを通してコミュニケーション目的としたサイトを目指します。

2015-05-03

Article 29 [Modification of boundaries]

Article 29 [Modification of boundaries]

(1) Boundaries may be modified to ensure that the Länder, by virtue of their size and capacity, can effectively perform their functions. Due regard shall be given to regional, historical and cultural ties, economic expediency and the requirements of regional policy and planning.

(2) Boundary modifications shall be introduced by federal law which shall require confirmation by referendum. The affected Länder shall be consulted.

(3) A referendum shall be held in the Länder from whose territories or parts thereof a new Land or a Land with redefined boundaries is to be formed (affected Länder). The question to be voted on is whether the affected Länder are to remain within their existing boundaries or whether a new Land or Land with redefined boundaries should be formed. The vote shall be in favour of the formation of a new Land or of a Land with redefined boundaries if the modification is approved by a majority in the future territory of such Land and in the territories or parts thereof as a whole of an affected Land whose affiliation with a Land is to be changed accordingly. The vote shall not be in favour where in the territory of one of the affected Länder a majority reject the change; such rejection shall, however, be of no consequence where in one part of the territory whose affiliation with the affected Land is to be changed a majority of two-thirds approve, unless in the entire territory of the affected Lan d a majority of two-thirds reject the change.

(4) Where in a clearly defined, homogeneous community and economic area whose parts lie in several Länder and which has a population of at least one million one tenth of those entitled to vote in Bundestag elections submit a petition to the effect that the area in question belong to one Land, a federal law shall be enacted within two years which shall determine whether boundaries of the affected Länder are to be modified pursuant to paragraph (2) of this Article or that a referendum is to be held in the affected Länder.

(5) The referendum shall establish whether a boundary modification proposed in the law meets with approval. The law may contain different but not more than two proposals for the referendum. If a majority approve a proposed boundary modification a federal law shall be enacted within two years which shall determine whether such modification is to be introduced pursuant to paragraph (2) of this Article. If the referendum is approved in accordance with the third and fourth sentences of paragraph (3) of this Article a federal law providing for the formation of the proposed Land shall be enacted within two years of the referendum and shall not require any further confirmation by referendum.

(6) A majority in a referendum shall be a majority of the votes cast, provided that they amount to at least one quarter of those entitled to vote in Bundestag elections. Detailed provisions concerning referendums and petitions shall be the subject of a federal law which may also provide that petitions may not be repeated within a period of five years.

(7) Other modifications of Land boundaries may be effected by agreement between the Länder concerned or by a federal law with the approval of the Bundesrat where the territory which is to be the subject of a boundary modification does not have more than 50,000 inhabitants. Details shall be the subject of a federal law requiring the approval of the Bundesrat and the majority of the Members of the Bundestag. It shall make provision for the affected municipalities and counties to be heard.

(8) Länder may, in derogation of the provisions of paragraphs (2) to (7) of this Article, modify the boundaries of their territories or parts thereof by mutual agreement. The affected municipalities and counties shall be heard. The agreement shall require confirmation by referendum in each of the Länder concerned. Where the agreement relates to parts of the territory of Länder the confirmatory referendum may be confined to the areas affected; the latter part of the fifth sentence shall not apply. In a referendum the majority of the votes cast shall be decisive provided it amounts to at least one quarter of those entitled to vote in Bundestag elections; details shall be the subject of a federal law. The agreement shall require the consent of the Bundestag.

2015-01-18

http://anond.hatelabo.jp/20150118021616

なるほどと思ってSpaceTimeのコード読んでみたけど、

あんだけ関数関数型言ってるのに書いてるコードは下手なオブジェクト指向プログラミングなのが泣ける。

そのrequireオブジェクトをnewするように書きなおした方がきれいになるよ!

2014-07-18

http://anond.hatelabo.jp/20140718201324

自分で読めよめんどくせーな.

  • A resource is a source or supply from which benefit is produced.
  • Typically resources are materials, energy, services, staff, knowledge, or other assets that are transformed to produce benefit and in the process may be consumed or made unavailable.
  • The concept of resources has been applied in diverse realms, including with respect to economics, biology and ecology, computer science, management, and human resources, and is linked to the concepts of competition, sustainability, conservation, and stewardship. In application within human society, commercial or non-commercial factors require resource allocation through resource management.
  • Resources have three main characteristics: utility, limited availability, and potential for depletion or consumption.



このくらいでわかるだろ.

2013-07-24

http://anond.hatelabo.jp/20130724162534

// ==UserScript==
// @name        anondNoAdd
// @namespace   http://http://anond.hatelabo.jp/
// @include     http://anond.hatelabo.jp/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
// @version     1
// ==/UserScript==
$("#afc_footer").remove();

2012-09-18

http://anond.hatelabo.jp/20120918173309

書き捨て

https://github.com/tdtds/massr

bundle install --path vendor/bundle
Gemfile syntax error:
/h/massr/Gemfile:14: syntax error, unexpected ':', expecting kEND
	gem 'sinatra-reloader', require: 'sinatra/reloader'
	                                ^
/h/massr/Gemfile:16: syntax error, unexpected ':', expecting kEND
	gem 'pit', require: 'pit'
	                   ^

sudo gem install sinatra
Successfully installed sinatra-1.3.3
1 gem installed
Installing ri documentation for sinatra-1.3.3...

unrecognized option `--encoding=UTF-8'

For help on options, try 'rdoc --help'

ERROR:  While generating documentation for sinatra-1.3.3
... MESSAGE:   exit
... RDOC args: --ri --op /Library/Ruby/Gems/1.8/doc/sinatra-1.3.3/ri --line-numbers --inline-source --title Sinatra --main README.rdoc --encoding=UTF-8 lib README.de.rdoc README.es.rdoc README.fr.rdoc README.hu.rdoc README.jp.rdoc README.ko.rdoc README.pt-br.rdoc README.pt-pt.rdoc README.rdoc README.ru.rdoc README.zh.rdoc LICENSE --title sinatra-1.3.3 Documentation --quiet

アホか

2012-06-17

宇宙において美しい構造を実現しようと思ったら整数環についてよく知るように素数判定や素因子分解のアルゴリズムを発展させたり,計算機を開発したり,諸学の発展を素数論に結びつけるようにしていくのがよいではないだろうかと思った.

the dignity of the science itself seems to require that every possible means be explored for the solution of a problem so elegant and so celebrated

ラテン語から英訳

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん