You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Java8で導入されたOptionalは、その使い方に関していまだベストプラクティスがないように見受けられます。 僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 re:僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 Optional#mapとsomeスレッディングマクロ 私はJavaが言語としてnullを許容しているので、Javaにおいては、頑張ってnullを無くそうとするのではなく、いかにしてnullとうまく付き合っていくかが重要だと考えます。 同様にClojureのプログラムでも、nilが頻繁に出てくるのですが、NullPointerExceptionはあまり発生しません。これは、Clojureネイティブな関数たちにおいては、オブジェクト指向ではないので、nilに対するメソッド呼
1. メインモジュールの名前は __main__ Python のモジュールを眺めていると、ソースコードの最後の方で、以下の記述をしばしば見かける。 if __name__ == "__main__": # 処理... __name__ とは? __main__ とは何を表しているのだろう? 6. モジュール によると、 … Python では定義をファイルに書いておき、スクリプトの中やインタプリタの対話インスタンス上で使う方法があります。このファイルを モジュール (module) と呼びます; モジュールにある定義は、他のモジュールや main モジュール (実行のトップレベルや電卓モードでアクセスできる変数の集まりを指します) に import (取り込み) することができます。 モジュールは Python の定義や文が入ったファイルです。ファイル名はモジュール名に接尾語 ,py が
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
JavaでMySQLを操作する基本的な部分について書きました。 JDBCドライバの取得 JavaからMySQLへ接続するにはJDBCドライバが必要です。 MySQL :: Download Connector/J からダウンロードして下さい。ダウンロードしたら解凍して、中のjarファイルを使用します。 $ tar zxvf mysql-connector-java-5.1.35.tar.gz $ ls mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar Maven リポジトリは以下の通り。 <dependency> <groupId>mysql</groupId> <artifactId>
また、Docker MachineではDockerホストとなるサーバーにSSHでログインし、sudoコマンドを使ってroot権限で各種処理を実行する。そのため、Dockerホストとして使用するサーバーではSSHでのログインに使用するユーザーがパスワードなしでsudoコマンドを実行できるように設定しておこう。 genericドライバによるDockerホストの作成 Dockerホストとして使用するLinuxサーバーを用意したら、次のように「generic」ドライバを指定して「docker-machine create」コマンドを実行することで、そのホストをDockerホストとして利用するための各種設定が自動で行われる。 docker-machine create --driver generic --generic-ip-address <対象とするホストのIPアドレス> --generic-
漢は黙ってシングルファイル C/C++ ライブラリですね! シングルファイル C/C++ ライブラリとは, ヘッダファイル .h ひとつだけで機能が実装されているライブラリ(もう少し条件をゆるくして .cc も含む)のことです. header-only とも言われれたりします. このあたりの元祖は nothings 先生 http://nothings.org/ ですね. 最近は github にコードをあげています. https://github.com/nothings/stb シングルファイル系のライブラリまとめ一覧もあります. シングルファイル系が便利すぎてやばいので, 自分でもいくつか作りました. TinyObjloader(Wavefront .obj loader) https://github.com/syoyo/tinyobjloader TinyEXR(OpenEXR
Multi-Precision Arithmetic by C++ with no use of assembler Welcome to my home page. since Dec. 1999. SN Library version 2.31 Last update : March 6, 2018 I have tested on gcc 32 and 64 bit version. See how to install and for details . There are the source file(sn32_v231.zip) for install and the source code viewer (packed in the zip file). Download executable files of sample programs from here gcc m
このところ立て続けに表記の事実を理解していない俺実装のHash(しかもCで!)を見かけたので、おそらく知られていないんだと思う。以降、同じ轍を踏む人が少なくなればと思い、啓蒙のために公開しておく。 先に言っておくがおまえらはHashを再発明するんじゃねよボケが。おとなしくありもののライブラリ使えよ。つうかHashのある言語使えよ。Cとかマゾかよ。 言葉と前提とりあえずHashが何であるかとか、どういう作りになっているかとか、そういうことは既知とする。リストの配列ってことね。←これで何言ってるか分からないおまえらにはこの文章はちょっとはやい。先にデータ構造の教科書を読むことをおすすめ。以下ではHashに登録されるキーとデータのペアのことをentryと呼び、リストの配列と言ったときのリストのほうをbin、配列のほうをbucketと呼ぶ。つまり、 class Hash { typedef lis
ちょっとバージョンアップ http://qiita.com/koh110/items/f6ecbdc03093675a9527 自分なりに使いやすいフロントエンドの開発環境を整えて使っていたけれど、だんだん時代の流れにそぐわない箇所が出てきたのでその部分を書き換えてアップデートしてみた。 http://qiita.com/koh110/items/9c750fb67e40481e52cd 昔のバージョンはv1.0.0というブランチに切り出し https://github.com/koh110/minjsapp やめたもの gulp-load-plugins run-sequence bower モジュールやライブラリへの依存度を下げたかった 変更したもの gulp-babel -> webpack + babel-loader requireしたかった 追加したもの sassコンパル 生c
プログラムが使用しなくなったメモリ上の空間を解放し、他のプログラムが使えるようにするのは、古くはプログラマの役割でした。それがゆえに、しばしば解放を忘れるというヒューマンエラーを引き起こし、ついには「メモリ不足です」と宣告され、あるいはオペレーションシステムもろとも轟沈し、作業中のデータはすべて消え失せ、モニタの前のユーザーは声にならない叫び声をあげるというシーンがしばしば見られました。 そこで研究され実装されたのが、ガベージコレクションです。これはメモリの解放を人任せにせず、プログラム自身が行えるようにするもので、プログラマの苦役の幾ばくかをも解放してくれました。 とはいえ、その実装方法やアルゴリズムは多種多様で、ガベージコレクションがあるから大丈夫、という思い込みだけでプログラムを作成していると、思わぬ落とし穴に転げ落ちることになります。 本書はアルゴリズムはもちろん、その実装方法とメ
ディープラーニングは色々な知識が必要です。 「チュートリアル動かしました」で止まったままの人も多いでしょう。 そこで、自分がchainerを理解しながら動かした時の方法を書きます。 大前提 とは言ったものの、誰でも入門は無理なので。 以下が最低限の前提です。 数学:微分積分、行列、確率とか聞いても「ああ、あれね・・・」くらいには思う IT:Pythonがそれなりに分かる。numpyはそこそこ分かる。 機械学習:説明変数とか、目的変数とか分類とかが何となく分かる やる気:引っかかった時に、調べる気力がある ゴール chainerを自分で色々試せるレベルになる。 あくまで試せるレベルになるだけです。 それでも千里の道も一歩からです。 一緒に頑張りましょう。 ちなみになぜchainerか、というと、 入門者が触るには、バランスは良さそうに見えたからです。 最初の最初 ディープラーニングは歴史から
「プリンシプル オブ プログラミング」という本を執筆しました。少し先ですが、2016/03 下旬 発売予定となっています。 書籍紹介・目次 どのような本? 構成は? どうして必要? どうやって説明? 読んでほしい人は? 書いた人は? 最後に どのような本? ソフトウェア業界で高名な、よいコードを書くための「プリンシプル」を紹介します。 プリンシプルとは、プログラミングの指針となる「前提」「原則」「思想」「習慣」「視点」「手法」「法則」のことです。これらは、歴史の審査を受けて生き残った、よいプログラミングのためのエッセンス(「普遍的」「定説的」「本質的」な知識)です。 構成は? プリンシプルを、7つのカテゴリに分けて説明しています。 第1章 前提 〜 プログラミングの変わらぬ真実 〜 第2章 原則 〜 プログラミングのガイドライン 〜 第3章 思想 〜 プログラミングのイデオロギー 〜
Javaで多くのパラメータをもつオブジェクトを生成するとき、ビルダーパターンというやつがよく使われます。 Undertow server = Undertow.builder() .addHttpListener(port, "localhost") .setHandler(path) .build(); いろいろオプションを付けっていって、最後にbuildメソッドを呼ぶと、パラメータ間の整合性のチェックがされ、インスタンスが作られます。 ときに、そういうオプションを色々もつようなクラスをたくさん作るようなケースで、このビルダーをそれぞれ用意すると大変だよ、ということになります。 そういうとき、メソッド参照とBeanValidationを使えば、汎用的なビルダーを作れます。 こんな感じの汎用ビルダーを用意します。 public class BeanBuilder<X> { private
Web APIの開発を担当しているswdyhです。 以前からWebサービスのサーバサイドの開発をしていたんですが、トレタに入るまでアプリのためのWeb APIの開発というのはしていませんでした。トレタに入って2年半くらいずっとアプリのためのAPIを開発していて、同じサーバサイドの開発でも、それまでとの開発とは違う点があり、悩ましくも面白く感じたのでまとめてみました。 サービスとアプリの話 トレタで提供しているサービスは、飲食店むけの予約管理サービスで、電話などで予約を受け付けたときに、iPadのアプリを操作して予約を入力してもらい、実際にお客さんが来店したときにはiPadを見て案内するというふうに使ってもらうものです。他にもいろんな機能やこだわりポイントがあるサービスなんですが、そのへんはWebサイトを見てみてください。 トレタのアプリはiPadのネイティブアプリで、ほぼ全てのデータをサー
黒魔術(バイトコードをいじること)なしに、Javaで動的にMixinします。 Background ミドルウェアパターンの実装などにおいて、とあるミドルウェアを追加したら、リクエストオブジェクトにメソッドを追加したい、ということがあります。 これを多重継承のできないJavaで実現しようとすると、最終的に必要となるメソッドを全部実装したクラス(またはその親子関係)が必要になります。 必要なメソッドだけ、必要なときに足したいですよね。Mixin! Mixin! インタフェースのデフォルト実装 JavaでMixinを実装したいと思っていた人たちには、Java8でインタフェースにデフォルト実装を持てるようになったのは歓迎すべき出来事だったようです。 Java8のインタフェース実装から多重継承とMixinを考える Java8でmixinをがんばってみる - yojikのlog こんな感じのデフォルト
スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl スクリプト言語用の CUIのデバッガの使い方を簡単にまとめました。対象言語は Ruby, Python, Perl です。 私は C, C++ でプログラムを書いているときはデバッガ (主に GNU/Linux 上の gdb) を頻繁に利用します。しかし、スクリプト言語ではそれほどでもありません。これはおそらく次のような理由によります。 ビルドが不要なので printf デバッグが容易 (ある程度大きい C++ のプログラムではビルド時間が長いので printf の挿入はしんどい) 異常終了時にスタックトレースが表示される (Ruby, Python なら自動、Perl の場合は use Carp; $SIG{__DIE__} = \&Carp::confess; など) オブジェクトのインスペクトが簡単 (Ru
CentOS7 アップデートと開発ツールをインストール アップデートと最低限必要と思われる開発ツールをインストール。 # yum update -y # yum groupinstall -y "Development Tools" # yum install -y gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel libffi-devel python-devel # yum install -y libxslt-devel libxml2-devel #(liverty 対応) pyenvとpyenv-virtualenv をインストール pyenvと、使うかわからないけどとりあえずpyenv-virtualenvをインストール。 まずgithubからpyenvをc
Tempestに居たNeutronのAPIテストがNeutronのリポジトリに移動したらしい。 やってみる 環境はUbuntu 14.04 server, devstackでmaster(2015/05/08)。 によると、以下のようにtoxでAPIテストが実行出来るっぽい。 tox -e api とりあえずやってみた。 ubuntu@ubuntu:/opt/stack/neutron$ tox -e api api create: /opt/stack/neutron/.tox/api api installdeps: -r/opt/stack/neutron/requirements.txt, -r/opt/stack/neutron/test-requirements.txt api develop-inst: /opt/stack/neutron api runtests: PYT
目次 dis/inspect モジュールと ceval.c を使った Python のハッキング dis モジュールと python interpreter 関数に属する func_code オブジェクトとco_varnames, co_names, co_consts 属性 python interpreter ceval.c:Python Virtual Machine の C ソース・コード inspect モジュール dis, inspect を使った一行コード python コードの hack x,y = y,x, x,z,y = z,y,x Python オブジェクト 関数 STORE_GLOBAL/STORE_NAME inspect 経由による クラスの disassemble LOAD_ATTRI リスト hash generator thread decorator 構
CircleCIの特徴は1環境であれば無料でCI環境が利用出来る点です。環境構築が完了すると、GitHubのcommit毎にCIコンテナが立ち上がり定義した自動テストがコンテナ上で実行されるようになります。本投稿では、Python3.5とFlaskで構築したWebサーバをCircleCI上で稼働させて、requestsを使ってコンテナ上のWebサーバにアクセスしてHTTP Statusコード200が返却されることを試験しています。 2時間で構築するCI環境の動作フロー Python3.5 + Flaskで構築されたWebサーバを試験する CircleCI上でPythonのWebフレームワークであるFlaskを利用したWebサーバを立ち上げて、HTTPのエンドポイントにアクセスしてHTTP Statusを確認する簡単な試験を行うのが本記事です。 jenkins職人問題へのCircleCIの考
tinydbはmongodbのようなドキュメント型データベースです。 特徴として、mongoのようにサーバーを立てる必要がありません。 web APIを叩いたりしていると、 jsonファイルを楽に扱えたらなあ、と思うことがあります。 また、簡単なプロトタイプアプリを作る場合、 データスキーマを決めたくない場合があります。 tinydbはjsonファイルとドキュメントデータベースの中間のようなデータベースです。 基本はjsonファイルですが、 サーチやインサートなどDBライクに操作でき便利です。 導入 pip install tinydb 使ってみる テーブルは作成しなくても大丈夫です。 勉強のため、テーブル作成をやってみます。 from tinydb import TinyDB db = TinyDB("db.json") # インメモリーで使いたい時は # from tinydb.sto
今日も元気にPython記事を手動キュレーションしてると以下の様な記述が Pythonプログラマから見て、Rubyって羨ましいなと思うところ。 Rubyには、デザインパターンに焦点を当てた書籍もある。 デザインパターンといえばGoF(wikipedia:ギャング・オブ・フォー_(情報工学))が有名だけれども、 あれってC++とかJavaを使っている前提のデザインパターンだから、 言語によってはそんなデザインパターンいらねぇよという話になる場合がある。 なので、言語に特化したデザインパターンの書籍ってあると便利。 Pythonにもこういうのが欲しいよね。Rubyって羨ましいよなぁ。 いやいや、Pythonにも全部のせデザパタ本ありますよ! こいつ(クリックするとAmazonに飛びます ) ついでに目次もamazonより引用 1章 生成に関するデザインパターン 1.1 Abstract Fac
TOPICS Programming , Web , Database , Python 発行年月日 2016年03月 PRINT LENGTH 272 ISBN 978-4-87311-761-4 原書 Web Scraping with Python FORMAT PDF EPUB 「Webスクレイピング」とは、インターネットからデータを機械的に集め、必要な情報を抽出するプロセスのこと。検索エンジンだけでは限られた情報しか集められませんが、この技術を使えば、インターネット上の膨大な情報の中から本当に必要な情報を入手できます。小売業、金融業をはじめ多くの業界で情報収集に活用され、アカデミックでも広い分野で使われ注目されています。本書は、前半でWebスクレイパーとクローラの基礎をていねいに解説し、後半でOCRを使った情報抽出や、JavaScript実行、Seleniumによるインタフェース
libuvのPython実装であるpyuvのPython3対応しているときに、Python2.6/2.7/3.0/3.1/3.2で個別にテストする必要がありました。 各バージョンのPythonを入れるのも割と大変だし、各バージョンごとに確認するのも非常に手間です。 lazyな私にはこんなのやってられません。がおー。めんどくせー。 というわけでいろいろテストツールをいろいろ探していたら、79.pyで @aodag さんにtoxを教えていただきました。 早速使ってみたので、軽くメモを残しておきます。 ドキュメント ↓を読めば大体わかるはず。 Welcome to the tox automation project — tox 1.4.2-1 documentation ざっくり説明すると Pythonライブラリを複数バージョンでテストするツールです。 CI(Jenkinsなど)で使うことも想
NATの特性(NATタイプ) NATは標準仕様が存在しないため、製品によってふるまいが異なる。そして、そのふるまいはNAT越えの難易度に影響する。 STUN (RFC 3489) [1] では、NATのふるまいを4種類に分類している。Full Cone NAT < Restricted Cone NAT < Port Restricted Cone NAT < Symmetric NATの順に越えるのが難しくなり、既存のNAT越えアルゴリズムの多くはSymmetric NATを越えることができない。NAT越えの分野では歴史的にこの分類が用いられているが、これは現実のNATの特性を説明するには不十分であることがわかっている。 そこで、RFC 4787 [2] ではConeやSymmetricといった用語を使う代わりに個々のNATの特性 (behavior) を、Mapping Behavio
Docker 社の Blog にネットワーク機能や新しい Compose 1.6 に関する投稿がありました。翻訳しましたので、以下参考程度にどうぞ。 対象となるのは、2016年2月にリリースされた Docker Engine 1.10 Docker Swarm 1.1 Docker Compose 1.6 です。 Docker Networking Design Philosophy | Docker Blog https://blog.docker.com/2016/03/docker-networking-design-philosophy/ Docker 1.7 で実験的にネットワーキングが導入されてから Docker 1.9 の初期リリースに至るまで、コミュニティから素晴らしい反響がありました! 何よりもまず、議論、評価、プルリクエスト、山積みの課題、これら全てにかかわる皆さんに感
そろそろMacの買い替えの時期なので、以下のものを使って個人のMacをバックアップしつつ同じ開発環境を別のMacへと移行できるよう準備をする。 homebrew homebrew-bundle homebrew-file mas mackup + Dropbox atom apm RubyGemとかもあるけどgemはプロジェクト毎にbundle installsすればいいよね、ということで除外。なのでeditorのAtom, dotfiles, brew設定が移行できればよいかな、と。 Mac 環境構築の自動化 2015年末版 ( homebrew + homebrew-cask + homebrew-brewdle + mackup + crontab )にて同様のことをされているのでこちらも参考に。こちらではcronでバックアップを自動でとっています。 でこちらではこれに加え、私が普段
最近、夜寝る前にRubyのベンチマークを眺めたり、仕事の障害時のログを眺めるっていう悪趣味極まりない習慣がついてしまった。まぁ、草木も眠る丑三つ時にこの世の真理を求めて何かを読みふけるって言うのは、この業界にいる人間なら誰しもがやることなんじゃ無いかと思う。それと同じで現場百遍とも言うとおり、何度もprofileやログを眺めれば何か気付くこともあるんじゃないかと思って読んでいる……というわけではなくて、ふと見たくなる衝動に従っているだけだけど。 さて、Rubyのprofileを取るときに便利なのがRubyKaigi 2015でこさきさんも紹介していたperf。あまりに便利なせいで、プライベートでLinuxを触る時間が何千倍にも増えたくらい。あの発表はもっぱらperf-topの紹介だったけど、perfの使い方とかを見ると他にも色々な機能があることがわかる。例えば、昨日話題になったひたすらbl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く