サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/puriketu99
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
##ハイライト 1.関数型プログラミングを覚えるとどうなるのか 2.関数型プログラミングをどう実践するのか 3.関数型プログラミングとオブジェクト指向の共通点と違いは? ##関数型プログラミングを覚えるとどうなるのか 次のような悩みが減り、デバッグの効率が上がります。 「このフラグ、trueになるはずがfalseになってる!」 「どこにバグの原因があるかわからねえ」 「修正したらまたどこかで問題が出るかも」 ##関数型プログラミングをどう実践するのか 次の2つの関数をきっちり分けて設計し、かつ、ピュアな領域を増やしてダーティな領域を小さくします。 ###1.ピュアな関数 同じ引数に対して常に同じ結果を返し、かつ関数の外のスコープに影響がない関数のこと ###2.ダーティな関数 同じ引数でも違う結果を返す、または関数の外のスコープに影響がある関数のこと ##もっと具体的に教えて 下記は一例で
scikit-learnでちょっとした機械学習をするのは、LAMPでちょっとしたWebアプリをつくるよりも簡単です。 下記に自分が入門してから2ヶ月間で覚えたことをまとめました。 ##ハイライト 重要だと思ったこと3つ 機械学習の概要 scikit learnについて Google Prediction API,Mahout,Spark,Cythonについてそれぞれ一言所感 ##重要だと思ったこと3つ ###1.機械学習に明るい友人をもつこと どんな技術でもそうだけど、友人に聞いて概要を先に掴んでおくと自信を持って進めることができます。この自信を持っていると心が折れにくくなります。 @fukkyyに「入門サイトは難しい用語つかってビビらせてくるけど、ライブラリを使えば機械学習はこわくない」と教わり、巷にある入門サイトを無視してライブラリをたたき始めたので入りやすかったです。 @ysks3n
import multiprocessing def score4abc(a,b): score = a,b return score def wrapper_score4multi(args): return score4abc(*args) def main(a,foo): for i in range(500): pool = multiprocessing.Pool(32) pool.map(wrapper_score4multi,[[a,b] for b in foo]#常に32個のプロセスがR状態となり、終了したプロセスはS状態のままとどまる pool.close() こんなことができるといいなあ 平たく言うと、pool.kill()みたいなノリのメソッドで残ってるプロセスをkillできるとかなりよい感じがします。 補足情報 ps auxで調べたところ、下記のコードを実行中に並
3400万件の100文字程度の日本語のテキストを150万件のラベルに分類しようとしています。アドバイスください。 どこまでやったか EC2のc3.8xlargeを1台用意しました(ごついやつ) 日本語をmecabで切り分けました sk-learnでvectorizeしました(MAX_FEATURES=10000) sk-learnでTruncatedSVDしました sk-learnでnormarizeしました ライブラリ外でCython使えるところはCythonで書きました(cdefを使える限り使いました) RandomForestClassifierでn_jobs=32にしてfitしました(10コアまでしか認識しなかった) 何ができないか 上記の条件で48時間実行しましたがfit中にセグメンテーション違反でこけました 同条件で試しにトレーニングデータを150万件に減らしたけど、それでも2
この手法を使うと、webアプリでajaxを用いてpostしたときの体感速度がクライアントアプリ並になる。 従来の方法 1.onclick="update(this);"などと設定 2.update(this)で更新クエリを発行 3.callback関数に処理が返ってくるのを待つ 4.更新クエリのcallback関数で更新内容をインターフェイスに反映 →callback関数に処理が返ってくるまでインターフェイスが反映がされず、遅い。 みのるajaxpost高速化 1.onclick="update(this);"などと設定 2.update(this)で更新クエリを発行する前に、インターフェイスを更新 3.callback関数に処理が返ってくるのを待つ 4.更新に失敗していたら、callback関数でインターフェイス上で取り消し処理やエラー処理をする →callback関数に処理が返ってくる
jsonからdomに簡単に同期させたいということです。なるべくjsonの操作にDOM操作を隠蔽したい。イチイチjson解析してjQueryでdom操作みたいなたんぽぽ刺身なお仕事やってられんですよ。 遅ればせながら再帰とjson,domの相性の良さを確認した。 引数のjsonが持つプロパティはtag,id,class,text(子要素)。 #既存でもうちょっとよさげなやつがあった #https://github.com/Jxck/html2json 課題 jsonの中の変更にイベントをしかけることはできないのか それができたらjsonいじるだけでよくなってdomを触らなくてすむ 実行結果 >json2dom(testobj) <ul class="ul_class" id="ul_id"> <li class="li_class" id="no1">list1</li> <
# !/usr/bin/env python # -*- encoding: utf-8 -*- import nltk import MeCab import urllib2 from urllib2 import HTTPError from itertools import chain def tfidf(doc,docs): """対象の文書と全文の形態素解析した単語リストを指定すると対象の文書のTF-IDFを返す""" tokens = list(chain.from_iterable(docs)) #flatten A = nltk.TextCollection(docs) token_types = set(tokens) return [{"word":token_type,"tfidf":A.tf_idf(token_type, doc)} for token_type
Mercuralとは? 非エンジニアにとってのお役立ち度/知名度が最も高いツールだと思う。 版管理ツールと呼ばれるもののひとつで、ファイルに対して、Windowsにおける復元ポイントみたいなものをつくってくれるツール。プレステにおけるメモリーカード的なツールとも言える。ファイルの状態をセーブ・ロード・コピーできる。下記では、プレステのメモリーカードに例えて話をすすめる。版管理を言葉で説明するのは難しいので、実際に動かしてみることを激しく勧める。インストールして動く状態になっていれば、基礎は20分くらいで習得できると思う。 Mercurialのインストール方法は? ここから最新版のMercurialをダウンロードしてインストール #たぶんあってるけど、ちがったらごめん 空のメモリーカードを作成する
補足情報がコメント欄にあるので、参考にしてください。 何回か聞かれたので残しておきます。 switchの条件式をtrueにすれば、複雑な条件分岐もスッキリ書けます。 同じように条件式にtrueを入れたら使える言語が他にもあるので覚えておくといいと思います。 ただし、各条件の処理ごとにbreakが必要な言語もあるので、注意してください。 下記は、coffeescriptの例です。 switch true when a > 5 console.log "a > 5" when b < 3 console.log "b < 3" when c is 4 console.log "c is 4" ```ちなみに、上記のcsをjsにコンパイルすると、下記のようになります。 ```javascript:javascript_switch_true switch (true) { case a > 5:
私が今年イベントで喋ったプログラマはたぶん50人近くいて、その度にJSのテストについて話を伺っておるのですが、ちゃんとJSのテスト書いてる人は1人しかいませんでした。html5カンファレンスの会場でオーディエンスに聞いた時もjsのテストを書いている人は2%くらいしかいませんでした。その多くが、書いた方がいいってのはわかってるんだけどねぇ〜みたいな感じでした。 なぜ書かないか? テストコードを書くのがめんどうだから テストコードを修正するのがめんどうだから 非同期なテストを書きにくいから じゃあ、その問題解決するからテスト自動化しようぜ テストを書かずにテストの自動化?そんなことできるのかよ Porkyならできるよ! どうやって使うの? jsファイルを4つ読み込むだけ https://github.com/puriketu99/porkyからcloneして、必要なファイルを読み込む
yum install ncurses-devel yum install lua lua-devel mkdir -p work/install/vim cd work/install/vim wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 tar xjvf vim-7.3.tar.bz2 mkdir patches cd patches curl -O "ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-094]" cd ../vim73 for i in `ls ../patches/7.3.*`; do patch -p0 < $i; done cd src ./configure --disable-selinux --enable-luainterp --enable-perli
## Environment variable configuration # # LANG #文字コード設定 export LANG=ja_JP.UTF-8 # auto directory pushd that you can get dirs list by cd -[tab] # historyの自動保管 # cd -[tab]でcdのhistoryを閲覧できる #setopt auto_pushd # command correct edition before each completion attempt #コマンドをtypoしたときに聞きなおしてくれる setopt correct # compacked complete list display #表示を詰めてくれる setopt list_packed # no beep sound when complete lis
##NeoBundleとは? vimのプラグイン管理ツール。 ##vundleとの違い 公式ドキュメントからの引用 コマンド名が改善されている vital化されている shellslashがオンでも動作する vimprocに対応している unite.vimインタフェースの実装 Subversion, Mercurialへの対応 リビジョン指定 ##使い方 "NeoBundle Scripts----------------------------- if &compatible set nocompatible " Be iMproved endif " Required: set runtimepath^=/home/vagrant/.vim/bundle/neobundle.vim/ " Required: call neobundle#begin(expand('/home/vagr
#http://goo.gl/4pkdPからコピペ require 'formula' class MysqlConnectorJ < Formula homepage 'http://dev.mysql.com/downloads/connector/j/5.1.html' url 'http://downloads.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.13.zip' md5 '2e1bbd848bc99fe1c8ae9ce980adc2c9' def install prefix.install ['README', 'COPYING', 'mysql-connector-java-5.1.13-bin.jar'] end def caveats <<-EOS.undent To en
主な前提:俺(≒プライベートプロジェクト) app engineに飽きてec2,herokuとさらさらっと触ったけど、個人利用なら料金・スケーラビリティ・手軽さなどを考えるとapp engineが最強だと思った 欠点はロックインだけど(こないだ値上げされた)、クラピカの蜘蛛専用の中指の鎖みたいでそれがまたかっこよくて中二心をくすぐる。 自分の場合、ツールは、利便性よりも、中二心をくすぐるかどうかで決める。viもmacもgaeもec2(linux)もそれが理由で使い始めた。中二的にダサいツールには食指が伸びない。普通のレンタルサーバーはそういう中二的な観点でみてそそる要素がないから使う意欲が湧かない。ただ、伝え聞いた話ではレンタルサーバーは安いらしい(そのかわり自由度は低い)。 話を戻す。クラウドサービスと呼ばれる代表的なもののうち、もっともあれなのがheroku。料金は高いし導入の敷居も低
##PhoneGapとは? iOS/Androidアプリをhtml+css+jsで作成できるフレームワーク iOSであればXCodeにプラグインをインストールし、AndroidであればXCodeでインストールする。 BlackBerryアプリなんかも作れるらしい。 ##使用条件 Xcode 4.3+ Xcode Command Line Tools Intel-based computer with Mac OS X Lion or greater (10.7+) ##PhoneGapのインストール http://phonegap.com/download 上記から最新版をダウンロード ##Cordovaのインストール ダウンロードしたファイルの中のCordova-2.0.0.pkgを起動し、ダイアログに素直にしたがって愚直にインストール ##binフォルダをどこかにコピー binフォルダ
色々な人に同じことを教えている気がするのでまとめておく。 他の言語でもいいので、変数、分岐、繰り返し、関数くらいがわかってたら、下のことにとりかかっても早くない。 上の方が効果/学習コストが高い。 ##困ったらChromeデバッガ とにかく困ったらChromeデバッガを使う。jsもcssもhtmlもChromeデバッガを使って確認する。 使い方は一通り勉強した方がいい。 ##とりあえずjQueryとcoffeescriptを使う jsのmvcフレームワークとかに比べると学習コストが激安。 初心者であれば、とりあえず使っておいて間違いない。 ##検索は、「javascript+◯◯」ではなく、「jquery+◯◯」 生jsを排除してなるべくjQueryに寄せて書くことで、IE対応を減らせる。記述量も減る。 ##変数を一つのグローバルなオブジェクトにまとめて格納する 名前空間の汚染を小さくする
##CoffeeScriptのデバッグについて ChromeプラグインのCoffeeConsoleを使う。 下記からインストールすると、ChromeのデバッガにCoffeeConsoleというタブが追加され、そのConsoleからCoffeescriptを実行できるようになる。Javascriptを書かなくて済む。 https://chrome.google.com/webstore/detail/ladbkfdlnaibelfidknofapbbdlhadfp ##自動コンパイルについて 自動コンパイルは、フレームワークが吸収してくれる場合は特に問題ないが、野良で書くときはけっこう悩む 色々ためしたけど、結局coffeeコマンドの自動監視オプションに落ち着いた。 %coffee -w -c *.coffee 12:58:34 - compiled coffee.coffee 12:58:
次のページ
このページを最初にブックマークしてみませんか?
『@puriketu99のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く