Hatena::ブログ(Diary)

satoru.netの自由帳 このページをアンテナに追加 RSSフィード

160525Wedday

mecab install

mecab install centos

yum -y install gcc-c++

cd /usr/local/src/
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar xzvfp mecab-0.996.tar.gz 
cd mecab-0.996/
./configure
make ; make install

cd /usr/local/src/
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz 
tar xvf mecab-ipadic-2.7.0-20070801.tar.gz 
cd mecab-ipadic-2.7.0-20070801/
./configure --with-charset=utf8
make ; make install

echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc
cpan Text::MeCab

>pathはそのまま
>[utf-8]を指定する

memo

#!/usr/bin/perl

use re 'eval';

my $key = "192.168.[0-100].*";
my $re = make_re($key);

print "[$re]\n";

my @lines = grep {$_} split /\n/,qq{
192.168.99.112 - - [10/Jul/2013:13:53:15 +0900] "GET /top.html HTTP/1.1" 404 1426 "http://facebook.com" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
192.168.81.20 - - [10/Jul/2013:15:06:33 +0900] "GET /hogehoge.html HTTP/1.1" 404 4374 "http://paiza.jp" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
192.168.223.58 - - [10/Jul/2013:21:32:01 +0900] "GET /hoge.html HTTP/1.1" 304 6601 "http://paiza.jp" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0"
};

for(@lines){
	if(m@^$re@){
		s@\[|\]@@gim;
		my($ip,$date,$file) = (split / /)[0,3,6];
		print "$ip $date $file\n";
	}
}

sub make_re{

	my $pattern = shift;

	my @re;
	my $count = 1;

	for my $n ($pattern =~ m@([^\.]+)@g){
		if($n =~ m@\[@){ # レンジ指定
			my @n = $n =~ m@(\d+)@gim;
			push @re,sprintf '(\d+)(?(?{range($%s,%s,%s)})|(?!))',$count,$n[0],$n[1];
			$count++;
		} elsif($n eq "*") { #アスタリスク
			push @re,'\d+';
		} else { #数値
			push @re,"$n";
		}
	}
	return join('\.',@re);
}

sub range{
	my ($n,$min,$max) = @_;
	return ($n >= $min && $n <= $max)
}

160513Friday

red5のログを日本時間で出力する(centOS/海外サーバ)

海外サーバcentOS時にred5を使うと、ログの日時がずれる。

sudo cp -p  /usr/share/zoneinfo/Japan /etc/localtime

をしても効かない。サーバ再起動してもだめ。

/etc/timezoneを設置したら反映された。

$ echo "Asia/Tokyo" > /etc/timezone

javaは/etc/timezoneを優先的に参照するようだ

参考リンク

http://lab.synergy-marketing.co.jp/blog/programming/timezone-on-java

160312Satday

CloudFlareのmod_cloudflareのupdate

確認

ls -al /etc/httpd/conf.d/cloudflare.conf

更新

sudo rpm --import http://pkg.cloudflare.com/pubkey.gpg
yum update mod_cloudflare

ip情報

https://www.cloudflare.com/ips/

https://www.cloudflare.com/ips-v4

https://www.cloudflare.com/ips-v6

160111Monday

xcode / first pointが消えて追加したい時

"View Controller" 項目の "Initial Scene" の "Is Initial View Controller”をチェックで復活。

swift / appdeligateでページ越しで共通変数を使う

AppDelegate.swiftとは?

アプリをつくった段階でデフォルトでつくられるファイルのひとつ。

アプリ全体のライフタイムイベントを管理するためのクラス。

http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3

共通関数やら変数をページ越しで管理するときとかに使うとよさげ

appdeligate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var stampArray:[Stamp] = [];
    var isNewStampAdded = false

viewController.swift

        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        //配列stampArrayにstampを追加
        appDelegate.stampArray.append(stamp)
        //新規スタンプ追加フラグをtrueに設定
        appDelegate.isNewStampAdded = true

swift / modalで開いた画面を閉じる

    @IBAction func closeTapped(){
        self.dismissViewControllerAnimated(true, completion: nil);
    }

160110Sunday

swift / URLエンコード

        let query = "ニュース";
        let encoded = query.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
        let url = "https://ajax.googleapis.com/ajax/services/search/news?v=1.0&hl=ja&rsz=8&q=" + encoded!;

関連情報

google-news-api-ref

https://developers.google.com/web-search/docs/reference?csw=1

swift / 文字列置換

  • <b>タグを抜く例
        var title = newsDic["title"] as? String;
        title = title?.stringByReplacingOccurrencesOfString("<b>", withString: "");
        title = title?.stringByReplacingOccurrencesOfString("</b>", withString: "");

xcode / httpサイトを見れるようにする設定

  • プロジェクトアイコンをクリックして、設定画面から「Info」のタブ
  • [+] App Transport Security Settings を追加
  • その中に、[+] Allow Arbitrary Loads で Boolean を True

swift / JSON取得&リスト表示&タイトルクリックでURLに飛ぶ

import UIKit
import Alamofire

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    @IBOutlet var table: UITableView!
    var newsDataArray = NSArray();
    func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int{
        return newsDataArray.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)->UITableViewCell{
        let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
        let newsDic = newsDataArray[indexPath.row] as! NSDictionary
        cell.textLabel?.text = newsDic["title"] as? String
        cell.textLabel?.numberOfLines = 3
        cell.detailTextLabel?.text = newsDic["publishedDate"] as? String
        return cell
    }

    func tableView(tableView: UITableView,didSelectRowAtIndexPath indexPath: NSIndexPath){
        let newsDic = newsDataArray[indexPath.row] as! NSDictionary;
        let newsUrl = newsDic["unescapedUrl"] as! String;
        let url = NSURL(string:newsUrl);
        let app = UIApplication.sharedApplication();
        app.openURL(url!);
    }
    
    override func viewDidLoad() {
        table.dataSource = self;
        table.delegate = self;
        super.viewDidLoad()
        getRSS();
    }

    func getRSS(){
        let requestUrl = "https://ajax.googleapis.com/ajax/services/search/news?v=1.0&topic=p&hl=ja&rsz=8";
        Alamofire.request(.GET, requestUrl, parameters: nil).responseJSON {
            response in
            if let json = response.result.value {
                let jsonDic = json as! NSDictionary
                let responseData = jsonDic["responseData"] as! NSDictionary
                self.newsDataArray = responseData["results"] as! NSArray
                self.table.reloadData()
            }
        }
    }

©satoru.net
Mail Twitter